Test-Connection in PowerShell: guida completa al cmdlet

Ultimo aggiornamento: 14/08/2025
Autore: Isaac
  • Test-Connection offre test ping, traceroute, MTU e TCP con output strutturato.
  • En PowerShell 6/7 modifica la sintassi, restituisce i tipi e aggiunge parametri come -Traceroute e -Detailed.
  • Windows PowerShell 5.1 utilizza WMI e Win32_PingStatus con opzioni di autenticazione e impersonificazione.
  • -Quiet restituisce valori booleani, -Repeat esegue un'iterazione continua e -MtuSize calcola l'MTU del percorso.

Guida alla connessione di prova in PowerShell

Se lavori con le reti in Windows, Linux o macOS, prima o poi vorrai controllare se un host risponde e quanto è sano il percorso. Il cmdlet Test-Connection è il moderno coltellino svizzero per ping ICMP, traceroute, rilevamento MTU e test TCP da PowerShell., con output strutturato che può essere filtrato ed elaborato.

Inoltre, la storia del cmdlet ha due facce: Nel classico Windows PowerShell (5.1) si basava su WMI e restituiva Win32_PingStatus, mentre in PowerShell 6 e versioni successive il cmdlet è stato riprogettato ed esteso per essere multipiattaforma ed esporre oggetti specifici come PingStatus, TraceStatus o TcpPortStatus. Conoscere entrambe le famiglie di parametri e di output consente di effettuare diagnosi approfondite e precise..

Che cos'è Test-Connection e cosa risolve?

Test-Connection invia richieste di eco ICMP (ping) a una o più destinazioni e restituisce risposte; può anche tracciare il percorso (traceroute), calcolare il Path MTU e verificare se una porta TCP è accessibile. Rispetto al tradizionale eseguibile ping, Il cmdlet restituisce oggetti complessi che è possibile inoltrare, filtrare e convertire. a report o dashboard.

