Articles

PowerShell Basics: Out-File cmdlet, -Append, -NoClobber con esempi di codice

Posted on

PowerShell scrive su file di testo con: Out-File

Vedere l’output di uno script sullo schermo va benissimo, ma spesso è più conveniente dire a PowerShell di scrivere l’output in un file di testo. Questo è un compito per Out-File.

Qui abbiamo un’istruzione PowerShell che puoi semplicemente imbullonare ad uno script esistente. ….. | Out-File “Filename.txt”. Per inciso, la semplicità di Out-File è una ragione per utilizzare PowerShell invece di VBScript.

Temi per PowerShell Output to File

  • Introduzione a Out-File
  • Ricerca Out-File con Get-Help
  • Esempio 1 – Iniziare con Out-File
  • Esempio 2 – Mettere Out-File al lavoro
  • Esempio 3 – Altri parametri (-Append e -NoClobber)

Introduzione a Out-File

Scrivere i risultati di un comando in un file è facile con Out-File di PowerShell. Il pericolo più grande è il ‘pensare troppo’; basta ricordare che PowerShell si occupa automaticamente delle operazioni di base sui file. Di conseguenza, non c’è bisogno di perdere tempo a cercare comandi open-file o save-file inesistenti. Se il file specificato da Out-File non esiste già, PowerShell lo crea addirittura per te.

Questa cmdlet funziona in modo ingannevolmente semplice; assumendo che la prima parte dello script fornisca i risultati, basta reindirizzare l’output a un file con un comando come:
… comando PowerShell principale | Out-File C:\ logs\result1.txt.

Esempio 1 – Iniziare con Out-File

Questo esempio è progettato per concentrarsi sul comando Out-File. Infatti, prima passiamo all’esempio 2, prima possiamo fare del vero lavoro.

# PowerShell write to text fileGet-ChildItem "C:\Windows\System32" | Out-File "D:\Files\Sys32.txt"

Nota 1: Mentre Out-File crea il file, devi assicurarti che il percorso esista perché Out-File non può creare cartelle. In questo caso, potreste voler cambiare D: \Files a una cartella esistente sulla tua macchina.

Esempio 2 – Mettere Out-File al lavoro

Questo esempio ha caratteristiche extra, che rendono lo script più utile. Grazie al parametro -recurse, lo script è progettato per andare a fondo nelle sottodirectory. Il punto interrogativo ‘?’ introduce un’istruzione ‘Where-Object’, il suo scopo è quello di filtrare solo i file dll. In questo esempio l’output contiene solo le due proprietà del file che ci interessano: Name e CreationTime.

Nota 3: Il parametro -filepath è opzionale. Se ometti -filepath, l’intelligenza di PowerShell deduce dalla sequenza di comandi che “D:\Files\dll.txt” è il posto dove salvare il file. Se non ci sono spazi nel percorso, allora puoi anche omettere i segni di parola.

Nota 4: Se ottieni un messaggio di errore ‘Cannot find part of the path’, allora modifica D:

