3
我目前在我的PowerShell腳本中遇到問題日誌記錄異常。我正在嘗試將文件複製到C:\ Windows \ System32,並且如果錯誤發生,我想將錯誤行添加到我的日誌文件中。到目前爲止,我嘗試了這兩種方法。PowerShell中的異常日誌記錄
例1:
$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
}
我可以將項目添加到日誌文件中,所以我知道它不是一個權限問題與文件。我錯過了什麼?
方法1不適用於這些變量名稱。 '$ error'是一個保留的自動變量名稱,用於存儲全局錯誤列表,不能將其用作循環變量。一般來說,@Neolisk是正確的,你需要將'ErrorAction'設置爲'Stop'來強制執行。如果你改變你的變量名稱(例如'foreach($ err in $ errors)'),你可能仍然可以使用整體方法#1,如果你喜歡。 – latkin