Pregunta

En PowerShell hay alguna excepción que no puedo atrapar o no estoy haciendo para corregir las cosas.

Así que aquí está el código que hace las cosas:

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

Había comentado el tipo de expresión de la trampa para asegurarme de atrapar cualquier cosa. Pero desafortunadamente nunca entro en la cláusula de trampa.

Puedo ver el registro de excepciones pero no el registro "Mover 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
¿Fue útil?

Solución

La trampa solo se activará en un error de terminación.

  rm "$($_.Name).old" -ErrorAction "Stop" 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top