Nella sua versione moderna, il cmdlet aggiunge parametri come -Traceroute, -MtuSize, -TcpPort, -Repeat, -TimeoutSeconds, -IPv4/-IPv6 e -Detailed (quest'ultimo a partire da PowerShell 7.4 per suddividere i tentativi TCP). Con -Quiet puoi limitare l'output ai valori booleani per destinazione per decisioni rapide negli script.

Negli ambienti in cui in precedenza venivano combinati ping, tracert, nslookup o telnet, PowerShell fornisce opzioni native per coprire praticamente tutte le diagnosi di connettività da un unico strumento.E se preferisci un altro approccio, c'è Test-NetConnection per controlli di rete combinati, ma questo articolo si concentra sulla compressione di Test-Connection.

Modifiche principali: Windows PowerShell 5.1 vs PowerShell 6/7

L'evoluzione del cmdlet si articola in due fasi ben distinte. In Windows PowerShell 5.1 e versioni precedenti, il cmdlet utilizza WMI e restituisce Win32_PingStatus; espone parametri quali -ComputerName, -AsJob, -DcomAuthentication, -Impersonation, -Protocol, -ThrottleLimit, -TimeToLive (TTL) e -WsmanAuthentication, tra gli altri.

Con il passaggio a PowerShell 6+, Il cmdlet è stato riscritto per essere multipiattaforma e la sua API è stata modificata: ora viene utilizzato -TargetName (invece di -ComputerName), vengono visualizzati i set di parametri Ping/Repeat/Traceroute/MtuSize/TcpPort, gli output sono tipi specifici come PingStatus, TraceStatus, PingMtuStatus o TcpPortStatus, e -TimeoutSeconds, -ResolveDestination e -Detailed (7.4) arrivano per TCP.

Questo implica che, Se si scrivono script portabili, è necessario rilevare la versione e regolare i parametri e l'elaborazione. output. Un'opzione è quella di coprire entrambi i mondi con rami condizionali ($PSVersionTable.PSVersion.Major).

Sintassi moderna e set di parametri (PowerShell 6+)

Il cmdlet offre diversi set di parametri che attivano diverse modalitàEcco una panoramica delle opzioni principali:

  • Ping predefinito: Test-Connection
  • Ripeti ping: Test-Connection -Ripetere
  • traceroute: Test-Connection -Traceroute
  • MtuSizeDetect: Test-Connection -MtuSize
  • Porta TCP: Test-Connection -Porta TCP
  Cipher.exe su Windows: utilizzo nel mondo reale, crittografia dettagliata dei file ed eliminazione sicura

In tutte le modalità, -TargetName è obbligatorio e accetta nomi DNS o indirizzi IPv4/IPv6L'output predefinito in ping è una sequenza di oggetti PingStatus, uno per echo.

Sintassi ed esempi dei cmdlet

Sintassi classica (Windows PowerShell 5.1)

Altre firme vengono utilizzate negli ambienti Windows PowerShell 5.1., con -ComputerName come parametro centrale e diverse opzioni di autenticazione WMI:

  • Predefinito: Test-Connection
  • Fonte: Test-Connection
  • Tranquillo: Test-Connection

In questo caso, L'output predefinito è ManagementObject Win32_PingStatuse con -AsJob viene restituito un oggetto job (System.Management.Automation.RemotingJob).

Parametri moderni, spiegati uno per uno

-NomeDestinazione: destinazioni da testare, supporta nomi e indirizzi IPv4/IPv6; posizione 0 e obbligatoria; accetta la canalizzazione per valore e per nome di proprietà.

-Ping: Forza la modalità ping ICMP; questo è il comportamento predefinito, quindi solitamente viene ignorato a meno che non venga combinato specificatamente.

-Ripetere: invia ping continuamente; Se fornisci più destinazioni, ripeti solo sulla prima e salta le altre; incompatibile con -Count nel ping.

-Traceroute: Traccia il percorso verso la destinazione restituendo oggetti TraceStatus per ogni salto; da PowerShell 6 e supporta -ResolveDestination per i nomi DNS intermedi.

-MtuSize: rileva il percorso MTU verso la destinazione, restituendo PingMtuStatus con la dimensione MTU effettiva; utile in combinazione con -DontFragment e -BufferSize.

-Porta TCP: tenta di aprire una connessione TCP alla porta specificata sulla destinazione; restituisce $true o $false (e con -Dettagli in 7.4, oggetti TcpPortStatus con latenze e informazioni per tentativo).

-Contare: numero di richieste di eco; per impostazione predefinita 4 in ping e valido anche con TcpPort.

-Ritardo: secondi tra i tentativi; utile per la congestione o per test prolungati.

-DimensioneBuffer: byte di carico utile; 32 per impostazione predefinita; impostato insieme a -DontFragment per il test MTU.

-NonFrammentare: imposta il flag di non frammentazione su IP; chiave per la scoperta del percorso MTU.

-IPv4 / -IPv6: forza l'utilizzo del protocollo IP; utile su host dual-stack o quando ci sono problemi di risoluzione.

-MaxHops: numero massimo di salti consentiti; 128 per impostazione predefinita su Windows 10+.

-RisolviDestinazione: tenta di risolvere il nome DNS di destinazione e, accanto a -Traceroute, anche host intermedi se possibile.

-Fonte: origine della spedizione (attrezzatura) quando applicabile; per impostazione predefinita il locale, utile negli scenari multi-origine.

-Silenzioso: sopprime gli errori e restituisce valori booleani in base alla destinazione; $true se arriva almeno un ping, $false se tutti falliscono.

-TimeoutSecondi: tempo massimo di attesa per la risposta; 5 secondi per impostazione predefinita; disponibile da PowerShell 6.

-Dettaglio: nei test TCP (-TcpPort), restituisce TcpPortStatus con ID, direzione, latenza, connesso e stato; integrato in PowerShell 7.4.

Parametri e opzioni classici (Windows PowerShell 5.1)

-NomeComputer: destinazioni da testare; obligatorio e non dipende dalla comunicazione remota di PowerShell.

  Come disattivare la modalità aereo in Windows 11

-Come Lavoro: esegue il cmdlet in background; restituisce un oggetto di lavoro recuperabile con Receive-Job per non bloccare la sessione.

-Autenticazione Dcom: Livello di autenticazione COM utilizzato con WMI; valori accettati Predefinito, Nessuno, Connetti, Chiama, Pacchetto, PacketIntegrity, PacketPrivacy, Invariato (Pacchetto predefinito).

-Impersonificazione: Livello di rappresentazione WMI; valori Predefinito, Anonimo, Identifica, Impersona, Delega (per impostazione predefinita Impersona).

-Protocollo: protocollo per WMI; DCOM o WSMan in base alla configurazione.

-WsmanAuthentication: Meccanismo di autenticazione quando si utilizza WSMan; supporta Predefinito, Base, Negozia, CredSSP, Digest, Kerberos.

-Limite dell'acceleratore: numero massimo di connessioni simultanee per il comando; per impostazione predefinita 32.

-Tempo di vita (TTL): numero massimo di reinvii prima di scartare il pacchetto; 128 per impostazione predefinita su Windows (alias TTL).

-Fonte e -Credenziale: per inviare ping da altre fonti con credenziali appropriate, particolarmente utile per confrontare la latenza da diverse posizioni.

Esempi pratici con PowerShell 6/7

Ping IPv4 di base a un server specifico e analisi dell'output PingStatus:

Test-Connection -TargetName Server01 -IPv4

Esegui il ping di più destinazioni con un singolo comando con una serie di nomi:

Test-Connection -TargetName Server01, Server02, Server12

Personalizza conteggio, ritardo, hop e dimensione del buffer quando la rete è caricata:

Test-Connection -TargetName Server01 -Count 3 -Delay 2 -MaxHops 255 -BufferSize 256

Esegui come processo in background Lettura delle destinazioni da un file e attesa dei risultati:

$job = Start-Job -ScriptBlock { Test-Connection -TargetName (Get-Content -Path 'Servers.txt') }
$results = Receive-Job $job -Wait

Crea una PSSession solo se c'è connettività almeno in un'eco:

if (Test-Connection -TargetName Server01 -Quiet) {
  New-PSSession -ComputerName Server01
}

Scopri il percorso con traceroute e restituire TraceStatus per hop:

Test-Connection -TargetName www.google.com -Traceroute

Test TCP dettagliato (PowerShell 7.4) per una tipica porta TLS:

Test-Connection bing.com -TcpPort 443 -Detailed -Count 4

Esempi pratici con Windows PowerShell 5.1

Ping semplice a un computer remoto con output Win32_PingStatus:

Test-Connection -ComputerName Server01

Ping di più server dalla squadra di casa:

Test-Connection -ComputerName Server01, Server02, Server12

Effettua il ping di una destinazione da più fonti con credenziali per confrontare le latenze:

Test-Connection -Source Server02, Server12, localhost -ComputerName Server01 -Credential (Get-Credential)

Personalizza intenti, TTL, buffer e concorrenza in reti estese:

Test-Connection -ComputerName Server01 -Count 3 -Delay 2 -TTL 255 -BufferSize 256 -ThrottleLimit 32

Esegui come processo in background e raccogliere i risultati una volta terminato:

$job = Test-Connection -ComputerName (Get-Content 'Servers.txt') -AsJob
if ($job.JobStateInfo.State -ne 'Running') {
  $results = Receive-Job $job
}

Ping con credenziali e impersonificazione regolazione del livello di impersonificazione:

Test-Connection Server55 -Credential (Get-Credential) -Impersonation Identify

Usa output booleano per decisioni rapide negli script:

if (Test-Connection -ComputerName Server01 -Quiet) { New-PSSession Server01 }

Input e output dei cmdlet

Biglietti: Nella versione moderna, gli oggetti non vengono inoltrati direttamente al cmdlet; Sono accettati i valori dei parametri standard (TargetName supporta il piping per valore o per nome di proprietà.)

  Scopri come riparare il laptop bloccato sul display CTRL ALT DELETE

Risultati in PowerShell 6/7:

  • Microsoft.PowerShell.Commands.TestConnectionCommand+PingStatus: un oggetto per risposta ICMP.
  • Microsoft.PowerShell.Commands.TestConnectionCommand+TraceStatus: un oggetto per salto con -Traceroute.
  • Microsoft.PowerShell.Commands.TestConnectionCommand+PingMtuStatus: con -MtuSize per Path MTU.
  • Booleano: con -Quiet o -TcpPort (array se ci sono più destinazioni).
  • Microsoft.PowerShell.Commands.TestConnectionCommand+TcpPortStatus: con -Dettagli per TCP in 7.4.

Risultati in Windows PowerShell 5.1:

  • ManagementObject (Win32_PingStatus): per ogni eco.
  • Booleano: quando si utilizza -Quiet.
  • System.Management.Automation.RemotingJob: se eseguito con -AsJob.

Note e funzionalità multipiattaforma

Linux e permessi: quando si utilizza -BufferSize diverso da 32 o combinazioni con -MtuSize che modificano la dimensione predefinita, potrebbe essere necessario sudoIn tal caso, il cmdlet genera un'eccezione che indica che sono richiesti privilegi.

Silenzioso e gestione degli errori: -Quiet restituisce valori booleani e rimuove gli errori; ricorda che con più destinazioni l'uscita è una matrice di valori in ordine di valutazione.

Ripeti vs Conta: non mescolare -Ripeti con -Conteggio nel ping; -Repeat ignora le destinazioni aggiuntive e ripete solo la primaPer più destinazioni con ripetizione, richiamare il cmdlet per ciascuna di esse.

Risolvi i nomi: -ResolveDestination aggiunge la risoluzione DNS della destinazione e con -Traceroute, prova a risolvere ogni salto; utile per mappare i dispositivi intermedi.

Compatibilità: sì, tu copione dovrebbe funzionare su Windows PowerShell 5.1 e PowerShell 6/7, rileva la versione e utilizza -ComputerName o -TargetName di conseguenzae regola l'interpretazione dell'output.

Test-Connection e la sua relazione con Test-NetConnection

Prima di Test-NetConnection, utilità come ping, tracert, nslookup o telnet venivano combinate per diagnosticare la connettività. Con PowerShell v4 è arrivato Test-NetConnection, che centralizza i test ICMP e TCP e traccia anche i percorsi con un singolo cmdlet.

Eppure, Test-Connection copre scenari approfonditi con oggetti più specifici per test ICMP, MTU, traceroute e TCP moderni. È possibile integrarlo con Test-NetConnection quando si necessita di un controllo rapido e completo.

Esempi di Test-NetConnection per confrontare i comportamenti:

# Chequeo general con más detalle
Test-NetConnection -InformationLevel Detailed

# Comprobar resolución y ruta hacia un host
Test-NetConnection -ComputerName google.com
Test-NetConnection -ComputerName google.com -TraceRoute

# Verificar un puerto TCP conocido
Test-NetConnection -ComputerName google.com -CommonTCPPort HTTP

# Especificar un puerto concreto
Test-NetConnection -ComputerName google.com -Port 80

Negli scenari in cui telnet non è più presente per impostazione predefinita, Questi cmdlet di PowerShell semplificano il controllo delle porte TCP e della connettività ICMP, aggiungendo metadati utili come l'interfaccia di output o l'indirizzo sorgente.

Dare priorità a una connessione di rete in Windows 11-6
Articolo correlato:
Come dare priorità a una connessione di rete in Windows 11: guida completa passo passo

Lascia un commento