- Το Test-Connection προσφέρει δοκιμές ping, traceroute, MTU και TCP με δομημένη έξοδο.
- En PowerShell Το 6/7 αλλάζει τη σύνταξη, τους τύπους επιστροφής και προσθέτει παραμέτρους όπως -Traceroute και -Detailed.
- Windows Το PowerShell 5.1 χρησιμοποιεί WMI και Win32_PingStatus με επιλογές ελέγχου ταυτότητας και απομίμησης.
- Η -Quiet επιστρέφει booleans, η -Repeat επαναλαμβάνει συνεχώς και η -MtuSize υπολογίζει την MTU διαδρομής.
Εάν εργάζεστε με δίκτυα σε Windows, Linux ή macOS, αργά ή γρήγορα θα θελήσετε να ελέγξετε αν ένας κεντρικός υπολογιστής αποκρίνεται και πόσο εύρυθμη είναι η διαδρομή σύνδεσης. Το cmdlet Test-Connection είναι ο σύγχρονος ελβετικός σουγιάς για ping ICMP, traceroute, ανίχνευση MTU και δοκιμές TCP από το PowerShell , με δομημένη έξοδο που μπορεί να φιλτραριστεί και να υποβληθεί σε επεξεργασία.
Επιπλέον, το ιστορικό του cmdlet έχει δύο όψεις: στο κλασικό Windows PowerShell (5.1), βασιζόταν στο WMI και επέστρεφε το Win32_PingStatus , ενώ στο PowerShell 6 και σε νεότερες εκδόσεις, το cmdlet επανασχεδιάστηκε και επεκτάθηκε ώστε να είναι cross-platform και να εκθέτει συγκεκριμένα αντικείμενα όπως PingStatus, TraceStatus και TcpPortStatus. Η κατανόηση τόσο των συνόλων παραμέτρων όσο και των εξόδων επιτρέπει την ενδελεχή και ακριβή διάγνωση.
Τι είναι το Test-Connection και τι λύνει;
Η λειτουργία Test-Connection στέλνει αιτήματα ICMP echo (ping) σε έναν ή περισσότερους προορισμούς και επιστρέφει τις απαντήσεις . Μπορεί επίσης να εντοπίσει τη διαδρομή, να υπολογίσει την MTU της διαδρομής και να ελέγξει εάν μια θύρα TCP είναι προσβάσιμη. Σε αντίθεση με το παραδοσιακό εκτελέσιμο αρχείο ping, αυτό το cmdlet επιστρέφει rich objects (εμπλουτισμένα αντικείμενα) τα οποία μπορείτε να διοχετεύσετε, να φιλτράρετε και να μετατρέψετε σε αναφορές ή dashboards.
Στη σύγχρονη έκδοσή του, το cmdlet προσθέτει παραμέτρους όπως -Traceroute, -MtuSize, -TcpPort, -Repeat, -TimeoutSeconds, -IPv4/-IPv6 και -Detailed (το τελευταίο προστέθηκε στο PowerShell 7.4 για την ανάλυση των προσπαθειών TCP). Με το -Quiet, μπορείτε να περιορίσετε την έξοδο σε booleans ανά προορισμό για γρήγορες αποφάσεις σε σενάρια.
Σε περιβάλλοντα όπου προηγουμένως συνδυάζατε ping, tracert, nslookup ή telnet, το PowerShell παρέχει εγγενείς επιλογές για την κάλυψη σχεδόν όλων των διαγνωστικών συνδεσιμότητας από ένα μόνο εργαλείο . Και αν προτιμάτε μια διαφορετική προσέγγιση, υπάρχει το Test-NetConnection για συνδυασμένους ελέγχους δικτύου, αλλά αυτό το άρθρο εστιάζει στην αξιοποίηση στο έπακρο του Test-Connection.
Βασικές αλλαγές: Windows PowerShell 5.1 έναντι PowerShell 6/7
Υπάρχουν δύο σαφή στάδια στην εξέλιξη του cmdlet. Στο Windows PowerShell 5.1 και σε παλαιότερες εκδόσεις, το cmdlet χρησιμοποιεί WMI και επιστρέφει Win32_PingStatus . Εκθέτει παραμέτρους όπως -ComputerName, -AsJob, -DcomAuthentication, -Impersonation, -Protocol, -ThrottleLimit, -TimeToLive (TTL) και -WsmanAuthentication, μεταξύ άλλων.
Με τη μετάβαση στο PowerShell 6+, το cmdlet ξαναγράφηκε για να είναι διαθέσιμο σε όλες τις πλατφόρμες και το API του άλλαξε : τώρα χρησιμοποιεί -TargetName (αντί για -ComputerName), εμφανίζονται τα σύνολα παραμέτρων Ping/Repeat/Traceroute/MtuSize/TcpPort, οι έξοδοι είναι συγκεκριμένοι τύποι όπως PingStatus, TraceStatus, PingMtuStatus ή TcpPortStatus , και περιλαμβάνονται τα -TimeoutSeconds, -ResolveDestination και -Detailed (7.4) για TCP.
Αυτό σημαίνει ότι αν γράφετε φορητά σενάρια, πρέπει να εντοπίσετε την έκδοση και να προσαρμόσετε τις παραμέτρους και την επεξεργασία εξόδου ανάλογα. Μια επιλογή είναι να καλύψετε και τους δύο κόσμους με υποθετικούς κλάδους ($PSVersionTable.PSVersion.Major).
Σύγχρονη σύνταξη και σύνολα παραμέτρων (PowerShell 6+)
Το cmdlet προσφέρει διάφορα σύνολα παραμέτρων που ενεργοποιούν διαφορετικές λειτουργίες . Ακολουθεί μια επισκόπηση των κύριων επιλογών του:
- Προεπιλεγμένο Ping: Δοκιμή σύνδεσης
- Επανάληψη Ping: Δοκιμή σύνδεσης -Επαναλαμβάνω
- Traceroute: Δοκιμή σύνδεσης -Τρέισερουτ
- MtuSizeDetect: Δοκιμή σύνδεσης -Μέγεθος MtuSize
- TcpPort: Δοκιμή σύνδεσης -TcpPort
Σε όλες τις λειτουργίες, απαιτείται η εντολή -TargetName και δέχεται ονόματα DNS ή διευθύνσεις IPv4/IPv6 . Η προεπιλεγμένη έξοδος στο ping είναι μια ακολουθία αντικειμένων PingStatus, ένα ανά echo.

