In Windows PowerShell viene utilizzato il sostantivo Item per fare riferimento agli elementi individuati in un'unità di Windows PowerShell. Quando si utilizza il provider FileSystem di Windows PowerShell, il termine Item può rappresentare un file, una cartella o un'unità di Windows PowerShell. L'elencazione e l'utilizzo di questi elementi sono attività di base essenziali nella maggior parte delle impostazioni amministrative, pertanto è opportuno trattarle in dettaglio.

Enumerazione di file, cartelle e chiavi del Registro di sistema (Get-ChildItem)

Poiché ottenere una raccolta di elementi da un determinato percorso è un'attività comune, il cmdlet Get-ChildItem è stato progettato specificamente per restituire tutti gli elementi inclusi in un contenitore quale una cartella.

Se si desidera visualizzare tutti i file e tutte le cartelle contenuti direttamente nella cartella C:\Windows, digitare:

PS> Get-ChildItem -Path C:\Windows
    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2006-05-16   8:10 AM          0 0.log
-a---        2005-11-29   3:16 PM         97 acc1.txt
-a---        2005-10-23  11:21 PM       3848 actsetup.log
...

L'elenco è simile a quello visualizzato quando si immette il comando dir in Cmd.exe o il comando ls in una shell dei comandi UNIX.

È possibile ottenere elenchi molto complessi utilizzando i parametri del cmdlet Get-ChildItem. Di seguito verranno considerati alcuni casi. È possibile visualizzare la sintassi del cmdlet Get-ChildItem digitando:

PS> Get-Command -Name Get-ChildItem -Syntax

Questi parametri possono essere combinati e confrontati per ottenere un output maggiormente personalizzato.

Elencazione di tutti gli elementi contenuti (parametro -Recurse)

Per visualizzare gli elementi di una cartella di Windows e quelli contenuti nelle relative sottocartelle, utilizzare il parametro Recurse di Get-ChildItem. Nell'elenco viene visualizzato tutto ciò che è incluso nella cartella di Windows e nelle relative sottocartelle. Ad esempio:

PS> Get-ChildItem -Path C:\WINDOWS -Recurse

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\WINDOWS
    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\WINDOWS\AppPatch
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM    1852416 AcGenral.dll
...

Filtraggio degli elementi per nome (parametro -Name)

Per visualizzare solo i nomi degli elementi, utilizzare il parametro Name di Get-Childitem:

PS> Get-ChildItem -Path C:\WINDOWS -Name
addins
AppPatch
assembly
...

Elencazione forzata degli elementi nascosti (parametro -Force)

Gli elementi normalmente invisibili in Esplora risorse o in Cmd.exe non vengono visualizzati nell'output di un comando Get-ChildItem. Per visualizzare gli elementi nascosti, utilizzare il parametro Force di Get-ChildItem. Ad esempio:

Get-ChildItem -Path C:\Windows -Force

Questo parametro è denominato Force perché consente di sostituire in modo forzato il normale comportamento del comando Get-ChildItem. Si tratta di un parametro ampiamente utilizzato in grado di forzare l'esecuzione di un'azione che un cmdlet normalmente non eseguirebbe, purché tale azione non comprometta la sicurezza del sistema.

Individuazione di corrispondenze dei nomi di elemento mediante i caratteri jolly

Il comando The Get-ChildItem accetta i caratteri jolly nel percorso degli elementi da elencare.

Poiché l'individuazione di corrispondenze mediante caratteri jolly è gestita dal modulo di Windows PowerShell, tutti i cmdlet che accettano i caratteri jolly utilizzano la stessa notazione e funzionano allo stesso modo. Nella notazione con caratteri jolly di Windows PowerShell è previsto quanto segue:

  • L'asterisco (*) individua la corrispondenza con zero o più ricorrenze di un carattere.

  • Il punto interrogativo (?) individua la corrispondenza esatta con un carattere.

  • La parentesi quadra aperta ([) e la parentesi quadra chiusa (]) racchiudono un insieme di caratteri di cui individuare la corrispondenza.

