Reindirizzare l’output di PowerShell in un file con Out-File: una guida completa

Se sei alla ricerca di un cmdlet di PowerShell che possa memorizzare l’output in un file di testo, sei fortunato. Stai per imparare come utilizzare il cmdlet Out-File di PowerShell insieme al suo popolare parametro Out-File -Append anche!

Come Funziona Out-File?

Questo cmdlet di PowerShell è semplice nella sua natura; il suo unico scopo è memorizzare l’output ricevuto e salvarlo in un file di testo.

È stato progettato per sostituire l’operatore standard di reindirizzamento output (>). Anche dai tempi del DOS, potevamo reindirizzare l’output in un file. Questo cmdlet è il modo PowerShell per farlo.

Il cmdlet Out-File viene tipicamente utilizzato alla fine del pipeline di PowerShell. Il suo unico scopo è inviare l’output grezzo direttamente a un file di testo senza preoccuparsi di altro. Ci sono pochi modi minimi per personalizzare il modo in cui quell’output viene scritto.

Invio dell’Output a un File

Immaginiamo di avere uno script che restituisce un elenco di tutti i servizi di Windows sul tuo computer. Quando esegui Get-Service, riceverai tutti gli oggetti che ti aspetti sulla console.

Ma forse vorresti salvare quell’output in un file di testo. Il cmdlet Out-File è un ottimo modo per farlo. Puoi utilizzarlo passando praticamente qualsiasi cosa attraverso di esso tramite il pipeline.

Puoi vedere qui sotto che l’output del comando Get-Service è stato inviato al cmdlet che ha creato un file di testo chiamato Services.txt, che contiene l’esatta visualizzazione che vedi sulla console.

PS> Get-Service | Out-File -FilePath C:\Services.txt
PS> Get-Content C:\Services.txt
Status   Name               DisplayName

Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity
Stopped  Appinfo            Application Information
Stopped  AppMgmt            Application Management
<SNIP>

Aggiunta a un file

Per impostazione predefinita, sovrascrive qualsiasi cosa nel file di testo fornito tramite il parametro FilePath. Tuttavia, puoi annullare questo comportamento utilizzando il parametro Append.

Forse stai accumulando l’output della console in un file e vorresti aggiungere del testo a un file anziché sovrascriverlo. Il parametro Append è il tuo migliore amico.

Utilizzando il parametro Out-File -Append, puoi vedere qui sotto che se non lo usi, il file C:\File.txt viene sovrascritto. Ma, non appena aggiungi il parametro Append, aggiunge l’output alla fine.

PS> 'foo' | Out-File -FilePath C:\File.txt
PS> Get-Content -Path C:\File.txt
foo
PS> 'foo' | Out-File -FilePath C:\File.txt
PS> Get-Content C:\File.txt
foo
PS> 'foo' | Out-File -FilePath C:\File.txt -Append
PS> Get-Content C:\File.txt
foo foo

Cambiare l’output

In modo predefinito, questo cmdlet cercherà di replicare ciò che viene mostrato sulla console, ma ci sono alcune modalità per manipolarlo. Ad esempio, il cmdlet ha un parametro NoNewLine che rimuove semplicemente tutti i caratteri di nuova riga.

PS> Get-Service | Out-File -FilePath C:\Services.txt -NoNewline
PS> Get-Content C:\Services.txt
Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application La

In alternativa, puoi interrompere il testo su ogni riga a una determinata lunghezza di caratteri anche con il parametro Width.

PS> Get-Service | Out-File -FilePath C:\Services.txt -Width 30 
PS> Get-Content C:\Services.txt
Status   Name               DisplayName
------   -----              -----------
Stopped  AJRouter           Al

Conclusioni

Out-File

In uno scenario del mondo reale, questo cmdlet funziona, ma ci sono modi migliori per memorizzare l’output su un file.

Questo cmdlet non fornisce opzioni reali per manipolare l’output. Salva semplicemente l’output esattamente come mostrato sulla console. Questo cmdlet è simile a una trascrizione di PowerShell che scrive tutto direttamente su un file di testo.

I Add-Content o i cmdlet Set-Content avranno sempre maggiore flessibilità, ma se hai bisogno di un modo rapido per ottenere l’output di PowerShell in un file, Out-File è la strada da seguire.

Correlato: Set-Content: Il Modo di PowerShell per Scrivere su un File

Source:
https://adamtheautomator.com/out-file/