Пытаюсь найти имя очереди печати с 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
Надеюсь, это поможет!