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 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 è 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 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 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 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 pwsh.exe
file nel computer è più recente di July 13, 2009
.
Il parametro NewerThan funziona solo nelle unità di 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 questo 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 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 un criterio 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 un criterio 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. Se il percorso sottoposto a test include una specifica di unità, il cmdlet restituisce false quando l'unità non esiste. PowerShell restituisce false perché non conosce il provider di unità da testare.
Nota
È stata introdotta una modifica di rilievo nelle API Path in .NET 2.1. Questi metodi non controllano più i 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.
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 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.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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 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.
Type: | Nullable<T>[[DateTime]] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OlderThan
Questo è 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 , per testare un intervallo di date con il parametro NewerThan e per testare l'età delle directory.
Per altre informazioni, vedere about_FileSystem_Provider.
Type: | Nullable<T>[[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
se non è. 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 vengono specificate insieme le opzioni IsValid e PathType , 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 può essere una modifica di rilievo in una versione futura, in cui i commutatori IsValid e PathType appartengono a set di parametri separati e quindi non possono essere usati 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 |
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 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.