Κλασική σύνταξη (Windows PowerShell 5.1)
Σε περιβάλλοντα Windows PowerShell 5.1, χρησιμοποιούνται άλλες υπογραφές , με την παράμετρο -ComputerName ως κεντρική παράμετρο και αρκετές επιλογές ελέγχου ταυτότητας WMI:
- Προεπιλογή: Δοκιμή σύνδεσης
- Πηγή: Δοκιμή σύνδεσης
- Αθόρυβο: Δοκιμή σύνδεσης
Σε αυτήν την περίπτωση, η προεπιλεγμένη έξοδος είναι ManagementObject Win32_PingStatus και με την εντολή -AsJob επιστρέφεται ένα αντικείμενο εργασίας (System.Management.Automation.RemotingJob).
Σύγχρονες παράμετροι, εξηγούμενες μία προς μία
-TargetName <string[]> : Στόχοι προς δοκιμή, υποστηρίζει ονόματα και διευθύνσεις IPv4/IPv6. Η θέση 0 είναι υποχρεωτική. Δέχεται διοχέτευση κατά τιμή και κατά όνομα ιδιότητας.
-Ping : επιβάλλει τη λειτουργία ping ICMP. Είναι η προεπιλεγμένη συμπεριφορά, επομένως συνήθως παραλείπεται εκτός από συγκεκριμένους συνδυασμούς.
-Επανάληψη : στέλνει pings συνεχώς. Εάν παρέχετε πολλαπλούς προορισμούς, επαναλαμβάνεται μόνο πάνω από τον πρώτο και παραλείπει τους υπόλοιπους . Δεν είναι συμβατό με το -Count στο ping.
-Traceroute : Εντοπίζει τη διαδρομή προς τον προορισμό, επιστρέφοντας αντικείμενα TraceStatus ανά βήμα· από το PowerShell 6 και συμβατό με το -ResolveDestination για ενδιάμεσα ονόματα DNS.
-MtuSize : ανιχνεύει τη διαδρομή MTU προς τον προορισμό, επιστρέφοντας το PingMtuStatus με το ενεργό μέγεθος MTU . χρήσιμο όταν συνδυάζεται με τις συναρτήσεις -DontFragment και -BufferSize.
-TcpPort <int> : επιχειρεί να ανοίξει μια σύνδεση TCP στη θύρα που καθορίζεται στον προορισμό· επιστρέφει $true ή $false (και με -Διευκρινίζεται στο 7.4, αντικείμενα TcpPortStatus με καθυστερήσεις και πληροφορίες ανά προσπάθεια).
-Count <int> : αριθμός αιτημάτων ηχούς. Προεπιλογή 4 στο ping και έγκυρο και με TcpPort.
-Delay <int> : δευτερόλεπτα μεταξύ των προσπαθειών· χρήσιμο για συμφόρηση ή παρατεταμένες δοκιμές.
-BufferSize <int> : ωφέλιμο φορτίο bytes; 32 από προεπιλογή ; προσαρμόζεται σε συνδυασμό με το -DontFragment για δοκιμές MTU.
-DontFragment : ορίζει τη σημαία μη κατάτμησης στην IP· κλειδί για την Ανακάλυψη MTU Διαδρομής.
-IPv4 / -IPv6 : επιβάλλει τη χρήση του πρωτοκόλλου IP. χρήσιμο σε κεντρικούς υπολογιστές διπλής στοίβας ή όταν υπάρχουν προβλήματα επίλυσης.
-MaxHops <int> : μέγιστος αριθμός επιτρεπόμενων αλμάτων· 128 από προεπιλογή στα Windows 10+.
-ResolveDestination : επιχειρεί να επιλύσει το όνομα DNS προορισμού και, μαζί με το -Traceroute, και τους ενδιάμεσους κεντρικούς υπολογιστές, εάν είναι δυνατόν.
-Source <string> : αποστολή πηγής (υπολογιστής) όταν εφαρμόζεται· από προεπιλογή η τοπική , χρήσιμη σε σενάρια πολλαπλών πηγών.
-Quiet : καταστέλλει τα σφάλματα και επιστρέφει λογικές τιμές κατά προορισμό. $true αν τουλάχιστον ένα ping είναι επιτυχές, $false αν όλα αποτύχουν.
-TimeoutSeconds <int> : μέγιστος χρόνος αναμονής ανά απόκριση· 5 δευτερόλεπτα από προεπιλογή · διαθέσιμο από το PowerShell 6.
-Λεπτομερής περιγραφή : Σε δοκιμές TCP (-TcpPort), επιστρέφει το TcpPortStatus με αναγνωριστικό, διεύθυνση, καθυστέρηση, σύνδεση και κατάσταση . Ενσωματωμένο στο PowerShell 7.4.
Κλασικές παράμετροι και επιλογές (Windows PowerShell 5.1)
-ΌνομαΥπολογιστή <string[]> : προορισμοί προς δοκιμή· απαιτείται και δεν εξαρτάται από την απομακρυσμένη λειτουργία PowerShell.
-AsJob : εκτελεί το cmdlet στο παρασκήνιο και επιστρέφει ένα ανακτήσιμο αντικείμενο εργασίας με την εντολή Receive-Job, ώστε να μην μπλοκάρει την περίοδο λειτουργίας.
-DcomAuthentication <AuthenticationLevel> : Επίπεδο ελέγχου ταυτότητας COM που χρησιμοποιείται με το WMI. Αποδεκτές τιμές: Προεπιλογή, Καμία, Σύνδεση, Κλήση, Πακέτο, PacketIntegrity, PacketPrivacy, Αμετάβλητο (προεπιλεγμένο πακέτο).
-Πλοποιία <Επίπεδο Πλοποιίας> : Επίπεδο πλαστοπροσωπίας WMI. τιμές Προεπιλογή, Ανώνυμος, Αναγνώριση, Πλοποιία, Αναθέτω (προεπιλογή Πλοποιώ).
-Πρωτόκολλο <string> : πρωτόκολλο για WMI· DCOM ή WSMan ανάλογα με τη διαμόρφωση.
-WsmanAuthentication <string> : μηχανισμός ελέγχου ταυτότητας κατά τη χρήση του WSMan· υποστηρίζει τα Default, Basic, Negotiate, CredSSP, Digest, Kerberos.
-ThrottleLimit <int> : μέγιστος αριθμός ταυτόχρονων συνδέσεων για την εντολή· προεπιλογή 32.
-TimeToLive (TTL) <int> : μέγιστος αριθμός επαναλήψεων πριν από την απόρριψη του πακέτου· 128 από προεπιλογή στα Windows (γνωστός και ως TTL).
-Source <string[]> και -Credential <PSCredential> : για την αποστολή pings από άλλες πηγές με κατάλληλα διαπιστευτήρια, ιδιαίτερα χρήσιμο για τη σύγκριση καθυστέρησης από διαφορετικές τοποθεσίες.
Πρακτικά παραδείγματα με το PowerShell 6/7
Βασικό ping IPv4 σε έναν συγκεκριμένο διακομιστή και ανάλυση της εξόδου PingStatus:
Test-Connection -TargetName Server01 -IPv4
Ping πολλαπλών προορισμών σε μία μόνο εντολή με έναν πίνακα ονομάτων:
Test-Connection -TargetName Server01, Server02, Server12
Προσαρμόστε τον αριθμό, την καθυστέρηση, τα hops και το μέγεθος του buffer όταν φορτώνεται το δίκτυο:
Test-Connection -TargetName Server01 -Count 3 -Delay 2 -MaxHops 255 -BufferSize 256
Εκτέλεση ως εργασία στο παρασκήνιο , ανάγνωση προορισμών από ένα αρχείο και αναμονή αποτελεσμάτων:
$job = Start-Job -ScriptBlock { Test-Connection -TargetName (Get-Content -Path 'Servers.txt') }
$results = Receive-Job $job -Wait
Δημιουργήστε ένα PSSession μόνο εάν υπάρχει συνδεσιμότητα σε τουλάχιστον μία ηχώ:
if (Test-Connection -TargetName Server01 -Quiet) {
New-PSSession -ComputerName Server01
}
Ανακαλύψτε τη διαδρομή με το traceroute και επιστρέψτε TraceStatus ανά hop:
Test-Connection -TargetName www.google.com -Traceroute
Λεπτομερής δοκιμή TCP (PowerShell 7.4) για μια τυπική θύρα TLS:
Test-Connection bing.com -TcpPort 443 -Detailed -Count 4
Πρακτικά παραδείγματα με το Windows PowerShell 5.1
Απλό ping σε έναν απομακρυσμένο υπολογιστή με έξοδο Win32_PingStatus:
Test-Connection -ComputerName Server01
Ping σε πολλούς διακομιστές από τον τοπικό υπολογιστή:
Test-Connection -ComputerName Server01, Server02, Server12
Κάντε ping σε έναν προορισμό από πολλαπλές πηγές με διαπιστευτήρια για να συγκρίνετε τις καθυστερήσεις:
Test-Connection -Source Server02, Server12, localhost -ComputerName Server01 -Credential (Get-Credential)
Προσαρμογή προσπαθειών, TTL, buffer και ταυτόχρονης λειτουργίας σε μεγάλα δίκτυα:
Test-Connection -ComputerName Server01 -Count 3 -Delay 2 -TTL 255 -BufferSize 256 -ThrottleLimit 32
Εκτέλεση ως εργασία παρασκηνίου και συλλογή αποτελεσμάτων όταν ολοκληρωθεί:
$job = Test-Connection -ComputerName (Get-Content 'Servers.txt') -AsJob
if ($job.JobStateInfo.State -ne 'Running') {
$results = Receive-Job $job
}
Ping με διαπιστευτήρια και απομίμηση προσαρμόζοντας το επίπεδο απομίμησης:
Test-Connection Server55 -Credential (Get-Credential) -Impersonation Identify
Χρησιμοποιήστε την έξοδο Boolean για γρήγορες αποφάσεις σε σενάρια:
if (Test-Connection -ComputerName Server01 -Quiet) { New-PSSession Server01 }
Είσοδοι και έξοδοι Cmdlet
Είσοδοι : Στη σύγχρονη έκδοση, τα αντικείμενα δεν διοχετεύονται απευθείας στο cmdlet. Οι τιμές γίνονται δεκτές από την τυπική παράμετρο (το TargetName υποστηρίζει διοχέτευση-ανά-τιμή ή όνομα-ιδιότητας).
Έξοδοι PowerShell 6/7 :
- Microsoft.PowerShell.Commands.TestConnectionCommand+Κατάσταση Ping: ένα αντικείμενο ανά απόκριση ICMP.
- Microsoft.PowerShell.Commands.TestConnectionCommand+TraceStatus: ένα αντικείμενο ανά άλμα με -Traceroute.
- Microsoft.PowerShell.Commands.TestConnectionCommand+PingMtuStatus: με -MtuSize για το Path MTU.
- Boolean: με -Quiet ή -TcpPort (πίνακες εάν υπάρχουν πολλαπλοί προορισμοί).
- Microsoft.PowerShell.Commands.TestConnectionCommand+TcpPortStatus: με -Λεπτομερής περιγραφή για TCP στην έκδοση 7.4.
Έξοδοι στο Windows PowerShell 5.1 :
- ManagementObject (Win32_PingStatus): για κάθε ηχώ.
- Boolean: όταν χρησιμοποιείται -Ήσυχο.
- Εργασία.Διαχείρισης.Αυτοματοποίησης.Απομακρυσμένης Διαχείρισης: αν εκτελεστεί με -AsJob.
Σημειώσεις και χαρακτηριστικά για όλες τις πλατφόρμες
Linux και δικαιώματα : Όταν χρησιμοποιείτε -BufferSize διαφορετικό από το 32 ή συνδυασμούς με -MtuSize που αλλάζουν το προεπιλεγμένο μέγεθος, ενδέχεται να απαιτείται η εντολή sudo . Σε αυτήν την περίπτωση, το cmdlet εμφανίζει μια εξαίρεση που υποδεικνύει ότι απαιτούνται δικαιώματα.
Αθόρυβη λειτουργία και διαχείριση σφαλμάτων : -Η Quiet επιστρέφει λογικές τιμές και καταστέλλει τα σφάλματα . Να θυμάστε ότι με πολλαπλούς προορισμούς η έξοδος είναι ένας πίνακας τιμών κατά σειρά αξιολόγησης.
Επανάληψη έναντι μέτρησης : Μην αναμειγνύετε το -Repeat με το -Count στο ping. Η -Repeat αγνοεί τους πρόσθετους προορισμούς και επαναλαμβάνει μόνο τον πρώτο . Για πολλαπλούς προορισμούς με επανάληψη, καλέστε το cmdlet για τον καθένα.
Ονόματα επίλυσης : Το -ResolveDestination προσθέτει ανάλυση DNS προορισμού και, με το -Traceroute, επιχειρεί να επιλύσει κάθε hop . Χρήσιμο για την αντιστοίχιση ενδιάμεσων συσκευών.
Συμβατότητα : Εάν το σκριπτ σας πρέπει να λειτουργεί σε Windows PowerShell 5.1 και PowerShell 6/7, εντοπίστε την έκδοση και χρησιμοποιήστε -ComputerName ή -TargetName ανάλογα με την περίπτωση και προσαρμόστε την ερμηνεία εξόδου.
Test-Connection και η σχέση του με το Test-NetConnection
Πριν από το Test-NetConnection, βοηθητικά προγράμματα όπως το ping, το tracert, το nslookup και το telnet συνδυάζονταν για τη διάγνωση της συνδεσιμότητας. Το PowerShell v4 εισήγαγε το Test-NetConnection, το οποίο συγκεντρώνει τις δοκιμές ICMP και TCP και ανιχνεύει ακόμη και διαδρομές με ένα μόνο cmdlet.
Παρόλα αυτά, το Test-Connection καλύπτει σε βάθος σενάρια με πιο συγκεκριμένα αντικείμενα για δοκιμές ICMP, MTU, traceroute και σύγχρονες δοκιμές TCP. Μπορείτε να το συμπληρώσετε με το Test-NetConnection όταν χρειάζεστε έναν γρήγορο, ολοκληρωμένο έλεγχο.
Παραδείγματα Test-NetConnection για τη σύγκριση συμπεριφορών:
# 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
Σε περιπτώσεις όπου το telnet δεν υπάρχει πλέον από προεπιλογή, αυτά τα cmdlet του PowerShell απλοποιούν την επαλήθευση των θυρών TCP και της συνδεσιμότητας ICMP , προσθέτοντας χρήσιμα μεταδεδομένα όπως η εξερχόμενη διεπαφή ή η διεύθυνση προέλευσης.
Παθιασμένος συγγραφέας για τον κόσμο των byte και της τεχνολογίας γενικότερα. Μου αρέσει να μοιράζομαι τις γνώσεις μου μέσω της γραφής, και αυτό θα κάνω σε αυτό το blog, θα σας δείξω όλα τα πιο ενδιαφέροντα πράγματα σχετικά με τα gadget, το λογισμικό, το υλικό, τις τεχνολογικές τάσεις και πολλά άλλα. Στόχος μου είναι να σας βοηθήσω να περιηγηθείτε στον ψηφιακό κόσμο με απλό και διασκεδαστικό τρόπο.