FALL REMED-Item-Ausnahme
-
26-10-2019 - |
Frage
In PowerShell gibt es eine Ausnahme, die ich nicht fangen kann oder nicht, um Dinge zu korrigieren.
Hier ist der Code, der die Dinge tut:
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
}
}
Ich hatte den Typ im Fallenausdruck kommentiert, um sicher etwas zu fangen. Aber leider gehe ich nie in die Trap -Klausel.
Ich kann das Ausnahmeprotokoll sehen, aber nicht das Protokoll "zum Müll ziehen".
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
Lösung
Die Falle löst nur einen Kündigungsfehler aus.
rm "$($_.Name).old" -ErrorAction "Stop"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow