Se sei un amministratore di sistema Windows, conoscerai sicuramente l’importanza del comando Telnet nelle operazioni quotidiane di routine. Come si sa, tutte le versione di Windows sia Client che Server (a partire da Vista e versioni successive) vengono fornite con la funzionalità client Telnet disabilitata per impostazione predefinita.

Se si desidera testare la connettività o la raggiungibilità di alcuni computer, è necessario abilitare la funzionalità Windows telnet-client oppure cercare un comando alternativo a Telnet. In questo articolo, ti mostrerò come usare PowerShell, al posto della funzionalità client Telnet.

La sintassi di Telnet è abbastanza semplice come mostrato di seguito:

Telnet IndirizzoIP Porta

ES: Telnet 192.168.1.4 80

Ogni versione di Windows sia client che server è fornita di default con PowerShell già installata ed abilitato. In questo articolo creeremo un modulo di PowerShell che funzionerà esattamente come il comando Telnet tradizionale.

Dopo aver avviato la console di PowerShell e digitare il comando seguente per testare la connettività verso la porta 80 dell’IP 192.168.1.4:

New-Object System.Net.Sockets.TcpClient("192.168.1.4", 80)
Powershell system.net

Nell’immagine sopra riportata “True” indica che la connessione al server ha esito positivo. False” al contrario indicherebbe che il PC non è in grado di connettersi al server sulla porta specificata.

Il comando precedente mostra se il server di destinazione è in ascolto di una porta specifica o meno. Se si desidera utilizzare il comando Telnet nella console di PowerShell esattamente come si fa nel prompt dei comandi, continuate a leggere l’articolo rimanente.

powershell Telnet

Creazione di uno script Powershell per il Telnet

Utilizzando la classe TcpClient .NET è possibile indicare a PowerShell di utilizzarla, al fine di creare un oggetto per aprire una connessione temporanea su un computer remoto.

In base al fatto che venga generato o meno un errore, è possibile sapere se la porta TCP è aperta o meno. In breve, questa funzione avvia il metodo Connect() sull’oggetto TcpClient su un computer remoto su una porta TCP.

Se il metodo Connect() non genera un errore, la variabile $status è impostata su Open. Se genera un errore, verrà rilevato e impostato su Chiuso/Filtrato. Infine, verrà creato un oggetto personalizzato con tutti i parametri necessari e messo sulla pipeline.

## Questo Script necessita della versione 3 di powershell in su
function Test-TcpPort ($ComputerName,$TcpPort) { try { ## Create the TcpClient object and initiate a Connect method $socket = new-object Net.Sockets.TcpClient $socket.Connect($ComputerName, $TcpPort) ## The script will only get here if an error is not thrown by the above method $status = "Open" ## Properly close the TCP connection once we're done $socket.Close() } catch { $status = 'Closed/Filtered' } finally { $obj = [PSCustomObject]@{ ComputerName = $ComputerName TcpPort = $TcpPort Status = $status } $obj } } ## Usage $ComputerName = '192.168.1.4' $TcpPort = '80' Test-TcpPort $ComputerName $TcpPort