Suas opções:
1. avaliar dados do registro
- consulta as subchaves de
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printerspara obter uma lista de impressoras - corresponde ao valor
portem 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-PrintereGet-PrinterPortOs 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_Printerclasse para recuperar uma lista de impressoras e oWin32_TCPIPPrinterPortclasse para recuperar o valorHostAddressem 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 )