web-dev-qa-db-ja.com

Windows-IPアドレスからプリンター名を検索

IPアドレスでプリンターキュー名を検索しようとしています。プリンターはサーバーでホストされています。

  • ADでIPを検索しましたが、うまくいきませんでした。
  • nbtstatがデバイス名を返しましたが、ADに存在しません。

プリンタがネットワーク内のプリントサーバーに存在することは確かです。プリントサーバーは約40〜50台あります。

助けてくれてありがとう。

3
hanes

プリンター自体のIPアドレス(管理または直接印刷用)があり、共有されているWindowsプリントサーバーを知りたいですか?あれは正しいですか?

各プリントサーバーを「手動」で検索できます(ローカルにある5つのプリントサーバーに絞り込むなど、論理的にはどこにあるかを論理的に理解していると思うので、すべてのクエリを実行するよりも簡単です)プリンタが存在するサブネット)。

Powershellの使用($ printservernameはおそらくプリントサーバーのホスト名です):

Get-WMIObject -class Win32_Printer -computer $printservername | Select Name,DriverName,PortName | Where-Object {$_.PortName -eq "IP_x.x.x.x"}

先に進んでWhere-Object部分なしで実行すると、PortNameの出力がどのようになるかを確認できますが、IP_10.10.10.10またはそれに類似しているはずです。

結果が得られない場合、そのプリントサーバーはそのIPアドレスをホストしているものではありません。


更新:入力ファイルが必要だったので、私も先に進みました。 2つの入力ファイルが必要です。1つはプリントサーバーのリストを含み、もう1つはIPアドレスまたはIP_x.x.x.xをリストします。ホスト名/ DNSなどのポート名に他のものを使用する場合は、それらをそのようにprinterIP.txtファイルに追加する必要があることに注意してください。正確なPortNameがわからない場合、このスクリプトは結果を返しません。また、printerIP.txtに「ポート名」を1つだけ含めると、一致する結果が返されません。

# --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Script: Find-WhichPrintServer.ps1
# Author: TheCleaner, serverfault.com
# Date: 1/16/2013
# Comments: This script will query each of the computers in the input file and look for a particular printer's IP address on that print server.  If found it will output the name of the print server and printer name and info
# --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$printservers = Get-Content -Path C:\PSinput\PrintServers.txt
$printerIP = Get-Content -Path C:\PSinput\printerIP.txt #note this must be the correct format such as IP_x.x.x.x
Get-WMIObject -class Win32_Printer -computer $printservers | Select SystemName,Name,DriverName,PortName | Where-Object {$_.PortName -eq $printerIP} |
Format-Table -Property SystemName, PortName, Name, DriverName -AutoSize

お役に立てば幸いです。

4
TheCleaner