Condividi tramite


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 $Falsesempre , 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

String

È possibile inviare tramite pipe una stringa contenente un percorso, ma non un percorso letterale, a questo cmdlet.

Output

Boolean

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.