Freigeben über


Test-Path

Bestimmt, ob alle Elemente eines Pfads vorhanden sind.

Syntax

Test-Path
    [-Path] <String[]>
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <PSCredential>]
    [-OlderThan <DateTime>]
    [-NewerThan <DateTime>]
    [<CommonParameters>]
Test-Path
    -LiteralPath <String[]>
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <PSCredential>]
    [-OlderThan <DateTime>]
    [-NewerThan <DateTime>]
    [<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 wenn welche fehlen. Es kann auch feststellen, ob die Pfadsyntax gültig ist und ob der Pfad zu einem Container oder einem Terminal- oder Blattelement führt. Wenn der Pfad ein Leerzeichen oder eine leere Zeichenfolge ist, wird zurückgegeben $False . Wenn der Pfad , Array von $null oder leeres Array ist$null, wird ein nicht beendender Fehler zurückgegeben.

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, d. h. das C: Verzeichnis, das Documents and Settings Verzeichnis und das DavidC Verzeichnis. Wenn keine vorhanden sind, 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

Mit diesen Befehlen wird der Pfad des PowerShell-Profils getestet.

Mit dem ersten Befehl wird bestimmt, ob alle Elemente im Pfad vorhanden sind. Mit dem zweiten Befehl wird bestimmt, ob die Syntax des Pfads gültig ist. In diesem Fall ist $Falseder Pfad , aber die Syntax ist richtig $True. Diese Befehle verwenden $profiledie automatische Variable, die auf den Speicherort 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 Commercial Buildings 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 Verzeichnisses %%amp;quot;Commercial Building%%amp;quot; an. Geben Sie bei langen Pfaden wie diesem die ersten Buchstaben des Pfads ein, und verwenden Sie dann die TAB-TASTE, um den Pfad abzuschließen.

Der Befehl gibt den Exclude-Parameter an, um Dateien anzugeben, die bei der Auswertung ausgelassen werden.

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

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 $Truezurück, da das PowerShell-Profil eine .ps1 Datei ist.

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

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

Mit dem ersten Befehl wird getestet, ob der Registrierungspfad des Registrierungsschlüssels Microsoft.PowerShell auf dem System korrekt ist. Wenn PowerShell ordnungsgemäß installiert ist, gibt das Cmdlet zurück $True.

Wichtig

Test-Path funktioniert nicht ordnungsgemäß mit allen PowerShell-Anbietern. Sie können Test-Path beispielsweise verwenden, um den Pfad eines Registrierungsschlüssels zu testen, aber wenn Sie ihn zum Testen des Pfads eines Registrierungseintrags verwenden, wird 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

Dieser Befehl verwendet den dynamischen Parameter NewerThan , um zu bestimmen, ob die Datei "PowerShell.exe" auf dem Computer neuer als "13. Juli 2009" ist.

Der Parameter NewerThan funktioniert nur in Dateisystemlaufwerken.

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

True

Beispiel 7: Testen eines Pfads mit NULL als Wert

Der fehler, der für null, array of null oder empty array zurückgegeben wird, ist ein nicht beendender Fehler. Sie kann unterdrückt werden, indem Sie verwenden -ErrorAction SilentlyContinue. Das folgende Beispiel zeigt alle Fälle, die den NullPathNotPermitted Fehler zurückgeben.

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 False zurückgegeben. Dies ist eine Änderung gegenüber Windows PowerShell 5.1. Wenn eine leere Zeichenfolge angegeben wird, Test-Path gibt einen Fehler zurück. Das folgende Beispiel zeigt Leerzeichen und leere Zeichenfolgen.

Test-Path ' '
Test-Path ''

False
False

Parameter

-Credential

Hinweis

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

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Exclude

Gibt Elemente an, die dieses Cmdlet auslässt. Der Wert dieses Parameters qualifiziert den Path-Parameter. Geben Sie ein Pfadelement oder ein Muster wie %%amp;quot;*.txt%%amp;quot; ein. Platzhalterzeichen sind zulässig.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Filter

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

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Include

Gibt Pfade an, die dieses Cmdlet testet. Der Wert dieses Parameters qualifiziert den Path-Parameter. Geben Sie ein Pfadelement oder ein Muster wie %%amp;quot;*.txt%%amp;quot; ein. Platzhalterzeichen sind zulässig.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-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 wenn dies nicht der Fall ist.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

Gibt den zu testenden Pfad an. Im Gegensatz zu Path wird der Wert des LiteralPath-Parameters genauso verwendet, wie er eingegeben wurde. Es werden keine Zeichen als Platzhalter interpretiert. Wenn der Pfad Zeichen enthält, die von PowerShell als Escapesequenzen interpretiert werden könnten, müssen Sie den Pfad in ein einfaches Anführungszeichen einschließen, damit sie nicht interpretiert werden.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NewerThan

Geben Sie eine Uhrzeit als DateTime-Objekt an.

Type:Nullable<T>[DateTime]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OlderThan

Geben Sie eine Uhrzeit als DateTime-Objekt an.

Type:Nullable<T>[DateTime]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Gibt den zu testenden Pfad an. Platzhalterzeichen sind zulässig. Wenn der Pfad Leerzeichen enthält, müssen Sie ihn in Anführungszeichen einschließen.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-PathType

Gibt den Typ des letzten Elements im Pfad an. Dieses Cmdlet gibt zurück $True , wenn das Element vom angegebenen Typ ist und $False nicht. Zulässige Werte für diesen Parameter:

  • Container. Ein Element, das andere Elemente enthält, beispielsweise ein Verzeichnis oder einen Registrierungsschlüssel.
  • Blatt. Ein Element, das keine anderen Elemente enthält, beispielsweise eine Datei.
  • Alle. Ein Container- oder Leaf-Element.

Gibt an, ob das letzte Element im Pfad einen bestimmten Typ aufweist.

Achtung

Bis zur PowerShell-Version 6.1.2 ignoriert das Cmdlet den PathType-Switch und überprüft nur den syntaktischen Pfad, Test-Path ohne den Pfadtyp zu überprüfen.

Gemäß Problem #8607 kann das Beheben dieses Verhaltens eine breaking Change in einer zukünftigen Version sein, bei der die IsValid - und PathType-Switches zu separaten Parametersätzen gehören und daher nicht zusammen verwendet werden können, um diese Verwirrung zu vermeiden.

Type:TestPathType
Aliases:Type
Accepted values:Any, Container, Leaf
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

String

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

Ausgaben

Boolean

Das Cmdlet gibt einen booleschen Wert zurück.

Hinweise

Die Cmdlets, die das Substantiv "Pfad " ( Pfad-Cmdlets) enthalten, arbeiten mit Pfadnamen und geben die Namen in einem präzisen Format zurück, das alle PowerShell-Anbieter interpretieren können. Diese können in Programmen und Skripts verwendet werden, in denen ein Pfadname vollständig oder teilweise in einem bestimmten Format angezeigt werden soll. Verwenden Sie sie genauso wie Dirname, Normpath, Realpath, Join oder andere Pfadmanipulatoren.

Die Test-Path ist für die Verwendung mit den Daten konzipiert, die von einem beliebigen Anbieter verfügbar gemacht werden. Geben Sie ein Get-PSProvider, um die in Ihrer Sitzung verfügbaren Anbieter aufzulisten. Weitere Informationen finden Sie unter about_Providers.