J'ai besoin d'interroger l'imprimante sur le protocole JetDirect (Tcp-IP Port 9100)Powershell Tcp-IP, comment, Se connecter/SendData/ReadResult/Déconnexion
je l'ai déjà écrire le code pour connecter et déconnecter, mais pour mettre et lire les données que j'ai un problème :(
'printer.local:9100' | Connect-TcpHost | Disconnect-TcpHost
résultat
TcpDestNodes IsOpen Latency Query
------------ ------ ------- -----
printer.local:9100 True 0,7065 {}
Mon code
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 {
}
}
Vous utilisez telnet pour vous connecter à l'imprimante de sorte que déjà beaucoup de blogs sur ce sujet sont disponibles. [Celui-ci] (https://thesurlyadmin.com/2013/04/04/using-powershell-as-a-telnet-client/) qui couvre le processus –