我需要查询过的JetDirect协议的打印机(TCP-IP端口9100)Powershell的TCP-IP,如何,连接/送出数据/ ReadResult /断开
我已经编写代码来连接和断开,但认沽和读取数据我有一些问题:(
'printer.local:9100' | Connect-TcpHost | Disconnect-TcpHost
结果
TcpDestNodes IsOpen Latency Query
------------ ------ ------- -----
printer.local:9100 True 0,7065 {}
我的代码
function Connect-TcpHost (
[Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]$Dest,
$TCPtimeout=250
) {
Begin {
} Process {
($HostName, $port) = $Dest.split(':')
Write-Verbose "$HostName : $port"
$tcpClient = New-Object System.Net.Sockets.TCPClient
$connect = $tcpClient.BeginConnect($HostName,$port,$null,$null)
Write-Verbose "Connecting..."
$timeMs = (Measure-Command {
$wait = $connect.AsyncWaitHandle.WaitOne($TCPtimeout,$false)
Write-Verbose "Connecting 2..."
}).TotalMilliseconds
If (!$wait) {
Write-error "$HostName : $Port"
Write-Verbose "Close connections..."
$tcpClient.Close()
$tcpClient.Dispose()
return;
}
[pscustomobject][ordered]@{
TcpDestNodes = $dest
tcpClient = $tcpClient
connect = $connect
IsOpen = $true
Latency = $timeMs
Query = @()
}
} End {
}
}
function Disconnect-TcpHost (
[Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]$ObjTcp
) {
Begin {
} Process {
Write-Verbose "Disconnecting..."
$ObjTcp.tcpClient.Close()
$ObjTcp.tcpClient.Dispose()
[pscustomobject][ordered]@{
TcpDestNodes = $ObjTcp.TcpDestNodes
IsOpen = $ObjTcp.IsOpen
Latency = $ObjTcp.Latency
Query = $ObjTcp.Query
}
} End {
}
}
您使用telnet连接到打印机,这已经是很多关于这个主题的博客。 [这一个](https://thesurlyadmin.com/2013/04/04/using-powershell-as-a-telnet-client/)涵盖了过程 –