Nota 5: Ho provato a non usare il simbolo di backtick `, invece ho terminato la linea 2 con il simbolo di pipe |. Come risultato PowerShell capisce che il comando continua sulla linea successiva.

Miglioramenti:

  1. Si potrebbe modificare gci “C:\Windows\System32” -Recurse -ErrorAction SilentlyContinue
  2. Se potesse essere utile aggiungere: Invoke-Item “D:\Files\dll.txt”

Guy Recommends: Network Performance Monitor (FREE TRIAL)

SolarWinds Network Performance Monitor (NPM) ti aiuterà a scoprire cosa sta succedendo sulla tua rete. Questa utility vi guiderà anche attraverso la risoluzione dei problemi; il dashboard indicherà se la causa principale è un collegamento interrotto, attrezzature difettose o sovraccarico di risorse.

Quello che mi piace di più è il modo in cui NPM suggerisce soluzioni ai problemi di rete. Ha anche la capacità di monitorare la salute delle singole macchine virtuali VMware. Se siete interessati alla risoluzione dei problemi e alla creazione di mappe di rete, allora vi consiglio di provare NPM in prova gratuita per 30 giorni.

SolarWinds Network Performance Monitor Download 30-day FREE Trial

Ricerca di file con Get-Help

Una volta che un comando funziona e mi piace, voglio saperne di più. Get-Help rivela sempre almeno un parametro che avevo dato per scontato, dimenticato, o precedentemente trascurato, così è con la scrittura su file di testo di PowerShell.

Clear-HostGet-Help Out-File -full

Nota 2: funziona anche Help Out-File -full. Siate consapevoli che non c’è bisogno di una pipe (|) con help.

Se aggiungete lo switch -full, allora l’aiuto di PowerShell rivela parametri utili, per esempio, -filepath (dato per scontato) -Append (dimenticato) -NoClobber (precedentemente trascurato).

Vedi altri esempi di output di PowerShell su file”

Esempio 3 – Altri parametri (-Append e -NoClobber)

Se esegui lo script per una seconda volta, hai notato come Out-File sovrascrive le informazioni? Se la vostra intenzione era di aggiungere dati alla fine del file, allora una soluzione sarebbe quella di sostituire Out-File con add-Content. Tuttavia, a causa della formattazione superiore, preferisco attenermi a Out-File e aggiungere il parametro -Append.

PowerShell Out-File -Append

Out-File può essere vizioso in quanto sovrascrive il file. Fortunatamente, Out-File ha il parametro -Append in modo da poter semplicemente aggiungere i dati alla fine delle voci esistenti.

# PowerShell Out-File -Append$File ="C:\PowerShell\Processes.txt"Get-Date | Out-File $FileGet-Process | Out-File $File -Append

Nota 6: Si potrebbe aggiungere un altro -Append alla fine della linea Get-Date.

Un altro esempio di -Append

| Out-File -Filepath "D:\Files\dll.txt" -Append

PowerShell -NoClobber

Cosa può significare ‘No Clobber’? Hai perso i vestiti? Non è così, NoClobber significa non sovrascrivere il file. Mi sembra che incorporereste il -NoClobber in circostanze in cui la vostra intenzione era di salvare molti file con nomi leggermente diversi, e non volevate rischiare di perdere il loro contenuto sovrascrivendo.

| Out-File -filepath "D:\Files\dll June.txt" -NoClobber

Nota 7: Se insistete nell’eseguire nuovamente lo script, il parametro -NoClobber fa sì che PowerShell generi un messaggio di errore e quindi protegge il file originale dall’essere sostituito.

Invoke-Item è una tecnica utile

Vedi di più su Invoke-Item “

Raccomandato: SolarWinds Permissions Analyzer for Active Directory (FREE TOOL)

Mi piace Permissions Analyzer for Active Directory perché mi permette di vedere a colpo d’occhio CHI ha il permesso di fare COSA. Quando si lancia questo strumento, analizza i permessi NTFS effettivi di un utente per un file o una cartella specifica, e tiene conto dell’accesso alla condivisione di rete, quindi visualizza i risultati in un’elegante dashboard sul desktop!

Pensate a tutta la frustrazione che questa utility gratuita di SolarWinds vi risparmia quando dovete risolvere i problemi di autorizzazione per l’accesso di un utente a una risorsa. Provate questo monitoraggio dei permessi – è gratuito!

SolarWinds Permissions Analyzer for Active Directory Download 100% FREE Tool

La famiglia Content di PowerShell

Out-File è un membro onorario della famiglia ‘Content’, ecco i comandi cugini. Non uso spesso questi altri comandi perché non formattano i dati come vorrei.

Add-Content (Appends)
Clear-Content
Get-Content
Set-Content (Replace existing content)

Out-Printer Cmdlet

Out-File ha un comando sorella chiamato out-Printer. Se provi:
Help out-Printer

Allora puoi vedere che non hai bisogno di specificare il nome della stampante, PowerShell seleziona automaticamente la stampante predefinita, proprio come faresti per stampare da qualsiasi altra applicazione.

Potresti sperimentare sostituendo out-Printer con uno qualsiasi dei comandi Out-File di cui sopra

Out-GridView

Con PowerShell v 2.0 puoi fare output su una GridView.

Export-Csv anche Import-Csv

I fogli di calcolo sono un veicolo conveniente per importare ed esportare oggetti in Active Directory. Iniziate aggiungendo export-Csv agli script QAD che elencano utenti o computer.

Guy Recommends: SolarWinds Admin Bundle for Active Directory (FREE TOOL)

Importa gli utenti da un foglio di calcolo. Basta fornire un elenco di utenti con i loro campi nella riga superiore e salvare come file .csv. Poi lancia questa utility GRATUITA e abbina i tuoi campi agli attributi di AD, clicca e importa gli utenti.

Opzionalmente, puoi fornire il nome della OU dove nasceranno i nuovi account. Scarica il tuo strumento GRATUITO per l’importazione di massa.

SolarWinds Admin Bundle Download 100% FREE Tool Bundle

Se hai bisogno di un software di analisi delle applicazioni più completo, scarica una prova gratuita di SAM (Server & Application Monitor)

Una tecnica diversa: PowerShell Redirection

In molti modi questa è la tecnica più semplice. Basta aggiungere il segno maggiore di >. Tuttavia, la ragione principale per reindirizzare l’output di un comando PowerShell è quando si desidera registrare messaggi di errore o avvertimenti.

Get-Service > D:\PShell\Services.txt

Nota 8: Questo è lo stesso di Get-Service | Out-File D:\PShell\Services.txt

La ragione principale per usare questa tecnica è se vuoi reindirizzare i messaggi di avviso, per esempio vuoi vedere se un servizio jkl esiste:

Get-Service jkl 2> D:\PShell\Services.txt

Nota 9: Il comando di reindirizzamento chiave è 2>

Vedi altro su PowerShell 3.0 Redirection”

Sommario del comando Out-File di PowerShell

Fidati di me; farai grande uso della capacità di PowerShell di scrivere su file di testo. Out-File è il comando perfetto per convogliare i risultati in un file di testo. Questo è un comando semplice da imbullonare alle cmdlets esistenti. Il pericolo principale per i neofiti è la ricerca di comandi inesistenti; ricorda che PowerShell si occupa sia di aprire che di chiudere il file nominato.

Footnote:
Grazie a Danny Beaman per aver corretto 3 errori in questa pagina.

Vedi altri tutorial sui file Microsoft PowerShell:

– PowerShell Home – Add-Content – Get-Content – Set-Content – PowerShell -Filter – Test-Path

– PowerShell Get-ChildItem – Get-ChildItem -Include – Get-ChildItem -Exclude – Compare-Object

– PowerShell Registry – Get-Credential – PowerShell ItemProperty – PowerShell ItemPropery GCI

Si prega di inviarmi un’email se hai uno script di esempio migliore. Inoltre vi prego di segnalare qualsiasi errore fattuale, errori grammaticali o link non funzionanti, sarò felice di correggere l’errore.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *