Test-Path

Bestimmt, ob alle Elemente eines Pfads vorhanden sind.

Syntax

Path (Default) - FileSystem provider

Test-Path
    [-Path] <String[]>
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <PSCredential>]
    [-OlderThan <DateTime>]
    [-NewerThan <DateTime>]
    [<CommonParameters>]

LiteralPath - FileSystem provider

Test-Path
    -LiteralPath <String[]>
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <PSCredential>]
    [-OlderThan <DateTime>]
    [-NewerThan <DateTime>]
    [<CommonParameters>]

Path (Default) - All providers

Test-Path
    [-Path] <string[]>
    [-Filter <string>]
    [-Include <string[]>]
    [-Exclude <string[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <pscredential>]
    [<CommonParameters>]

LiteralPath - All providers

Test-Path
    -LiteralPath <string[]>
    [-Filter <string>]
    [-Include <string[]>]
    [-Exclude <string[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <pscredential>]
    [<CommonParameters>]

Beschreibung

Das Test-Path Cmdlet bestimmt, ob alle Elemente des Pfads vorhanden sind. Es wird zurückgegeben $true , wenn alle Elemente vorhanden sind und $false fehlen. Es kann auch feststellen, ob die Pfadsyntax gültig ist und ob der Pfad zu einem Container oder zu einem Terminal- oder Blattelement führt. Wenn der Pfad ein Leerzeichen oder eine leere Zeichenfolge ist, wird das Cmdlet zurückgegeben $false. Wenn es sich bei dem Pfad$nullum ein Array oder $null ein leeres Array handelt, gibt das Cmdlet einen nicht beendeten Fehler zurück.

Beispiele

Beispiel 1: Testen eines Pfads

Test-Path -Path "C:\Documents and Settings\DavidC"
True

Mit diesem Befehl wird überprüft, ob alle Elemente im Pfad vorhanden sind, einschließlich des C: Verzeichnisses, des Documents and Settings Verzeichnisses und des Verzeichnisses DavidC . Wenn ein Wert fehlt, gibt das Cmdlet zurück $false. Andernfalls wird $truezurückgegeben.

Beispiel 2: Testen des Pfads eines Profils

Test-Path -Path $PROFILE
False
Test-Path -Path $PROFILE -IsValid
True

Diese Befehle testen den Pfad des PowerShell-Profils.

Der erste Befehl bestimmt, ob alle Elemente im Pfad vorhanden sind. Der zweite Befehl bestimmt, ob die Syntax des Pfads korrekt ist. In diesem Fall lautet $falseder Pfad , aber die Syntax ist richtig $true. Diese Befehle verwenden $PROFILEdie automatische Variable, die auf die Position für das Profil verweist, auch wenn das Profil nicht vorhanden ist.

Weitere Informationen zu automatischen Variablen finden Sie unter about_Automatic_Variables.

Beispiel 3: Überprüfen, ob neben einem angegebenen Typ Dateien vorhanden sind

Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg
False

Mit diesem Befehl wird überprüft, ob im Verzeichnis "Gewerbegebäude" andere Dateien als .dwg Dateien vorhanden sind.

Der Befehl verwendet den Path-Parameter , um den Pfad anzugeben. Da der Pfad ein Leerzeichen enthält, wird der Pfad in Anführungszeichen eingeschlossen. Das Sternchen am Ende des Pfads gibt den Inhalt des Geschäftsgebäudeverzeichnisses an. Geben Sie bei langen Pfaden, z. B. dieser, die ersten Buchstaben des Pfads ein, und verwenden Sie dann die TAB-TASTE, um den Pfad abzuschließen.

Der Befehl gibt den Parameter Exclude an, um Dateien anzugeben, die aus der Auswertung weggelassen werden sollen.

In diesem Fall, da das Verzeichnis nur .dwg Dateien enthält, lautet $falsedas Ergebnis .

Beispiel 4: Suchen nach einer Datei

Test-Path -Path $PROFILE -PathType Leaf
True

Mit diesem Befehl wird überprüft, ob der in der $PROFILE Variablen gespeicherte Pfad zu einer Datei führt. In diesem Fall gibt das Cmdlet .ps1zurück, da das PowerShell-Profil eine $true Datei ist.

Beispiel 5: Überprüfen von Pfaden in der Registrierung

Diese Befehle werden mit dem PowerShell-Registrierungsanbieter verwendet Test-Path .

Der erste Befehl testet, ob der Registrierungspfad des Microsoft. PowerShell Registrierungsschlüssel ist auf dem System korrekt. Wenn PowerShell ordnungsgemäß installiert ist, wird das Cmdlet zurückgegeben $true.

Important

Test-Path funktioniert nicht ordnungsgemäß mit allen PowerShell-Anbietern. Beispielsweise können Test-Path Sie den Pfad eines Registrierungsschlüssels testen, aber wenn Sie ihn zum Testen des Pfads eines Registrierungseintrags verwenden, wird er immer zurückgegeben $false, auch wenn der Registrierungseintrag vorhanden ist.

Test-Path -Path "HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell"
True
Test-Path -Path "HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy"
False

Beispiel 6: Testen, ob eine Datei neuer als ein angegebenes Datum ist

Mit diesem Befehl wird der dynamische Parameter NewerThan verwendet, um zu bestimmen, ob die pwsh.exe Datei auf dem Computer neuer July 13, 2009als ist.

Der Parameter NewerThan funktioniert nur auf Dateisystemlaufwerken.

Test-Path $PSHOME\pwsh.exe -NewerThan "July 13, 2009"
True

Beispiel 7: Testen eines Pfads mit NULL als Wert

Der für array of null or empty array zurückgegebene nullFehler ist ein nicht beendeter Fehler. Sie kann mithilfe von -ErrorAction SilentlyContinue. Das folgende Beispiel zeigt alle Fälle, in denen der NullPathNotPermitted Fehler zurückgegeben wird.

Test-Path $null
Test-Path $null, $null
Test-Path @()
Test-Path : Cannot bind argument to parameter 'Path' because it is null.
At line:1 char:11
+ Test-Path $null
+           ~~~~~
    + CategoryInfo          : InvalidData: (:) [Test-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand

Beispiel 8: Testen eines Pfads mit Leerzeichen als Wert

Wenn eine Leerzeichenzeichenfolge für den Path-Parameter bereitgestellt wird, wird sie zurückgegeben $false. Dies ist eine Änderung von Windows PowerShell 5.1. Wenn eine leere Zeichenfolge angegeben wird, Test-Path wird ein Fehler zurückgegeben. Das folgende Beispiel zeigt Leerzeichen und leere Zeichenfolgen.

Test-Path ' '
Test-Path ''
False
False

Beispiel 9: Testen eines Pfads, der möglicherweise ein ungültiges Laufwerk hat

Wenn Sie einen Pfad testen, der eine Laufwerkspezifikation enthält, schlägt das Testen der Gültigkeit des Pfads fehl, wenn das Laufwerk nicht vorhanden ist. Sie können dem Laufwerk den Anbieternamen voranstellen, um dieses Problem zu umgehen.

Test-Path -IsValid Z:\abc.txt
Test-Path -IsValid FileSystem::Z:\abc.txt
False
True

Parameter

-Credential

Note

Dieser Parameter wird von anbietern, die mit PowerShell installiert sind, nicht unterstützt. Verwenden Sie Invoke-Command-, um die Identität eines anderen Benutzers zu imitieren oder Ihre Anmeldeinformationen beim Ausführen dieses Cmdlets zu erhöhen.

Parametereigenschaften

Typ:PSCredential
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-Exclude

Gibt Elemente an, die von diesem Cmdlet weggelassen werden. Der Wert dieses Parameters qualifiziert den parameter Path. Geben Sie ein Pfadelement oder Muster ein, z. B. *.txt. Platzhalterzeichen sind zulässig.

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:True
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Filter

Gibt einen Filter im Format oder in der Sprache des Anbieters an. Der Wert dieses Parameters qualifiziert den parameter Path. Die Syntax des Filters, einschließlich der Verwendung von Wildcardzeichen, hängt vom Anbieter ab. Filter sind effizienter als andere Parameter, da der Anbieter sie anwendet, wenn sie die Objekte abruft, anstatt powerShell nach dem Abrufen der Objekte zu filtern.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:True
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Include

Gibt Pfade an, die dieses Cmdlet testet. Der Wert dieses Parameters qualifiziert den parameter Path. Geben Sie ein Pfadelement oder Muster ein, z. B. *.txt. Platzhalterzeichen sind zulässig.

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:True
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-IsValid

Gibt an, dass dieses Cmdlet die Syntax des Pfads testet, unabhängig davon, ob die Elemente des Pfads vorhanden sind. Dieses Cmdlet gibt zurück $true , wenn die Pfadsyntax gültig ist und $false nicht. Wenn der getestete Pfad eine Laufwerkspezifikation enthält, gibt das Cmdlet "false" zurück, wenn das Laufwerk nicht vorhanden ist. PowerShell gibt "false" zurück, da er nicht weiß, welcher Laufwerkanbieter getestet werden soll.

Note

In .NET 2.1 wurde eine bahnbrechende Änderung der Pfad-APIs eingeführt. Diese Methoden suchen nicht mehr nach ungültigen Pfadzeichen. Diese Änderung verursachte eine Regression in PowerShell, bei der die IsValid-Prüfung nicht mehr auf ungültige Zeichen überprüft. Die Regression wird in einer zukünftigen Version behoben. Weitere Informationen finden Sie unter Breaking changes in .NET Core 2.1.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-LiteralPath

Gibt einen zu testenden Pfad an. Im Gegensatz zu Pathwird der Wert des LiteralPath--Parameters genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Wildcardzeichen interpretiert. Wenn der Pfad Zeichen enthält, die von PowerShell als Escapesequenzen interpretiert werden können, müssen Sie den Pfad in einfache Anführungszeichen setzen, damit sie nicht interpretiert werden.

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:PSPath, LP

Parametersätze

LiteralPath
Position:Named
Obligatorisch:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-NewerThan

Dies ist ein dynamischer Parameter, der vom FileSystem Provider zur Verfügung gestellt wird.

Geben Sie eine Uhrzeit als DateTime-Objekt an.

Vor PowerShell 7.5 ignoriert das Cmdlet Folgendes:

  • Dieser Parameter, wenn Sie PathType als einen anderen Wert als Any.
  • Der OlderThan-Parameter , wenn er mit diesem Parameter verwendet wird.
  • Dieser Parameter, wenn Path auf ein Verzeichnis verweist.

Ab PowerShell 7.5 können Sie diesen Parameter mit einem beliebigen Wert für den PathType-Parameter verwenden, einen Datumsbereich mit dem Parameter OlderThan testen und das Alter von Verzeichnissen testen.

Weitere Informationen finden Sie unter about_FileSystem_Provider.

Parametereigenschaften

Typ:

Nullable<T>[[DateTime]]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-OlderThan

Dies ist ein dynamischer Parameter, der vom FileSystem Provider zur Verfügung gestellt wird.

Geben Sie eine Uhrzeit als DateTime-Objekt an.

Vor PowerShell 7.5 ignoriert das Cmdlet Folgendes:

  • Dieser Parameter, wenn Sie PathType als einen anderen Wert als Any.
  • Dieser Parameter, wenn er mit dem Parameter NewerThan verwendet wird.
  • Dieser Parameter, wenn Path auf ein Verzeichnis verweist.

Ab PowerShell 7.5 können Sie diesen Parameter mit jedem Wert für den PathType-Parameter verwenden, um einen Datumsbereich mit dem Parameter NewerThan zu testen und das Alter von Verzeichnissen zu testen.

Weitere Informationen finden Sie unter about_FileSystem_Provider.

Parametereigenschaften

Typ:

Nullable<T>[[DateTime]]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Path

Gibt einen zu testenden Pfad an. Platzhalterzeichen sind zulässig. Wenn der Pfad Leerzeichen enthält, schließen Sie ihn in Anführungszeichen ein.

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:True
Nicht anzeigen:False

Parametersätze

Path
Position:0
Obligatorisch:True
Wert aus Pipeline:True
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-PathType

Gibt den Typ des endgültigen Elements im Pfad an. Dieses Cmdlet gibt zurück $true , wenn das Element vom angegebenen Typ ist und $false nicht. Die zulässigen Werte für diesen Parameter sind:

  • Container – Ein Element, das andere Elemente enthält, z. B. ein Verzeichnis oder Registrierungsschlüssel.
  • Leaf – Ein Element, das keine anderen Elemente enthält, z. B. eine Datei.
  • Any - Entweder ein Container oder ein Blatt.

Gibt an, ob das endgültige Element im Pfad einen bestimmten Typ aufweist.

Vorsicht

Bis zur PowerShell-Version 6.1.2 ignoriert das Cmdlet die Option "PathType", wenn die Test-Path" und "PathType" zusammen angegeben werden, die Option "PathType" und überprüft nur den syntaktischen Pfad, ohne den Pfadtyp zu überprüfen.

Laut Problem Nr. 8607 kann das Beheben dieses Verhaltens eine bahnbrechende Änderung in einer zukünftigen Version sein, bei der die Schalter IsValid und PathType zu separaten Parametersätzen gehören und daher nicht zusammen verwendet werden können, um diese Verwirrung zu vermeiden.

Parametereigenschaften

Typ:TestPathType
Standardwert:None
Zulässige Werte:Any, Container, Leaf
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Typ

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

CommonParameters

Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.

Eingaben

String

Sie können eine Zeichenfolge, die einen Pfad, aber keinen wörtlichen Pfad enthält, an dieses Cmdlet weiterleiten.

Ausgaben

Boolean

Das Cmdlet gibt einen booleschen Wert zurück.

Hinweise

Die Cmdlets, die das Path-Substantiv (die Pfad-Cmdlets) enthalten, arbeiten mit dem Pfad und geben die Namen in einem präzisen Format zurück, das von allen PowerShell-Anbietern interpretiert werden kann. Sie sind für die Verwendung in Programmen und Skripts vorgesehen, in denen Sie den gesamten oder einen Teil eines Pfads in einem bestimmten Format anzeigen möchten. Verwenden Sie sie, wie Sie Dirname, Normpath, Realpath, Join oder andere Pfadmanipulationen verwenden würden.

Dies Test-Path ist für die Arbeit mit den Daten vorgesehen, die von jedem Anbieter verfügbar gemacht werden. Geben Sie Get-PSProviderein, um die in Ihrer Sitzung verfügbaren Anbieter auflisten zu können. Weitere Informationen finden Sie unter über_Anbieter.