我目前在我的PowerShell脚本中遇到了记录异常的问题。我正在尝试将一个文件复制到C:\ Windows \ System32,并且如果出现错误,我想要在我的日志文件中添加一个错误行。到目前为止,我已经尝试了两种方法。
示例1:
示例2:
我可以将项目添加到日志文件中,以便确定这不是与文件权限有关的问题。我缺少什么?
$LogPath = "C:\Test.txt
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
Copy-Item $scriptPath\Devcon.exe C:\Windows\System32 -ErrorAction SilentlyContinue -ErrorVariable $Errors
Foreach($error in $Errors)
{
add-content -Path $LogPath -Value $($error.Exception) -Force
}
示例2:
$LogPath = "C:\Test.txt
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
Try{
Copy-Item $scriptPath\Devcon.exe C:\Windows\System32
}
Catch [System.Exception]
{
add-content -Path $LogPath -Value "There was an error why trying to copy the file." -Force
add-content -Path $LogPath -Value $Error -Force
}
我可以将项目添加到日志文件中,以便确定这不是与文件权限有关的问题。我缺少什么?
$error
是一个保留的自动变量名,它存储全局错误列表,您不能将其用作循环变量。总的来说,@Neolisk是正确的,您需要将ErrorAction
设置为Stop
以强制停止。如果您更改变量名称(例如foreach($err in $errors)
),则仍然可以使用整体方法#1,如果您喜欢的话。 - latkin