Loggare in più file con Powershell

In questo articolo vedremo come loggare l’output di uno script Powershell all’interno di più file. Per raggiungere questo scopo faremo uso dei diversi message stream che abbiamo già visto nel precedente articolo: do no use write-host cmdlet.

La presenza degli stream in un linguaggio che supporta il piping come Powershell è di rilevante importanza soprattutto per evitare che l’esecuzione dei comandi ricevano messaggi al posto dell’informazione reale che si aspettano. Se volete approfondire l’argomento vi consiglio il seguente articolo: http://blogs.technet.com/b/heyscriptingguy/archive/2014/03/30/understanding-streams-redirection-and-write-host-in-powershell.aspx

Nell’esempio che segue scriviamo in diversi file in base agli output che ci interessano:

  1. Log.txt per Write-Host e lo stream di Output (Write-Output);
  2. Warning.txt per lo stream di Warning (Write-Warning);
  3. Error.txt per lo stream di Error (Write-Error).

In particolare alla riga 16 e 18 inviamo l’output di Write-Warning e Write-Error verso lo stream Output. Tutti gli stream e le informazioni scritte in console tramite Write-Host, vengono scritte nel file Log.txt usando l’operatore “*>” quando richiamiamo lo script (riga 24).

La magia per scrivere negli altri file invece viene fatta usando il Tee-Object, che si memorizza i risultati delle righe 16 e 18 e li scrive nei relativi file.

 

Maggiori info sulla redirezione: https://technet.microsoft.com/it-it/library/Hh847746.aspx

Maggiori info su Tee-Object: https://technet.microsoft.com/en-us/library/hh849937.aspx

Comments are closed.