Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo esempio si applica solo alle piattaforme Windows.
PowerShell usa il sostantivo Item per fare riferimento agli elementi trovati in un'unità di PowerShell. Quando si usa il provider FileSystem di PowerShell, un elemento potrebbe essere un file, una cartella o l'unità di PowerShell. Elencare e usare questi elementi è un'attività di base fondamentale nella maggior parte delle impostazioni amministrative, quindi vogliamo discutere in dettaglio queste attività.
Enumerazione di file, cartelle e chiavi del Registro di sistema
Poiché l'acquisizione di una raccolta di elementi da una posizione specifica è un'attività comune, il Get-ChildItem cmdlet è progettato specificamente per restituire tutti gli elementi trovati all'interno di un contenitore, ad esempio una cartella.
Se si desidera restituire tutti i file e le cartelle contenuti direttamente all'interno della cartella C:\Windows, digitare:
PS> Get-ChildItem -Path C:\Windows
Directory: Microsoft.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 dir comando in cmd.exeo il ls comando in una shell dei comandi Unix.
È possibile eseguire elenchi complessi usando i parametri del Get-ChildItem cmdlet . È possibile visualizzare la sintassi del Get-ChildItem cmdlet digitando:
Get-Command -Name Get-ChildItem -Syntax
Questi parametri possono essere misti e abbinati per ottenere un output altamente personalizzato.
Elenco di tutti gli elementi contenuti
Per visualizzare sia gli elementi all'interno di una cartella di Windows che gli elementi contenuti nelle sottocartelle, usare il parametro Recurse di Get-ChildItem. L'elenco visualizza tutti gli elementi all'interno della cartella Di Windows e gli elementi nelle relative sottocartelle. Per esempio:
PS> Get-ChildItem -Path C:\WINDOWS -Recurse
Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS
Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS\AppPatch
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 1852416 AcGenral.dll
...
Filtro degli elementi in base al nome
Per visualizzare solo i nomi degli elementi, usare il parametro Name di Get-ChildItem:
PS> Get-ChildItem -Path C:\WINDOWS -Name
addins
AppPatch
assembly
...
Elencare forzatamente gli elementi nascosti
Gli elementi nascosti in Esplora file o cmd.exe non vengono visualizzati nell'output di un Get-ChildItem comando. Per visualizzare gli elementi nascosti, usare il parametro Force di Get-ChildItem.
Per esempio:
Get-ChildItem -Path C:\Windows -Force
Questo parametro è denominato Force perché è possibile eseguire forzatamente l'override del comportamento normale del Get-ChildItem comando.
Force è un parametro ampiamente usato che forza un'azione che un cmdlet normalmente non esegue, anche se non può eseguire alcuna azione che comprometta la sicurezza del sistema.
Corrispondenza dei nomi di oggetti con caratteri jolly
Il Get-ChildItem comando accetta caratteri jolly nel percorso degli elementi da elencare.
Poiché la corrispondenza con caratteri jolly viene gestita dal motore di PowerShell, tutti i cmdlet che accettano caratteri jolly usano la stessa notazione e hanno lo stesso comportamento di corrispondenza. La notazione con caratteri jolly di PowerShell include:
- L'asterisco (
*) corrisponde a zero o più occorrenze di qualsiasi carattere. - Il punto interrogativo (
?) corrisponde esattamente a un carattere. - Il carattere parentesi angolare sinistra (
[) e la parentesi angolare destra (]) racchiudono un set di caratteri da abbinare.
Ecco alcuni esempi di come funziona la specificazione dei caratteri jolly.
Per trovare tutti i file nella directory di Windows con il suffisso .log e esattamente cinque caratteri nel nome di base, immettere il comando seguente:
PS> Get-ChildItem -Path C:\Windows\?????.log
Directory: Microsoft.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 di Windows, digitare:
Get-ChildItem -Path C:\Windows\x*
Per trovare tutti i file i cui nomi iniziano con "x" o "z", digitare:
Get-ChildItem -Path C:\Windows\[xz]*
Per altre informazioni sui caratteri jolly, vedere about_Wildcards.
Esclusione di elementi
È possibile escludere elementi specifici usando il parametro Exclude di Get-ChildItem. In questo modo è possibile eseguire filtri complessi in una singola istruzione.
Si supponga, ad esempio, di tentare di trovare la DLL del servizio ora di Windows nella cartella System32 e tutto ciò che si può ricordare sul nome della DLL è che inizia con "W" e contiene "32".
Un'espressione come w*32*.dll troverà tutte le DLL che soddisfano le condizioni, ma è possibile filtrare ulteriormente i file e omettere eventuali file win32. È possibile omettere questi file usando il parametro Exclude con il modello win*:
PS> Get-ChildItem -Path C:\WINDOWS\System32\w*32*.dll -Exclude win*
Directory: C:\WINDOWS\System32
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 3/18/2019 9:43 PM 495616 w32time.dll
-a--- 3/18/2019 9:44 PM 35328 w32topl.dll
-a--- 1/24/2020 5:44 PM 401920 Wldap32.dll
-a--- 10/10/2019 5:40 PM 442704 ws2_32.dll
-a--- 3/18/2019 9:44 PM 66048 wsnmp32.dll
-a--- 3/18/2019 9:44 PM 18944 wsock32.dll
-a--- 3/18/2019 9:44 PM 64792 wtsapi32.dll
Combinazione di parametri Get-ChildItem
È possibile usare diversi parametri del Get-ChildItem cmdlet nello stesso comando. Prima di combinare i parametri, assicurati di capire come funziona la corrispondenza dei caratteri jolly. Ad esempio, il comando seguente non restituisce risultati:
Get-ChildItem -Path C:\Windows\*.dll -Recurse -Exclude [a-y]*.dll
Non sono presenti risultati, anche se nella cartella Windows sono presenti due DLL che iniziano con la lettera "z".
Non sono stati restituiti risultati perché è stato specificato il carattere speciale jolly come parte del percorso. Anche se il comando era ricorsivo, il Get-ChildItem cmdlet limitava gli elementi a quelli presenti nella cartella di Windows con nomi che terminano con .dll.
Per specificare una ricerca ricorsiva per i file i cui nomi corrispondono a un criterio speciale, usare il parametro Include .
PS> Get-ChildItem -Path C:\Windows -Include *.dll -Recurse -Exclude [a-y]*.dll
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32\Setup
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 8261 zoneoc.dll
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2004-08-04 8:00 AM 337920 zipfldr.dll