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 $True
zurü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 $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 %%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 $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
.
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 SilentlyContinue
von 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-Path
PathType-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
Sie können eine Zeichenfolge, die einen Pfad, aber keinen Literalpfad enthält, an dieses Cmdlet übergeben.
Ausgaben
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.