28/08/2008

Verificare l'esistenza di un percorso con Test-Path

A cura di Efran Cobisi


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.

1Test-Path HKCU:\System\CurrentControlset 2Test-Path env:\PROCESSOR_ARCHITECTURE 3Test-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
Commenti

Nessun commento disponibile.