Visualizzazione post con etichetta Internet Control Message Protocol. Mostra tutti i post
Visualizzazione post con etichetta Internet Control Message Protocol. Mostra tutti i post

martedì 2 agosto 2016

PowerShell: Verificare la presenza e raggiungibilità di un host in rete tramite Test-Connection

Chi lavora nel campo IT spesso utilizza l'utility Ping per verificare la presenza e raggiungibilità di un Host all'interno della rete. Il ping consiste nell'invio di un pacchetto ICMP (Internet Control Message Protocol) di tipo echo request e attendere in risposta un pacchetto ICMP di tipo echo reply.

Una funzione analoga in PowerShell può essere eseguita tramite il cmdlet Test-Connection. La sintassi del cmdlet è la seguente:

Test-Connection [-ComputerName] <String[]> [-AsJob] [-Authentication <AuthenticationLevel> {Default | None | Connect | Call | Packet | PacketIntegrity | PacketPrivacy | Unchanged} ] [-BufferSize <Int32> ] [-Count <Int32> ] [-Delay <Int32> ] [-Impersonation <ImpersonationLevel> {Default | Anonymous | Identify | Impersonate | Delegate} ] [-InformationAction <System.Management.Automation.ActionPreference> {SilentlyContinue | Stop | Continue | Inquire | Ignore | Suspend} ] [-InformationVariable <System.String> ] [-ThrottleLimit <Int32> ] [-TimeToLive <Int32> ] [ <CommonParameters>]


Parametri principali


-AsJob
Il parametro esegue il comando in background. Per poter utilizzare tale parametro è necessario eseguire PowerShell come amministratore

-Authentication<AuthenticationLevel>
Specifica il livello di autenticazione della connessione WMI (Test-Connection usa WMI). I valori accettati sono: UnchangedDefaultNoneConnectCallPacketPacketIntegrityPacketPrivacy

-BufferSize
Specifica la dimensione, in byte, del pacchetto inviato. Di default la dimensione è 32 byte.

-ComputerName
Si tratta di un parametro obbligatorio e consente di specificare il nome del computer da pingare o il suo indirizzo IP (in formato IPv4 o IPv6).

-Count
Specifica il numero di pacchetti/richieste da inviare. Di default vengono inviati 4 pacchetti.

-Credential
Specifica le credenziali dell'utente autorizzato ad inviare il ping dal computer specificato da -Source.

-Delay
Specifica l'intervallo, in secondi, tra i ping.

-Quiet
Specificando tale parametro verrà restituivo $true se l'host ha risposto al ping, $false in caso contrario. Tutti gli altri messaggi di risposta vengono soppressi.

-Source
Permette di specificare il nome del computer da cui parte il ping. Se non specificato il ping ha origine dal computer locale. É possibile indicare anche più origini del ping separandole tramite virgola.

-TimeToLive
Il parametro TimeToLive (TTL) permette di specificare il tempo di vita, in secondi, del pacchetto ICMP. Il parametro accetta valori interi compresi tra 1 e 255.



Esempi


Esempio 1
Test-Connection Server01
Test-Connection -ComputerName 192.168.0.1
Questi due comandi eseguono il ping rispettivamente verso il computer con nome Server01 e verso l'indirizzo 192.168.0.1. Nel primo comando il parametro -ComputerName viene omesso e indicato direttamente il nome del computer.
Test-Connection -ComputeName
FIG 1 - Test-Connection -ComputeName

Esempio 2
Test-Conntection -ComputerName Server01, Server02
É possibile passare a Test-Connection più host a cui inviare il pacchetto ICMP separandoli tramite virgola.

Esempio 3
Test-Connection -ComputerName 192.168.0.1 -Quiet
Con il parametro Quiet si riceve in output True o False a seconda se si riceve risposta o meno dal computer remoto. Questa caratteristica ci consente di utilizzarlo per verificare la raggiungibilità di un determinato host prima di tentare una qualsiasi operazione. Ad es. 
if (Test-Connection -ComputerName Server01 -Quiet) {New-PSSession Server01}
Test-Connection, parametro -Quiet
FIG 2 - Test-Connection, parametro -Quiet

Esempio 4
Test-Connection -Source Server02, Server03 -ComputerName Server01 -Credential Dominio\Utente
Questo comando invia ping da diversi mittenti/host ad un singolo computer Server01. Il parametro Credential viene utilizzato per specificare le credenziali di un utente che è abilitato all'invio di ping da Server02 e Server03. Questo comando può essere utile per verificare la latenza delle connessioni da diversi punti.