Назад | Перейти на главную страницу

Windows - Найдите имя принтера по IP-адресу

Пытаюсь найти имя очереди печати с IP-адресом. Принтер размещен на сервере.

Я точно знаю, что принтер есть в сети на принт-сервере. У нас порядка 40-50 принт-серверов.

Любая помощь приветствуется.

У вас есть 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 входных файла: один со списком серверов печати, а другой с указанным IP-адресом или IP_x.x.x.x. Пожалуйста, поймите, что если вы используете что-то еще для своих имен портов, например имя хоста / DNS, вам нужно будет поместить их в свой файл printerIP.txt как таковые. Если вы не знаете точное имя порта, этот скрипт не вернет никакого результата. Кроме того, поместите только одно «имя порта» в printerIP.txt, иначе он не вернет никакого совпадения.

# --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# 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

Надеюсь, это поможет!