PowerShell · 08.12.2023

Глобально о локальном

Сегодня попробуем найти локальный принтер на удалённом хосте.

Условия задачи: имеется доменный компьютер, к которому подключён энный принтер через 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 для заданного хоста пуста (т.е. принтер не был найден) — будет выведено соответствующее сообщение.