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 $True
zurü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 $False
der 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 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 $True
zurü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
Sie können eine Zeichenfolge, die einen Pfad, aber keinen Literalpfad enthält, an dieses Cmdlet weiterleiten.
Ausgaben
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.