Aqui está um pequeno Powershell para você ... deve ser compatível com qualquer versão do PS ... talvez PSv2 ou melhor. Funciona com nomes de host ou endereços IP.
Function Send-StringOverTcp (
[Parameter(Mandatory=$True)][String]$DataToSend,
[Parameter(Mandatory=$True)][String]$Hostname,
[Parameter(Mandatory=$True)][UInt16]$Port)
{
Try
{
$ErrorActionPreference = "Stop"
$TCPClient = New-Object Net.Sockets.TcpClient
$IPEndpoint = New-Object Net.IPEndPoint($([Net.Dns]::GetHostEntry($Hostname)).AddressList[0], $Port)
$TCPClient.Connect($IPEndpoint)
$NetStream = $TCPClient.GetStream()
[Byte[]]$Buffer = [Text.Encoding]::ASCII.GetBytes($DataToSend)
$NetStream.Write($Buffer, 0, $Buffer.Length)
$NetStream.Flush()
}
Finally
{
If ($NetStream) { $NetStream.Dispose() }
If ($TCPClient) { $TCPClient.Dispose() }
}
}
Send-StringOverTcp -DataToSend 'foo!' -Hostname google.com -Port 80
Eu escrevi isso muito apressadamente ... você pode querer colocar validação extra de parâmetro e erro de trapping lá, mas você começa a idéia. Também vale a pena considerar que o Windows usa a codificação UTF16 LE por padrão, de modo que os caracteres são geralmente "largos", ao contrário de muitos outros sistemas que usam caracteres estreitos. Então você pode querer codificar a string como Unicode ao invés de ASCII, etc. Depende do que você está usando.
Ou se preferir simplificar o seu exemplo do Netcat, basta ... fazer o download do Netcat para Windows.