Di seguito vengono riportati alcuni esempi del funzionamento dei caratteri jolly.

Per trovare tutti i file della directory Windows con il suffisso .log e con esattamente cinque caratteri nel nome di base, immettere il comando seguente:

PS> Get-ChildItem -Path C:\Windows\?????.log
    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
...
-a---        2006-05-11   6:31 PM     204276 ocgen.log
-a---        2006-05-11   6:31 PM      22365 ocmsn.log
...
-a---        2005-11-11   4:55 AM         64 setup.log
-a---        2005-12-15   2:24 PM      17719 VxSDM.log
...

Per trovare tutti i file che iniziano con la lettera x nella directory Windows, digitare:

 Get-ChildItem -Path C:\Windows\x*

Per trovare tutti i file il cui nome inizia con x oppure z, digitare:

Get-ChildItem -Path C:\Windows\[xz]*

Esclusione di elementi (parametro -Exclude)

È possibile escludere elementi specifici utilizzando il parametro Exclude di Get-ChildItem. Tale parametro consente di eseguire un filtraggio complesso con una sola istruzione.

Si supponga ad esempio che si debba trovare la DDL del Servizio Ora di Windows nella cartella System32 e che ci si ricordi solo che il nome di questa DLL inizia con "W" e contiene il numero "32".

L'espressione w*32*.dll consente di trovare tutte le DLL che rispettano le condizioni, ma può anche restituire le DLL di Windows 95 e a 16 bit compatibili che contengono "95" o "16" nel proprio nome. È possibile omettere i file che includono tali numeri nel nome utilizzando il parametro Exclude con il modello *[9516]*:

PS> Get-ChildItem -Path C:\WINDOWS\System32\w*32*.dll -Exclude *[9516]*

Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS\System32

Mode LastWriteTime Length Name

---- ------------- ------ ----

-a--- 2004-08-04 8:00 AM 174592 w32time.dll

-a--- 2004-08-04 8:00 AM 22016 w32topl.dll

-a--- 2004-08-04 8:00 AM 101888 win32spl.dll

-a--- 2004-08-04 8:00 AM 172032 wldap32.dll

-a--- 2004-08-04 8:00 AM 264192 wow32.dll

-a--- 2004-08-04 8:00 AM 82944 ws2_32.dll

-a--- 2004-08-04 8:00 AM 42496 wsnmp32.dll

-a--- 2004-08-04 8:00 AM 22528 wsock32.dll

-a--- 2004-08-04 8:00 AM 18432 wtsapi32.dll

Combinazione dei parametri di Get-ChildItem

È possibile utilizzare diversi parametri del cmdlet Get-ChildItem nello stesso comando. Prima di combinare i parametri, assicurarsi di aver compreso il funzionamento dell'individuazione di corrispondenze mediante i caratteri jolly. Ad esempio, il comando seguente non restituisce alcun risultato:

PS> Get-ChildItem -Path C:\Windows\*.dll -Recurse -Exclude [a-y]*.dll

Non viene restituito alcun risultato, sebbene nella cartella Windows vi siano due DLL che iniziano con la lettera "z".

Non viene visualizzato alcun risultato perché i caratteri jolly sono stati specificati nel percorso. Anche se il comando è ricorsivo, il cmdlet Get-ChildItem limita gli elementi solo a quelli presenti nella cartella di Windows il cui nome termina con "dll".

Per specificare una ricerca ricorsiva di file il cui nome corrisponde a un modello speciale, utilizzare il parametro -Include.

PS> Get-ChildItem -Path C:\Windows -Include *.dll -Recurse -Exclude [a-y]*.dll

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows\System32\Setup


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM       8261 zoneoc.dll


    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows\System32


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM     337920 zipfldr.dll




Argomenti della Guida