0 Pluspunkte 0 Minuspunkte

Ich habe dieses Powershell Script

try {
 Remove-Item -Path "a.txt"
} catch {
 Write-Output "Error: $_"
}

aber die fehlermeldung wird nicht abgefangen..

PS C:\Users\manuel\Desktop\cptest> .\test.ps1
Remove-Item : Zugriff verweigert

In C:\Users\manuel\Desktop\cptest\test.ps1:2 Zeichen:2
+     Remove-Item -Path "a.txt"
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (C:\Users\manuel\cptest\a.txt:String) [Remove-Item], Unauthorized AccessException
    + FullyQualifiedErrorId : ItemExistsUnauthorizedAccessError,Microsoft.PowerShell.Commands.RemoveItemCommand

Remove-Item : Der Pfad "C:\Users\manuel\Desktop\cptest\a.txt" kann nicht gefunden werden, da er nichtvorhanden ist.

In C:\Users\manuel\Desktop\cptest\test.ps1:2 Zeichen:2
+     Remove-Item -Path "a.txt"
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\manuel\cptest\a.txt:String) [Remove-Item], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand

PS C:\Users\manuel\Desktop\cptest>
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Mit dem Parameter

-ErrorAction Stop

werden alle Fehler als "terminierende" Fehler behandelt. Ohne diesen Parameter behandelt PowerShell manche Fehler als "nicht-terminierend" was bedeutet, dass sie vom catch-Block nicht abgefangen werden.

try {
    Remove-Item -Path "a.txt" -ErrorAction Stop
} catch {
    Write-Output "Fehler: $_"
}
von (706 Punkte)