Das Cmdlet Test-Path
speziell dafür ausgelegt ist, bestimmt sie, ob Elemente eines Pfads vorhanden sind. Es gibt einen booleschen Wert zurück und erzeugt keinen Fehler.
Das Cmdlet Get-Item
(und ähnliche) kann auch verwendet werden, aber nicht direkt. Ein Weg ist bereits vorgeschlagen: Verwenden Sie -ErrorAction SilentlyContinue
. Es ist vielleicht wichtig zu wissen, dass es tatsächlich immer noch einen Fehler erzeugt; es zeigt es einfach nicht. Überprüfen Sie die Fehlerauflistung $Error
nach dem Befehl, der Fehler ist da.
Nur zur Information
Es ist eine lustige Art und Weise, diesen Fehler zu vermeiden (es funktioniert auch mit einigen anderen Cmdlets wie Get-Process
, die keine Test-Path
Alternative haben). Angenommen, wir prüfen, ob ein Element "MyApp.exe" (oder ein Prozess "MyProcess") vorhanden ist. Dann werden diese Befehle geben nichts auf fehlende Ziele und zugleich erzeugen sie keine Fehler:
Get-Item "[M]yApp.exe"
Get-Process "[M]yProcess"
Diese Cmdlets erzeugen keine Fehler für Wildcard-Ziele. Und wir benutzen diese lustigen Wildcards, die tatsächlich einzelne Gegenstände zusammenbringen.
'-ErrorAction SilentlyContinue' kann auf '-ea si',' dir app_offline.htm -ea si | verkürzt werden del' – yzorg
Aus Gründen der Lesbarkeit würde ich nicht in einem Skript abkürzen (pro Frage). – Vimes
Streng genommen ist dies keine Antwort auf die Frage, die Test-Path-Antwort unten ist eine tatsächliche Überprüfung – SteveC