Condividi tramite


Test-Path

Determina se tutti gli elementi di un percorso esistono.

Sintassi

Path (Impostazione predefinita)

Test-Path
    [-Path] <String[]>
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <PSCredential>]
    [-UseTransaction]
    [-OlderThan <DateTime>]
    [-NewerThan <DateTime>]
    [<CommonParameters>]

LiteralPath

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 ne mancano alcuni. Può anche indicare se la sintassi del percorso è valida e se il percorso conduce a un contenitore, a un terminale o a un elemento foglia. Se lo Path spazio è vuoto, viene $False restituito. Se si Path tratta di una stringa vuota, $null, di una matrice o $null di una matrice vuota, viene restituito un errore non fatiscente.

Esempio

Esempio 1: Testare un percorso

Test-Path -Path "C:\Documents and Settings\DavidC"
True

Questo comando verifica se tutti gli elementi nel percorso esistono, ovvero la directory C:, la directory Documents and Settings e la directory DavidC. Se ne mancano alcuni, il cmdlet restituisce $False. In caso contrario, restituisce $True.

Esempio 2: Verifica del 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 se tutti gli elementi del percorso sono presenti. Il secondo comando determina se la sintassi del percorso è corretta. In questo caso, il percorso è $False, ma la sintassi è corretta $True. Questi comandi utilizzano $profile, la variabile automatica che punta alla posizione del profilo, anche se il profilo non esiste.

Per ulteriori 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 verifica se nella directory Edifici commerciali sono presenti file diversi da .dwg file.

Il comando utilizza 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, come questo, digitare le prime lettere del percorso, quindi utilizzare 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 verifica se il percorso memorizzato 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 utilizzati 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 utilizzare Test-Path per testare il percorso di una chiave del Registro di sistema, ma se lo si utilizza 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 utilizza 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à del 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, array of null o array empty è un errore non fatiscente. Può essere eliminato utilizzando -ErrorAction SilentlyContinue. Nell'esempio seguente vengono illustrati tutti i case 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 uno spazio vuoto è o una stringa vuota viene fornita per il -Path parametro, restituisce false. Nell'esempio seguente vengono mostrati gli spazi vuoti e le stringhe vuote.

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

Annotazioni

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.

Proprietà dei parametri

Tipo:PSCredential
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti: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". Sono consentiti caratteri jolly.

Proprietà dei parametri

Tipo:

String[]

Valore predefinito:None
Supporta i caratteri jolly:True
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-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 di altri parametri, perché il provider li applica quando recupera gli oggetti invece di fare in modo che PowerShell filtri gli oggetti dopo che sono stati recuperati.

Proprietà dei parametri

Tipo:String
Valore predefinito:None
Supporta i caratteri jolly:True
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Include

Specifica i percorsi verificati da questo cmdlet. Il valore di questo parametro qualifica il parametro Path. Immettere un elemento o un modello di percorso, ad esempio "*.txt". Sono consentiti caratteri jolly.

Proprietà dei parametri

Tipo:

String[]

Valore predefinito:None
Supporta i caratteri jolly:True
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-IsValid

Indica che questo cmdlet verifica la sintassi del percorso, indipendentemente dal fatto che gli elementi del percorso esistano o meno. Questo cmdlet restituisce $True se la sintassi del percorso è valida e $False se non lo è.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-LiteralPath

Specifica un percorso da testare. A differenza di Path, il valore del parametro LiteralPath viene usato esattamente come viene digitato. Nessun carattere è interpretato come un carattere jolly. Se il percorso include caratteri di escape, racchiudilo tra virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare alcun carattere come sequenze di escape.

Proprietà dei parametri

Tipo:

String[]

Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False
Alias:PSPath

Set di parametri

LiteralPath
Posizione:Named
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti:False

-NewerThan

Specificare un'ora come oggetto DateTime .

Proprietà dei parametri

Tipo:DateTime
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-OlderThan

Specificare un'ora come oggetto DateTime .

Proprietà dei parametri

Tipo:DateTime
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Path

Specifica un percorso da testare. Sono consentiti caratteri jolly. Se il percorso include spazi, racchiuderlo tra virgolette.

Proprietà dei parametri

Tipo:

String[]

Valore predefinito:None
Supporta i caratteri jolly:True
DontShow:False

Set di parametri

Path
Posizione:0
Obbligatorio:True
Valore dalla pipeline:True
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti:False

-PathType

Specifica il tipo di elemento finale nel percorso. Questo cmdlet restituisce $True se l'elemento è del tipo specificato e $False se non lo è. I valori accettabili 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. O un contenitore o una foglia.

Indica se l'elemento finale del tracciato è di un tipo particolare.

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.

Secondo il 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 utilizzate insieme evitando questa confusione.

Proprietà dei parametri

Tipo:TestPathType
Valore predefinito:None
Valori accettati:Any, Container, Leaf
Supporta i caratteri jolly:False
DontShow:False
Alias:TIPO

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-UseTransaction

Include il comando nella transazione attiva. Questo parametro è valido solo quando è in corso una transazione. Per altre informazioni, vedere about_Transactions

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:False
Supporta i caratteri jolly:False
DontShow:False
Alias:usetx

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

CommonParameters

Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.

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 desidera visualizzare tutto o parte di un nome di percorso in un formato specifico. Usali come faresti con Dirname, Normpath, Realpath, Join o altri manipolatori di percorso.

È Test-Path progettato per funzionare con i dati esposti da qualsiasi provider. Per elencare i provider disponibili nella sessione, digitare Get-PSProvider. Per altre informazioni, consultare about_Providers.