PowerShell: una guida completa – parte 2a

Benvenuti alla parte 2 di 3 di PowerShell: una guida completa. Clicca i seguenti link per consultare la parte 1 e la parte 3. In questo post introdurremo l’importazione e l’esportazioni dei dati da e verso la Shell.

Importare dati in PowerShell

PowerShell supporta un grande numero di data format che possono essere importati. Questo consente agli amministratori di eseguire comandi sui dati inseriti. Ci sono due comandi chiave da imparare ad utilizzare, Get-Content e Import-csv. Il cmdlet Get-Content acquisisce il contenuto di un oggetto in una specifica location, solitamente testo o una stringa. Import-Csv crea un oggetto custom simil-tabella che utilizza dati e intestazioni presi da un file csv. Puoi ottenere maggiori informazioni digitando get-help get-content -full e get-help import-csv -full

Per dimostrare queste funzionalità  utilizzeremo il nostro laboratorio di test The Solving 2012 R2. Abbiamo creato un file di testo con gli hostname dei server e lo abbiamo salvato nel percorso C:\Temp\Test.txt

test file - hostnames

Digita Get-Content C:\TEMP\Test.txt  – Powershell importerà  il contenuto.

Get-Content test.txt

Ora che abbiamo i dati nella Shell possiamo iniziare ad utilizzarli.

Digita Get-Content C:\Temp\test.txt | ForEach-Object {Get-WMIObject -class win32_processor} | FT – Autosize

Questo comando restituisce i dettagli della CPU dei server in test.txt. Il comando introduce diversi concetti chiave per comprendere l’importazione dati in Powershell:

  • Il comando Get-WMIObject -class win32_processor raccoglie le informazioni della CPU.
  • Il cmdlet ForEach-Object applicherà  il comando Get-WMIObject ad ogni hostname nella lista test.txt.
  • Le parentesi { } che racchiudono il comando {Get-WMIObject -class win32_processor} informano PowerShell di far girare Get-WMIObject -class win32_processor per ogni linea di testo C:\Temp\test.txt.
  • La parte finale | FT -Autosize introduce la restituzione dei dati (output) di PowerShell, FT è un alias di Format-Table mentre il parametro -autosize fa in modo che la shell mostri le informazioni in modo leggibile.

Come sempre, possiamo spingerci anche oltre. Il risultato di cui sopra potrebbe non contenere tutte le informazioni di cui abbiamo bisogno sui processori.

Digita Get-content C:\TEMP\test.txt | ForEach-Object {Get-WmiObject -class win32_processor} | Get-member

 

win32_processor expanded

Puoi ora modificare il comando alla ricerca di specifiche informazioni di cui necessiti.

Ad esempio Get-content C:\TEMP\test.txt | ForEach-Object {Get-WmiObject -class win32_processor} | Select-Object Name, socketdesignation, numberofcores, number
oflogicalprocessors, L2cachesize, l3cachesize | Format-table -AutoSize

win32_processor expanded

Esportare dati da PowerShell

Abbiamo già  visto brevemente come visualizzare i dati da PowerShell utilizzando il cmdlet Format-Table. Sono disponibili molti altri formati fra cui i più utilizzati sono:

  • Format-List – Il formato di default di PowerShell, per l’output della pipeline. Ecco un esempio:

Digita Get-content C:\TEMP\test.txt | ForEach-Object {Get-WmiObject -class win32_processor} | Select-Object Name, socketdesignation, numberofcores, number
oflogicalprocessors, L2cachesize, l3cachesize | Format-list

Format-List

  • Export-CSV – PowerShell può esportare i dati direttamente in CSV (Comma Separated Values) – un’ottima soluzione per un report.

Digita Get-content C:\TEMP\test.txt | ForEach-Object {Get-WmiObject -class win32_processor} | Select-Object Name, socketdesignation, numberofcores, number
oflogicalprocessors, L2cachesize, l3cachesize | Export-CSV C:\TEMP\Test.csv

Quindi apri il CSV file presente in C:\TEMP\Test.csv

Export-CSV

  • Convertto-HTML – Powershell può esportare i dati direttamente in HTML e puoi anche importare attributi CSS per report accattivanti graficamente.

Digita Get-content C:\TEMP\test.txt | ForEach-Object {Get-WmiObject -class win32_processor} | Select-Object Name, socketdesignation, numberofcores, number
oflogicalprocessors, L2cachesize, l3cachesize | ConvertTo-Html > C:\Temp\test.html

Convertto-HTML

  • Output Everything! – Puoi perfino chiedere a PowerShell di mostrate tutto ciò che è presente nella pipeline. Aggiungi semplicemente -property * al comando

Digita Get-content C:\TEMP\test.txt | ForEach-Object {Get-WmiObject -class win32_processor} | Format-List-Property *

Format-List -property *

Nella terza parte di PowerShell: una guida completa introdurremo degli esempi pratici di script PowerShell per amministratori IT. Parliamo di soluzioni utili per operare con Active Directory, filesystem e molto altro.

Read related articles