L’output di un comando che noi, o il sistema operativo, eseguiamo nel computer è il risultato generato da questi processi, può essere inviato a video, oppure stampato, per esempio, ci sono però alcuni comandi che mandano lunghe stringhe di dati sul monitor che, se devono essere consultati, diventa difficile leggerli tutti. Con PowerShell e il cmdlet Out-File possiamo reindirizzare l’output di questi comandi verso un file di testo da consultare in seguito o memorizzarlo per conservarlo.
Dato che l’output di questi comandi viene reindirizzato verso un file, a video non dovremmo vedere niente, se non il ritorno al prompt una volta eseguito, a meno che non siano presenti degli errori nel comando stesso o qualche blocco del sistema operativo nell’accesso a file o servizi, come nell’immagine che segue.
Out-File
Il cmdlet Out-File va a sostituire, o almeno si comporta nello stesso modo, il simbolo > che si utilizzava una volta per reindirizzare l’output nei comandi DOS. Con Out-File abbiamo in più una serie di parametri che ci danno un maggior controllo sulle informazioni che possiamo estrarre e salvare nel file.
Lista processi attivi
Per avere la lista di tutti i processi attivi in quel momento utilizziamo: Get-Process | Out-File -FilePath d:\ListaProcessiAttivi.txt
, che non mostra niente a video, mentre il solo cmdlet Get-Process
visualizza una lunga lista di informazioni.
Lista servizi
Per ottenere la lista dei servizi di Windows possiamo usare il comando: Get-Service | Format-Table -AutoSize | Out-File -FilePath d:\listaservizi.txt
Due parametri utili da aggiungere a Out-File sono -NoClobber
che verifica l’esistenza di un file con lo stesso nome e non lo sovrascrive, mentre con -Append
l’output del comando va ad aggiungersi alla fine del file listaservizi.txt così da poter vedere se ci sono stati dei cambiamenti nei servizi.
Parametro -Width
La console di PowerShell ha un limite di 80 caratteri nel mostrare i risultati e alcuni potrebbero essere tagliati. Per aumentare il numero di caratteri si aggiunge il parametro -Width
seguito da un numero a nostra scelta: Get-Service | Format-Table -AutoSize | Out-File -Width 300 -FilePath d:\listaservizi.txt -Append
Estrarre gli eventi
Il visualizzatore eventi contiene le informazioni su tutto quello che succede nel sistema operativo, può servirci sapere quali sono gli ultimi 200 eventi successi: Get-WinEvent -LogName System -MaxEvents 200 | Format-List | Out-File -FilePath d:\listaeventi.txt
.
Oppure estrarne una parte, in un determinato giorno e ora, magari per indagare le cause di una schermata blu o di un mancato aggiornamento:
$Begin = Get-Date -Date '01/02/2025 06:00:00'
$End = Get-Date -Date '01/02/2025 15:00:00'
Get-EventLog –LogName Application -After $Begin -Before $End | Format-List | Out-File -FilePath d:\listaeventi.txt
Lista file
Possiamo usare Out-File per creare un file con il contenuto completo di una cartella: Get-ChildItem c:\windows\system32 | Out-File -FilePath d:\listafile.txt -append
. Oppure per avere la lista di tutti i documenti Word contenuti nel disco D: Get-ChildItem d:\*.doc -recurse Get-ChildItem d:\*.doc -recurse -force | Out-File -FilePath d:\listafile.txt -append
Per ulteriori informazioni ed esempi potete consultare questa pagina Microsoft.