3

現在、PowerShell スクリプトで例外のログ記録に問題があります。ファイルを C:\Windows\System32 にコピーしようとしていますが、エラーが発生した場合にログ ファイルにエラー行を追加したいと考えています。私はこれまでにこの2つの方法を試しました。

例 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
}

ログ ファイルに項目を追加できるので、ファイルのアクセス許可の問題ではないことがわかります。私は何が欠けていますか?

4

1 に答える 1

3

あなたが得ているエラーは終了していないと思います。これが、catch ブロックで終わらない理由です。

Copy-Item 行の代わりにこれを試してください:

Copy-Item $scriptPath\Devcon.exe C:\Windows\System32 -ErrorAction Stop

ErrorAction (MSDN) のヘルプ

于 2013-07-08T17:08:06.270 に答える