Lo script può essere scaricato dal seguente link
DOWNLOAD
FIG 1 - Script PowerShell PingHost2Excel |
La prima istruzione consiste nell'assegnare alla variabile $path il nome del file, comprensivo di percorso, contenente l'elenco delle workstation da verificare. Il contenuto del file sarà simile a quello mostrato in FIG 2: ogni riga contiene il nome della postazione da verificare.
FIG 2 - Elenco Workstation da verificare |
Successivamente con Test-Path verifichiamo se il file è presente, in caso contrario terminiamo lo script visualizzando il messaggio di file non trovato
$path = ".\ElencoWKS.txt" if (Test-Path $path)
Se il file contenente l'elenco delle workstation viene trovato procediamo alla creazione di un nuovo documento MS Excel e a posizionarci sul primo foglio di lavoro.
$objExcel = new-object -comobject excel.application $objWorkbook = $objExcel.Workbooks.Add() $objWorksheet = $objWorkbook.Worksheets.Item(1)Con la seguente istruzione facciamo in modo che il documento MS Excel sia visibile a video durante la compilazione.
$objExcel.Visible = $True
La prima riga del foglio di lavoro la utilizziamo come intestazione assegnando un nome a ciascuna colonna in base al contenuto che andremo successivamente ad inserire.
$objWorksheet.Cells.Item(1, 1) = "Nome Host" $objWorksheet.Cells.Item(1, 2) = "Ping" $objWorksheet.Cells.Item(1, 3) = "Indirizzo IP"
Nella variabile $wks andiamo a caricare l'elenco delle postazioni da analizzare. La variabile $row viene inizializzata a 2 (nella prima riga del foglio di lavoro abbiamo inserito l'intestazione) e verrà utilizzata per spostarci alla riga successiva man mano che verranno analizzate/inserite le workstation in elenco.
$wks= gc $path $row=2La parte più importante dello script è rappresentata dal ciclo foreach-object: per ogni postazione presente in elenco provvede ad inserire, all'interno del file MS Excel, il nome della postazione, l'esito del ping (OK se andato a buon fine o KO nel caso in cui non si riceve risposta) e l'eventuale indirizzo IP della postazione.
$wks| foreach-object{ $ping=$null $workstation = $_ $ping = Test-Connection $workstation -Count 1 -ea silentlycontinue $objWorksheet.Cells.Item($row,1) = $workstation if($ping){ $objWorksheet.Cells.Item($row,2) = "OK" $objWorksheet.Cells.Item($row,3) = $ping.IPV4Address.IPAddressToString } else { $objWorksheet.Cells.Item($row,2) = "KO" $objWorksheet.Cells.Item($row,3) = "-" } $row++ }
FIG 3 - Foglio MS Excel con i risultati della verifica |