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 keine vorhanden sind. Es kann auch erkennen, ob die Pfadsyntax gültig ist und ob der Pfad zu einem Container, einem Terminal- oder Blattelement führt. Wenn leer Path ist, wird zurückgegeben $False . Wenn , Path 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

Dieser Befehl überprüft, ob alle Elemente im Pfad vorhanden sind, d. h. das Verzeichnis C: , das Verzeichnis Dokumente und Einstellungen und das Verzeichnis DavidC. 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

Diese Befehle testen den Pfad des PowerShell-Profils.

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 $profile, die 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 %%amp;quot;about_Automatic_Variables%%amp;quot;.

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 zu vervollständigen.

Der Befehl gibt den Exclude-Parameter an, um Dateien anzugeben, die in 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

Dieser Befehl ü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 .

Der erste Befehl testet, 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 beispielsweise verwenden Test-Path , um den Pfad eines Registrierungsschlüssels zu testen. Wenn Sie ihn jedoch 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\PowerShell.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 fehler, der nicht beendet wird. Sie kann mithilfe -ErrorAction SilentlyContinuevon unterdrückt werden. 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 ein Leerzeichen oder eine leere Zeichenfolge für den -Path Parameter bereitgestellt wird, wird False zurückgegeben. Das folgende Beispiel zeigt Leerzeichen und leere Zeichenfolgen.

Test-Path ' '
Test-Path ''

False
False

Parameter

-Credential

Hinweis

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 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 von diesem Cmdlet weggelassen werden. 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 Wildcardzeichen, hängt vom Anbieter ab. Filter sind effizienter als andere Parameter, da der Anbieter sie beim Abrufen der Objekte anwendet, 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 von diesem Cmdlet getestet werden. 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önnen, 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, wenn die Schalter IsValid und PathType zusammen angegeben sind, den Test-PathPathType-Switch und überprüft nur den syntaktischen Pfad, ohne den Pfadtyp zu überprüfen.

Gemäß Issue #8607 kann das Beheben dieses Verhaltens eine Breaking Change 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.

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 übergeben.

Ausgaben

Boolean

Das Cmdlet gibt einen booleschen Wert zurück.

Hinweise

Die Cmdlets, die das Pfad-Substantiv (die 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.

Ist Test-Path für die Arbeit mit den Daten konzipiert, die von jedem Anbieter verfügbar gemacht werden. Um die in Ihrer Sitzung verfügbaren Anbieter aufzulisten, geben Sie ein Get-PSProvider. Weitere Informationen finden Sie unter about_Providers.