2012-02-16 20 views
3

powershellでは、トラップできない、または修正することができないという例外がいくつかあります。だからここトラップ削除項目excpetion

は、物事を行うコードです:

log "Processing $($_.Name).old" $logFile 
if (Test-Path "$($_.Name).old") 
{ 
    & { 
     rm "$($_.Name).old" 
    } 
    trap #[System.UnauthorizedAccessException] 
    { 
     log "Move to trash" $logFile 
     moveTrach "$($_.Name).old" 
     continue 
    } 
} 

私は何をキャッチしてくださいためにトラップ式でタイプをコメントアウトしていました。 しかし残念ながら私はトラップ条項に入ることはありません。

例外ログは表示されますが、「ゴミ箱に移動」ログは表示されません。

2012-02-16 10:35:31 Processing file.dll 
Remove-Item : Cannot remove item file.dll.old: Access to the path 'file.dll.old' is  denied. 
At upgradegw.ps1:189 char:29 
+       rm <<<< "$($_.Name).old" 
+ CategoryInfo   : PermissionDenied: (file.dll.old:FileInfo) [Remove-Item], UnauthorizedAccessException 
+ FullyQualifiedErrorId : RemoveFileSystemItemUnAuthorizedAccess,Microsoft.PowerShell.Commands.RemoveItemCommand 
2012-02-16 10:35:31 Processing file2.dll 

トラップが唯一の終了エラーにトリガされます

答えて

2

助けてくれてありがとう。

rm "$($_.Name).old" -ErrorAction "Stop" 
関連する問題