Ricorda i bei vecchi tempi del comando dir
in DOS? E il comando ls
in Linux? In tal caso, il cmdlet Get-childItem è essenzialmente quello, ma portato ad un livello superiore.
Infatti, abbiamo anche dir
e ls
in PowerShell sotto forma di alias. Il cmdlet Get-Childitem di PowerShell può non solo elencare file e cartelle in un sistema di file tramite la console di PowerShell o lo script di PowerShell , ma può anche enumerare chiavi e valori del registro, certificati in vari store di certificati e persino Active Directory, per citarne alcuni.
Se sei uno scripter di PowerShell principiante/intermedio, assicurati di dare un’occhiata al mio mini-corso GRATUITO sulla costruzione di uno strumento PowerShell! Oltre 9.000 parole di spiegazioni approfondite e approfondimenti su come costruire uno strumento PowerShell.
Per capire Get-Childitem, pensa prima a dir
e ls
, ma invece di trattare solo file, tratta molti oggetti come un elemento figlio e li enumera. Puoi usare l’alias o il nome completo del comando per utilizzarlo.
Dato che questo comando è disponibile sin da PowerShell v1, puoi essere sicuro che funzionerà con la tua versione di PowerShell.
Get-ChildItem attraversa un albero
A file system is a hierarchy. It has a folder structure with files inside of folders and those folders inside of other folders. A file system is like a tree. That tree has a trunk (C:\
for example) and “branches” coming off of it (folders). In fact, we even have a tree
command.
Puoi indirizzare questo comando sia a percorsi locali sul computer locale, utilizzare uno scriptblock remoto di PowerShell e utilizzare Get-ChildItem
al suo interno o semplicemente indirizzarlo a un percorso UNC. Tutti funzionano allo stesso modo. Forse voglio solo elencare tutti i file nella directory corrente.
Provider di PowerShell
Microsoft si rese conto che la navigazione di questa struttura “a albero” di un sistema di file poteva essere applicata anche ad altri sistemi. Un sistema di file “a albero” ha cartelle e file, ma un registro ha chiavi e valori, mentre il sistema di certificati in Windows ha archivi e certificati all’interno di quegli archivi. Ognuna di queste aree specifiche può essere rappresentata come un albero, quindi nacque il provider PowerShell. Perché tutto questo discorso sui provider PowerShell? Perché il cmdlet Get-ChildItem
fa parte dei cmdlet *-Item
che interagiscono con i drive PowerShell che ogni provider espone.
Il cmdlet Get-ChildItem
può restituire qualsiasi numero di oggetti su un drive PowerShell e consente di elaborare ogni elemento tramite il pipeline o forse in un ciclo foreach di PowerShell. Comprende il concetto di un drive PowerShell che consente di specificare un Path
di una cartella di sistema di file, una chiave di registro o un archivio di certificati, tutto in uno.
Puoi vedere qui sotto che questo comando può elencare la cartella C:\, l’hive HKEY Current User e l’archivio dei certificati di PowerShell.
Filtraggio
Il comando PowerShell Get-ChildItem
non può solo recuperare tutti gli oggetti su un’unità, ma può anche filtrare le informazioni attraverso un paio di diversi parametri: Filtro
, Includi
ed Escludi
. Vorrai sempre utilizzare il diffuso parametro PowerShell Filtro
quando possibile. Questo parametro passa direttamente la sintassi del filtro al provider individuale. Anche se molto più veloce, questa sintassi dipende esclusivamente dal provider che viene interrogato.
Ad esempio, una sintassi di Filtro
come Nome -eq 'foo'
può essere completamente corretta quando si interrogano i file, ma non funzionerà affatto quando si interrogano il registro perché il provider del registro non ha nemmeno un filtro!
Quando tutto il resto fallisce, hai sempre anche i parametri Includi
ed Escludi
.
Questo comando in PowerShell ha anche alcuni parametri specifici del filesystem come Forza
che visualizzerà file e cartelle nascosti, File
e Directory
che trovano solo file o cartelle. Dai un’occhiata alla panoramica completa di Get-ChildItem
tramite Get-Help
o nella documentazione di Microsoft.
Un’altra cosa interessante riguardo a Get-ChildItem
è la sua capacità di risolvere percorsi quando si utilizza il carattere jolly. In PowerShell, il carattere jolly rappresenta tipicamente qualsiasi cosa. Ad esempio, se desideri vedere tutti i file con l’estensione file .txt, specifica semplicemente il percorso alla cartella e *.txt
.
Potremmo anche filtrare gli attributi dei file. Forse vogliamo solo trovare i file in sola lettura in una cartella.
Riepilogo
Questo comando PowerShell è uno di quelli che userai ripetutamente. La maggior parte delle volte, probabilmente userai il provider FileSystem, ma è importante ricordare che questo cmdlet è in grado di fare molto di più. Usalo per interrogare file, cartelle, chiavi di registro, valori di registro, certificati, utenti di Active Directory, computer o addirittura variabili di ambiente, funzioni e altro ancora!
In caso di dubbio, esegui il comando Get-PSDrive
per vedere un elenco di tutti i drive PowerShell caricati che Get-ChildItem
può interrogare per te.