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>]
[-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>]
Descrizione
Il Test-Path
cmdlet determina se tutti gli elementi del percorso esistono. Restituisce $true
se tutti gli elementi esistono e $false
se mancano. 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 è una stringa vuota o uno spazio vuoto, il cmdlet restituisce $false
. Se Path è $null
, una matrice di $null
o una matrice vuota, il cmdlet restituisce 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, tra cui la C:
directory, la Documents and Settings
directory e la DavidC
directory. Se mancano, 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 è 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 da omettere 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 porta 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 vengono usati 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 lo si usa 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 pwsh.exe
file nel computer è più recente di July 13, 2009
.
Il parametro NewerThan funziona solo nelle unità del file system.
Test-Path $pshome\pwsh.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 che restituiscono 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 viene specificata una stringa di spazi vuoti per il parametro Path , restituisce $false
. Si tratta di una modifica da Windows PowerShell 5.1. Quando viene specificata una stringa vuota, Test-Path
restituisce un errore.
L'esempio seguente mostra spazi vuoti e stringhe vuote.
Test-Path ' '
Test-Path ''
False
False
Esempio 9: Testare un percorso che potrebbe avere un'unità non valida
Quando si testa un percorso che include una specifica di unità, il test della validità del percorso ha esito negativo se l'unità non esiste. È possibile anteporre all'unità il nome del provider per risolvere il problema.
Test-Path -IsValid Z:\abc.txt
Test-Path -IsValid FileSystem::Z:\abc.txt
False
True
Parametri
-Credential
Nota
Questo parametro non è supportato da alcun provider installato con PowerShell. Per rappresentare un altro utente o elevare le credenziali durante l'esecuzione di questo cmdlet, usare Invoke-Command.
Tipo: | PSCredential |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Exclude
Specifica gli elementi omessi da questo cmdlet. Il valore di questo parametro qualifica il parametro Path . Immettere un elemento o un modello di percorso, ad esempio *.txt
. I caratteri jolly sono consentiti.
Tipo: | String[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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 invece di filtrare gli oggetti dopo il recupero.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | True |
-Include
Specifica i percorsi di test di questo cmdlet. Il valore di questo parametro qualifica il parametro Path . Immettere un elemento o un modello di percorso, ad esempio *.txt
. I caratteri jolly sono consentiti.
Tipo: | String[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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. Se il percorso sottoposto a test include una specifica dell'unità, il cmdlet restituisce false quando l'unità non esiste. PowerShell restituisce false perché non conosce il provider di unità da testare.
Nota
In .NET 2.1 è stata introdotta una modifica che causa un'interruzione nelle API Path. Questi metodi non controllano più la presenza di caratteri di percorso non validi. Questa modifica ha causato una regressione in PowerShell in cui il controllo IsValid non verifica più i caratteri non validi. La regressione verrà risolta in una versione futura. Per altre informazioni, vedere Modifiche di rilievo in .NET Core 2.1.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-LiteralPath
Specifica un percorso da testare. A differenza di Path, il valore del parametro LiteralPath viene usato esattamente come viene digitato. Nessun carattere viene interpretato come carattere jolly. Se il percorso include caratteri che possono essere interpretati da PowerShell come sequenze di escape, è necessario racchiudere il percorso tra virgolette singole in modo che non vengano interpretate.
Tipo: | String[] |
Alias: | PSPath, LP |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-NewerThan
Si tratta di un parametro dinamico reso disponibile dal provider FileSystem .
Specificare un'ora come oggetto DateTime .
Prima di PowerShell 7.5, il cmdlet ignora:
- Questo parametro quando si specifica PathType come qualsiasi valore diverso da
Any
. - Parametro OlderThan se usato con questo parametro.
- Questo parametro quando Path punta a una directory.
A partire da PowerShell 7.5, è possibile usare questo parametro con qualsiasi valore per il parametro PathType , per testare un intervallo di date con il parametro OlderThan e per testare l'età delle directory.
Per altre informazioni, vedere about_FileSystem_Provider.
Tipo: | Nullable<T>[[DateTime]] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-OlderThan
Si tratta di un parametro dinamico reso disponibile dal provider FileSystem .
Specificare un'ora come oggetto DateTime .
Prima di PowerShell 7.5, il cmdlet ignora:
- Questo parametro quando si specifica PathType come qualsiasi valore diverso da
Any
. - Questo parametro quando viene usato con il parametro NewerThan .
- Questo parametro quando Path punta a una directory.
A partire da PowerShell 7.5, è possibile usare questo parametro con qualsiasi valore per il parametro PathType , testare un intervallo di date con il parametro NewerThan e testare l'età delle directory.
Per altre informazioni, vedere about_FileSystem_Provider.
Tipo: | Nullable<T>[[DateTime]] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Path
Specifica un percorso da testare. I caratteri jolly sono consentiti. Se il percorso include spazi, racchiuderlo tra virgolette.
Tipo: | String[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | 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:
Container
- Elemento che contiene altri elementi, ad esempio una directory o una chiave del Registro di sistema.Leaf
- Elemento che non contiene altri elementi, ad esempio un file.Any
: 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 di rilievo 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.
Tipo: | TestPathType |
Alias: | Type |
Valori accettati: | Any, Container, Leaf |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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 il percorso 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 desidera visualizzare tutto o parte di un percorso in un formato specifico. Usarli come usare Dirname, Normpath, Realpath, Join o altri manipolatori di percorso.
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.