Suas opções:
1. avaliar dados do registro
- consulta as subchaves de
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers
para obter uma lista de impressoras - corresponde ao valor
port
em relação aHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports
- avalie os valores HostName e IPAddress na chave correspondente
2. use o Powershell
- semelhante a 1. mas use
Get-Printer
eGet-PrinterPort
Os cmdlets devem recuperar os respectivos dados por meio de uma interface bem definida (você precisaria usar um Windows 8.1 ou Server Hosts de 2012 para executar os CMDlets, mas o servidor de impressão em que você os está executando pode ser uma versão mais antiga)
3. use o WMI
- semelhante a 1. e 2., mas use o WMI
Win32_Printer
classe para recuperar uma lista de impressoras e oWin32_TCPIPPrinterPort
classe para recuperar o valorHostAddress
em sua linguagem de escolha com base em consulta WMI (por exemplo, VBScript )
Observe que não há uma maneira uniforme de fazer isso se suas impressoras estiverem usando algo específico do fornecedor em vez do Standard TCP/IP Port
. Você precisaria ir e descobrir tudo, embora as chances sejam de que essas informações sejam enterradas, algumas delas na subchave de registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\<yourporttype>
.
Note que enquanto você, teoricamente, poderia remontar coisas de uma estação Linux usando RPC, provavelmente seria uma idéia melhor ter o NRPE transportando os dados (dê uma olhada em NSClient ++ usando scripts externos )