Test-Path
Determina se sono presenti tutti gli elementi di un percorso.
Sintassi
Test-Path
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-UseTransaction]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
Test-Path
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-UseTransaction]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
Descrizione
Il Test-Path
cmdlet determina se tutti gli elementi del percorso esistono.
Restituisce $True
se tutti gli elementi esistono e $False
se sono mancanti.
Può anche indicare se la sintassi del percorso è valida e se il percorso conduce a un contenitore o a un terminale o a un elemento foglia.
Se è Path
uno spazio vuoto, $False
viene restituito .
Path
Se è una stringa vuota, $null
, matrice di $null
o matrice vuota, viene restituito un errore non irreversibile.
Esempio
Esempio 1: Testare un percorso
Test-Path -Path "C:\Documents and Settings\DavidC"
True
Questo comando controlla se tutti gli elementi nel percorso esistono, ovvero la directory C: , la directory Documents and Settings e la directory DavidC.
Se non sono presenti, il cmdlet restituisce $False
.
In caso contrario, viene restituito $True
.
Esempio 2: Testare il percorso di un profilo
Test-Path -Path $profile
False
Test-Path -Path $profile -IsValid
True
Questi comandi testano il percorso del profilo di PowerShell.
Il primo comando determina l'esistenza di tutti gli elementi del percorso.
Il secondo comando determina se la sintassi del percorso è corretta.
In questo caso, il percorso è $False
, ma la sintassi è corretta $True
.
Questi comandi usano $profile
, la variabile automatica che punta alla posizione del profilo, anche se il profilo non esiste.
Per altre informazioni sulle variabili automatiche, vedere about_Automatic_Variables.
Esempio 3: Verificare se sono presenti file oltre a un tipo specificato
Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg
False
Questo comando controlla se nella directory Commercial Buildings sono presenti file diversi da .dwg file.
Il comando usa il parametro Path per specificare il percorso. Poiché il percorso include uno spazio, il percorso viene racchiuso tra virgolette. L'asterisco alla fine del percorso indica il contenuto della directory Commercial Building. Con percorsi lunghi, ad esempio questo, digitare le prime lettere del percorso e quindi usare il tasto TAB per completare il percorso.
Il comando specifica il parametro Exclude per specificare i file che verranno omessi dalla valutazione.
In questo caso, poiché la directory contiene solo .dwg file, il risultato è $False
.
Esempio 4: Verificare la presenza di un file
Test-Path -Path $profile -PathType leaf
True
Questo comando controlla se il percorso archiviato nella $profile
variabile conduce a un file.
In questo caso, poiché il profilo di PowerShell è un .ps1
file, il cmdlet restituisce $True
.
Esempio 5: Controllare i percorsi nel Registro di sistema
Questi comandi usano Test-Path
con il provider del Registro di sistema di PowerShell.
Il primo comando verifica se il percorso del Registro di sistema della chiave del Registro di sistema Microsoft.PowerShell è corretto nel sistema.
Se PowerShell è installato correttamente, il cmdlet restituisce $True
.
Importante
Test-Path
non funziona correttamente con tutti i provider di PowerShell.
Ad esempio, è possibile usare Test-Path
per testare il percorso di una chiave del Registro di sistema, ma se viene usato per testare il percorso di una voce del Registro di sistema, restituisce $False
sempre , anche se la voce del Registro di sistema è presente.
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
Esempio 6: Verificare se un file è più recente di una data specificata
Questo comando usa il parametro dinamico NewerThan per determinare se il file "PowerShell.exe" nel computer è più recente di "13 luglio 2009".
Il parametro NewerThan funziona solo nelle unità di file system.
Test-Path $pshome\PowerShell.exe -NewerThan "July 13, 2009"
True
Esempio 7: Testare un percorso con null come valore
L'errore restituito per null
, matrice di null
o matrice vuota è un errore non irreversibile.
Può essere eliminato tramite -ErrorAction SilentlyContinue
.
Nell'esempio seguente vengono illustrati tutti i casi in cui viene restituito l'errore NullPathNotPermitted
.
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
Esempio 8: Testare un percorso con spazi vuoti come valore
Quando uno spazio vuoto è o una stringa vuota specificata per il -Path
parametro , restituisce false.
Nell'esempio seguente viene illustrato lo spazio vuoto e la stringa vuota.
Test-Path ' '
Test-Path ''
False
Test-Path : Cannot bind argument to parameter 'Path' because it is an empty string.
At line:1 char:11
+ Test-Path ''
+ ~~
+ CategoryInfo : InvalidData: (:) [Test-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand
Parametri
-Credential
Nota
Questo parametro non è supportato da alcun provider installato con PowerShell. Per rappresentare un altro utente o elevare le credenziali quando si esegue questo cmdlet, usare Invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Exclude
Specifica gli elementi che questo cmdlet omette. Il valore di questo parametro qualifica il parametro Path. Immettere un elemento o modello di percorso, ad esempio "*.txt". I caratteri jolly sono consentiti.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
Specifica un filtro nel formato o nella lingua del provider. Il valore di questo parametro qualifica il parametro Path. La sintassi del filtro, incluso l'uso di caratteri jolly, dipende dal provider. I filtri sono più efficienti rispetto ad altri parametri, perché il provider li applica quando recupera gli oggetti anziché filtrare gli oggetti dopo il recupero.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Include
Specifica i percorsi di test di questo cmdlet. Il valore di questo parametro qualifica il parametro Path. Immettere un elemento o modello di percorso, ad esempio "*.txt". I caratteri jolly sono consentiti.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-IsValid
Indica che questo cmdlet verifica la sintassi del percorso, indipendentemente dal fatto che gli elementi del percorso esistano.
Questo cmdlet restituisce $True
se la sintassi del percorso è valida e $False
in caso contrario.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Specifica un percorso da testare. A differenza di Path, il valore del parametro LiteralPath viene usato esattamente com'è digitato. Nessun carattere viene interpretato come carattere jolly. Se il percorso include caratteri di escape, racchiuderlo tra virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare alcun carattere come sequenze di escape.
Type: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NewerThan
Specificare un'ora come oggetto DateTime .
Type: | DateTime |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OlderThan
Specificare un'ora come oggetto DateTime .
Type: | DateTime |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Specifica un percorso da testare. I caratteri jolly sono consentiti. Se il percorso include spazi, racchiuderlo tra virgolette.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-PathType
Specifica il tipo dell'elemento finale nel percorso.
Questo cmdlet restituisce $True
se l'elemento è del tipo specificato e $False
, in caso contrario, .
I valori validi per questo parametro sono:
- Contenitore. elemento che contiene altri elementi, ad esempio una directory o una chiave del Registro di sistema.
- Foglia. elemento che non contiene altri elementi, ad esempio un file.
- Qualsiasi. contenitore o foglia.
Indica se l'elemento finale del percorso è di un determinato tipo.
Attenzione
Fino a PowerShell versione 6.1.2, quando le opzioni IsValid e PathType vengono specificate insieme, il Test-Path
cmdlet ignora l'opzione PathType e convalida solo il percorso sintattico senza convalidare il tipo di percorso.
In base al problema 8607, la correzione di questo comportamento potrebbe essere una modifica sostanziale in una versione futura, in cui le opzioni IsValid e PathType appartengono a set di parametri separati e pertanto non possono essere usate insieme evitando questa confusione.
Type: | TestPathType |
Aliases: | Type |
Accepted values: | Any, Container, Leaf |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseTransaction
Include il comando nella transazione attiva. Questo parametro è valido solo quando è in corso una transazione. Per altre informazioni, vedere about_Transactions
Type: | SwitchParameter |
Aliases: | usetx |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
È possibile inviare tramite pipe una stringa contenente un percorso, ma non un percorso letterale, a questo cmdlet.
Output
Il cmdlet restituisce un valore booleano .
Note
I cmdlet che contengono il sostantivo Path (i cmdlet Path ) funzionano con i nomi dei percorsi e restituiscono i nomi in un formato conciso che tutti i provider di PowerShell possono interpretare. Sono progettati per l'uso in programmi e script in cui si vuole visualizzare tutto o parte di un nome di percorso in un determinato formato. Usarli come si userebbe Dirname, Normpath, Realpath, Join o altri manipolatori di percorso.
l'oggetto Test-Path
è progettato per lavorare con i dati esposti da qualsiasi provider.
Per elencare i provider disponibili nella sessione, digitare Get-PSProvider
.
Per altre informazioni, vedere about_Providers.