angle-left

Удаленное подключение и работа с принтерами через PowerShell

В ходе системного администрирования машин пользователей зачастую возникают различные мелкие задачи по работе с принтерами(добавление, удаление, изменение принтера по умолчанию и тп). Не всегда бывает удобно устанавливать RDP сессию или иным образом подключатся в графическом режиме, поэтому приведу несколько полезных скриптов PowerShell для удаленного администрирования, используя консоль PowerShell.

Для начала, определимся с типом удаленного подключения(возможны разные варианты, которым будет посвящена отдельная заметка).

Предположим, нам нужно что-то сделать на одной удаленной машине, и это достаточно простой список команд(или одна команда). В таком случае, проще всего использовать управление "один-к-одному" с помощью Enter-PSSession :

Enter-PSSession -ComputerName Comp1

где Comp1 - имя удаленной машины.

После подключения можно вручную выполнить различные команды. В случае, когда требуется выполнение нескольких команд или скрипта, можно воспользоваться командлетом Invoke-Command, который может установить удаленную сессию и выполнить несколько команд или скрипт(и даже сделать это в фоновом режиме).

Выполнение одной или несколько команд:

Invoke-Command -ScriptBlock {Restart-Service spooler} -ComputerName Comp1

Результатом будет перезапуск принт-спулера на машине с именем Comp1, в параметрах -ScriptBlock можно указать несколько команд.

Выполнение скрипта из файла:

Invoke-Command -FilePath .\script.ps1 -ComputerName Comp1

Будет выполнен скрипт из файла script.ps1, где в параметре -FilePath указывается путь к нему.

Для выполнения в скрытом режиме достаточно указать параметр -AsJob, однако следует помнить, что в этом случае PowerShell не возвращает результат выполнения, и его получить можно с помощью командлета Receive-Job(подробнее останавливаться на этом я в данной статье не буду, т.к. для задач данной статьи обычно достаточно простого подключения и выполнения команд вручную).

Итак, мы подключились к удаленной машине, что же мы можем сделать с принтерами?

1. Добавление сетевого принтера

Для добавления сетевого принтера  нужно использовать WScript.Network :

(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("\\Printserver1\Kyocera1")

где Printserver1 - имя принт-сервера, а Kyocera1 - имя добавляемого принтера.

2. Установка принтера по умолчанию

(New-Object -ComObject WScript.Network).SetDefaultPrinter('Kyocera')

где Kyocera - имя принтера.

3. Удаление подключения принтера

(New-Object -ComObject WScript.Network).RemovePrinterConnection("\\Printserver1\Kyocera1")

Соответственно, Kyocera1 - имя принтера, а Printserver1 - принт-сервер.

4. Вывод списка принтеров

Get-CimInstance -Class Win32_Printer

Тут все совсем просто.

 

 

Коротко о себе:

Работаю инженером в компании Tune IT.