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>]
Test-Path
[-Path] <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[<CommonParameters>]
Test-Path
-LiteralPath <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[<CommonParameters>]
Beschreibung
Das cmdlet Test-Path
bestimmt, ob alle Elemente des Pfads vorhanden sind. Sie gibt $true
zurück, wenn alle Elemente vorhanden sind, und $false
, falls vorhanden. 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 Path ein Leerzeichen oder eine leere Zeichenfolge ist, gibt das Cmdlet $false
zurück. Wenn das Path-$null
ist, gibt $null
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 DavidC
Verzeichnisses. Wenn ein Wert fehlt, gibt das Cmdlet $false
zurück. 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.
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 ist der Pfad $false
, aber die Syntax ist korrekt $true
. Diese Befehle verwenden $profile
, die 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 parameter Path, 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 die Exclude Parameter an, um Dateien anzugeben, die aus der Auswertung weggelassen werden sollen.
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
Variable gespeicherte Pfad zu einer Datei führt. In diesem Fall gibt das Cmdlet .ps1
zurück, da das PowerShell-Profil eine $true
Datei ist.
Beispiel 5: Überprüfen von Pfaden in der Registrierung
Diese Befehle verwenden Test-Path
mit dem PowerShell-Registrierungsanbieter.
Der erste Befehl testet, ob der Registrierungspfad des Microsoft.PowerShell- Registrierungsschlüssels auf dem System korrekt ist. Wenn PowerShell ordnungsgemäß installiert ist, gibt das Cmdlet $true
zurück.
Wichtig
Test-Path
funktioniert nicht ordnungsgemäß mit allen PowerShell-Anbietern. Sie können z. B. Test-Path
verwenden, um den Pfad eines Registrierungsschlüssels zu testen, aber wenn Sie ihn zum Testen des Pfads eines Registrierungseintrags verwenden, wird immer $false
zurückgegeben, 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 sich eine Datei in einem Datumsbereich befindet
Dieser Befehl verwendet die NewerThan und OlderThan dynamische Parameter, um zu bestimmen, ob die pwsh.exe
Datei auf dem Computer neuer als July 13, 2009
und älter als in der letzten Woche ist.
Die Parameter NewerThan und OlderThan funktionieren nur auf Dateisystemlaufwerken.
Get-Command pwsh |
Select-Object -ExpandProperty Path |
Test-Path -NewerThan "July 13, 2009" -OlderThan (Get-Date).AddDays(-7)
True
Beispiel 7: Testen eines Pfads mit NULL als Wert
Der fehler, der für null
, array of null
or empty array zurückgegeben wird, ist ein nicht beendeter Fehler. Sie kann mithilfe von -ErrorAction SilentlyContinue
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 für den parameter Path eine Leerzeichenzeichenfolge bereitgestellt wird, wird $false
zurückgegeben. Dies ist eine Änderung von Windows PowerShell 5.1. Wenn eine leere Zeichenfolge angegeben wird, gibt Test-Path
einen Fehler zurück.
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
Anmerkung
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.
Typ: | PSCredential |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | 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.
Typ: | String[] |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | True |
-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.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | True |
-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.
Typ: | String[] |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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 $true
zurück, wenn die Pfadsyntax gültig ist, und $false
, wenn dies nicht der Fall ist. 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.
Anmerkung
Eine bahnbrechende Änderung der Pfad-APIs wurde in .NET 2.1 eingeführt. Diese Methoden suchen nicht mehr nach ungültigen Pfadzeichen. Diese Änderung führte zu einer Regression in PowerShell, bei der die IsValid 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.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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 Platzhalter 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.
Typ: | String[] |
Aliase: | PSPath, LP |
Position: | Named |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-NewerThan
Dies ist ein dynamischer Parameter, der vom FileSystem-Anbieter 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
angeben. - Der parameter OlderThan bei Verwendung mit diesem Parameter.
- Dieser Parameter, wenn Path auf ein Verzeichnis verweist.
Ab PowerShell 7.5 können Sie diesen Parameter mit einem beliebigen Wert für den parameter PathType verwenden, um einen Datumsbereich mit dem Parameter OlderThan zu testen und das Alter von Verzeichnissen zu testen.
Weitere Informationen finden Sie unter about_FileSystem_Provider.
Typ: | Nullable<T>[[DateTime]] |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-OlderThan
Dies ist ein dynamischer Parameter, der vom FileSystem-Anbieter 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
angeben. - Dieser Parameter bei Verwendung mit dem Parameter NewerThan.
- 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, um einen Datumsbereich mit dem Parameter NewerThan zu testen und das Alter von Verzeichnissen zu testen.
Weitere Informationen finden Sie unter about_FileSystem_Provider.
Typ: | Nullable<T>[[DateTime]] |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Path
Gibt einen zu testenden Pfad an. Platzhalterzeichen sind zulässig. Wenn der Pfad Leerzeichen enthält, müssen Sie ihn in Anführungszeichen einschließen.
Typ: | String[] |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | True |
-PathType
Gibt den Typ des endgültigen Elements im Pfad an. Dieses Cmdlet gibt $true
zurück, wenn das Element vom angegebenen Typ ist, und $false
, wenn dies nicht der Fall ist. 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 zu PowerShell, Version 6.1.2, wenn die IsValid- und PathType- zusammen angegeben werden, ignoriert das cmdlet Test-Path
den PathType Switch und überprüft nur den syntaktischen Pfad, ohne den Pfadtyp zu überprüfen.
Laut Problem Nr. 8607kann das Beheben dieses Verhaltens in einer zukünftigen Version eine unterbrechungsbrechende Änderung sein, bei der die IsValid und PathType Schalter zu separaten Parametersätzen gehören und daher nicht zusammen verwendet werden können, um diese Verwirrung zu vermeiden.
Typ: | TestPathType |
Aliase: | Type |
Zulässige Werte: | Any, Container, Leaf |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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 Path Substantiv enthalten (das Path Cmdlets), funktionieren mit 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 Dirname, Normpath, Realpath, Joinoder andere Pfadmanipulatoren.
Die Test-Path
ist so konzipiert, dass sie mit den Daten arbeitet, die von jedem Anbieter verfügbar gemacht werden. Geben Sie Get-PSProvider
ein, um die in Ihrer Sitzung verfügbaren Anbieter auflisten zu können. Weitere Informationen finden Sie unter über_Anbieter.