陷阱删除项目例外

时间:2012-02-16 10:49:22

标签: powershell powershell-trap

在powershell中有一些例外,我无法陷阱,或者我没有做纠正的事情。

所以这是完成这些事情的代码:

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

1 个答案:

答案 0 :(得分:2)

陷阱仅在终止错误时触发。

  rm "$($_.Name).old" -ErrorAction "Stop"