Сегодня попробуем найти локальный принтер на удалённом хосте.
Условия задачи: имеется доменный компьютер, к которому подключён энный принтер через usb порт. Внимание, вопрос: как узнать, что за принтер подключён к компьютеру и какой используется драйвер?
Воспользуемся изкоробочным PS-командлетом Get-Printer, натравим его на нужный компьютер, ограничим вывод маской названия портов USB*, русифицируем таблицу вывода и… Вуаля!
[System.Console]::Title = "Ищем принтер на хосте"
while($true)
{
$comp = Read-Host "Имя компьютера"
$result = Get-Printer -ComputerName $comp |
where PortName -like USB* |
Select-Object @{Label="Принтер"; Expression={$_.Name}}, @{Label="Драйвер"; Expression={$_.DriverName}}, @{Label="Порт"; Expression={$_.PortName}} |
Format-Table -AutoSize
if (!$result)
{ Write-Host "Локальных принтеров не найдено на $comp!" -ForegroundColor Red }
else { $result }
}
Скрипт будет в цикле интересоваться у пользователя именем целевого хоста, далее отправится на сбор данных и осуществит вывод в консоль. Никаких отчётов он не порождает.
Если переменная $result для заданного хоста пуста (т.е. принтер не был найден) — будет выведено соответствующее сообщение.