Исключение удаляемого элемента Trap - PullRequest
3 голосов
/ 16 февраля 2012

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

Я закомментировал тип в выражении ловушки, чтобы быть уверенным, что поймать что-нибудь.Но, к сожалению, я никогда не вхожу в предложение trap.

Я вижу журнал исключений, но не журнал "Move to trash".

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 Ответ

2 голосов
/ 16 февраля 2012

Ловушка срабатывает только при завершающей ошибке.

  rm "$($_.Name).old" -ErrorAction "Stop" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...