Tra gli utili cmdlet messi a disposizione da Windows PowerShell, Test-Path è probabilmente uno dei meno conosciuti; la sua funzionalità consiste nel verificare se il percorso fornito come argomento esiste oppure no, ritornando un valore logico ($true, $false) di conseguenza.
Lo script che segue dimostra l'utilizzo più semplice di questo comando:
if (Test-Path c:\autoexec.bat)
{
Write-Host "c:\autoexec.bat esiste!"
}
È interessante notare come questo cmdlet si adatti perfettamente alle funzionalità esposte dal modello a provider dei file system virtuali di PowerShell: questo cmdlet è infatti in grado di operare non solo sul file system vero e proprio ma anche sul registry (testando le chiavi, non i valori), sui certificati disponibili, sulle variabili disponibili nel contesto corrente, su quelle d'ambiente e così via.
1
Test-Path HKCU:\System\CurrentControlset
2
Test-Path env:\PROCESSOR_ARCHITECTURE
3
Test-Path cert:\CurrentUser\AuthRoot\4963C531D7CCC40067C4612BB656A3BF8233846F
Nello script precedente, ad esempio, Test-Path è stato utilizzato per testare l'esistenza di una chiave del registry (linea 1), di una variabile d'ambiente (linea 2) e di un certificato nello store dell'utente corrente (linea 3).
Come la maggioranza dei cmdlet, anche Test-Path è in grado di lavorare con i caratteri wildcard ed estendere l'elaborazione a più elementi contemporaneamente; nel caso in cui voleste verificare, ad esempio, l'esistenza di almeno un file con estensione .bat all'interno di una determinata cartella potreste usare uno script simile a questo:
Test-Path c:\*.bat
Oppure potreste affidarvi ai parametri -Include ed -Exclude per specificare criteri più elastici, come nello script successivo, dove verifichiamo l'esistenza di almeno un file con estensione diversa da *.dll ed *.exe ma che abbia il nome che inizia per w all'interno della cartella C:\Windows\System32.
Test-Path C:\Windows\System32\w* -Exclude *.dll, *.exe