С помощью PowerShell можно автоматизировать типовые задачи управления принтерами и драйверами печати в Windows. В этой статье мы рассмотрим, как из консоли PowerShell создать, удалить или открыть общий доступ к принтеру, назначить принтер по-умолчанию; подключить сетевой принтер; установить или удалить драйвера принтера; управлять локальными портами и очередями печати.
Содержание:
- Установка драйвера печати в хранилище драйверов
- Установка принтера с помощью PowerShell
- Вывести список принтеров на сервере печати с помощью PowerShell
- Подключить сетевой принтер из консоли PowerShell
- Назначить принтер по-умолчанию
- Удаление принтера с помощью PowerShell
Для управления подсистемой печати в Windows можно использовать встроенный PowerShell модуль PrintManagement. В этом модуле доступно 22 команды для управления принтерами:
Get-Command –Module PrintManagement
В модуле PrintManagement доступны 22 командлета PowerShell для управления принтерами, драйверами, портами печати и очередями:
- Add-Printer – добавить (установить) новый принтер;
- Add-PrinterDriver — установить новый драйвер печати;
- Add-PrinterPort – создать порт печати;
- Get-PrintConfiguration – вывести настройки принтера;
- Get-Printer – вывести список принтеров на компьютере;
- Get-PrinterDriver – вывести список установленных драйверов печати;
- Get-PrinterPort — вывести список портов печати;
- Get-PrinterProperty – показать свойства принтера;
- Get-PrintJob – получить список заданий печати;
- Read-PrinterNfcTag – получить информацию о принтере из NFC метки;
- Remove-Printer — удалить принтер;
- Remove-PrinterDriver — удалить драйвер принтера;
- Remove-PrinterPort — удалить порт принтера;
- Remove-PrintJob – удалить задание печати;
- Rename-Printer — переименовать принтер;
- Restart-PrintJob — перезапустить задание печати;
- Resume-PrintJob — запустить приостановленное задание
- Set-PrintConfiguration – изменить параметры печати принтера;
- Set-Printer – изменить настройки принтера;
- Set-PrinterProperty — изменить свойства принтера;
- Suspend-PrintJob – приостановить выполнение задания печати;
- Write-PrinterNfcTag – записать информацию в метку NFC.
Установка драйвера печати в хранилище драйверов
Вывести список драйверов печати, который установлены в хранилище драйверов Windows:
Get-PrinterDriver
В модуле PrintManagement есть командлет Add—PrinterDriver, которые предполагает возможность установки драйвера из INF файла. Но фактически этот командлет позволяет добавить драйвера только в офлайн образ Windows (аналог Add-WindowsDriver, позволяющим интегрировать драйвера в оффлайн образ Windows).
Для установки драйвера печати из INF файла нужно использовать утилиту pnputil. Драйвера для нужной вам модели принтера нужно предварительно скачать с сайта разработчика и распаковать в локальную папку.
pnputil.exe -i -a "C:\drivers\KYOCERA\KyoClassicUniversalPCL6\OEMsetup.inf"
После того, как драйвер добавлен в хранилище драйверов, необходимо добавить его в список доступных принт-сервере.
Add-PrinterDriver -Name "Kyocera Classic Universaldriver PCL6"
Точное имя драйвера принтера скопируйте из INF файла.
Выведите список доступных драйверов печати:
Get-PrinterDriver
Установка принтера с помощью PowerShell
Перед тем как создать новый принтер, нужно создать порт печати. Это может быть локальный порт или сетевой порт (в случае печати на удаленный принтер по сети), Например:
Add-PrinterPort -Name "LocalPort:" -ErrorAction -Verbose
или
Add-PrinterPort -Name "IP_192.168.10.26" -PrinterHostAddress "192.168.10.26"
Чтобы создать новый принтер, нужно указать имя принтера, драйвер, и порт печати:
Add-Printer -Name "Ricoh IM 2702" -DriverName "Kyocera Classic Universaldriver PCL6" -PortName USB001 -Verbose
Проверьте, что новый принтер появился в панели управления.
Если нужно изменить имя принтера:
Rename-Printer -Name "Ricoh IM 2702" -NewName “Ricoh_2702"
Чтобы расшарить принтер по сети (открыть общий сетевой доступ к принтеру):
Set-Printer -Name "Ricoh IM 2702" -Shared $True -ShareName "Ricoh_2702"
Отключить общий доступ к принтеру:
Set-Printer -Name "Ricoh IM 2702" -Shared $False
Вывести список принтеров на сервере печати с помощью PowerShell
Вывести список принтеров, установленных на компьютере:
Get-Printer
Команда вернет имя принтера, тип (локальный или сетевой), драйвер, порт печати, открыт ли к принтеру общий доступ и опубликован ли принтер в AD.
Большинство командлетов модуля PrintManagement можно использовать для управления принтерами на удаленных компьютерах (с помощью параметра -ComputerName).
Вывести список принтеров, установленных на удаленном компьютере (принт-сервере):
Get-Printer -ComputerName msk-prnt1 | Format-List Name,DriverName
Вывести только принтера с общим доступом:
Get-Printer -ComputerName msk-prnt1 | where Shared -eq $true | fl Name
Вывести все принтеры с поддержкой дуплексной печати:
Get-Printer | ForEach-Object { Get-PrintConfiguration -PrinterName $_.Name } | Where-Object { $_.DuplexingMode -ne "OneSided" }
Вывести цветные принтеры:
Get-Printer | ForEach-Object { Get-PrintConfiguration -PrinterName $_.Name } | where {$_.Color -eq $True}
Включить цветной режим печати для принтера:
Get-Printer 'HP Color LaserJet 150nw' | Set-PrintConfiguration -Color $true
Подключить сетевой принтер из консоли PowerShell
Чтобы подключить сетевой принтер с сервера печати, выполните:
Add-Printer -ConnectionName \\msk-prnt1\HPCL3020
Вывести список подключенных на компьютере сетевых принтеров:
Get-Printer | ?{$_.type -eq 'Connection'}
Удалить конкретный сетевой принтер:
Get-Printer -name \\msk-prnt1\HPCL3020 | Remove-Printer -force
Удалить все подключенные сетевые принтеры на компьютере:
Get-Printer | ?{$_.type -eq 'Connection'} | Remove-Printer
Назначить принтер по-умолчанию
В Windows 10 и выше в качестве принтера по умолчанию назначается принтер, на котором пользователь успешно печатал последний раз. Чтобы Windows не переназначала принтера по-умолчанию, нужно создать в реестре параметр LegacyDefaultPrinterMode:
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" -Name "LegacyDefaultPrinterMode" -Value 1 –Force
Назначить принтер по-умолчанию:
$Printer = Get-CimInstance -Class Win32_Printer -Filter "Name='Ricoh IM 2702'"
Invoke-CimMethod -InputObject $Printer -MethodName SetDefaultPrinter
Удаление принтера с помощью PowerShell
Чтобы удалить принтер, выполнить команду PowerShell:
Remove-Printer -Name "Ricoh IM 2702"
Затем можно удалить драйвер печати:
Remove-PrinterDriver -Name "Kyocera Classic Universaldriver PCL6"
В конце оставлю еще несколько полезных команд управления принтерами для системного администратора:
Отправить тестовую страницу на печать:
Invoke-CimMethod -MethodName printtestpage -InputObject (Get-CimInstance win32_printer | Where-Object Name -eq "HP LaserJet M1530 MFP Series PCL 6")
Очистить очередь печати принтера:
Get-Printer -Name "HP LaserJet M1530 MFP Series PCL 6" | Get-PrintJob | Remove-PrintJob
Все способы:
- Подключаем сетевой принтер в Windows 10
- Подготовительные действия
- Способ 1: Меню «Параметры»
- Способ 2: Классическое приложение «PowerShell»
- Способ 3: «Панель управления»
- Вопросы и ответы: 1
Сейчас практически в каждом доме присутствует несколько компьютеров, подключенных к одной интернет-сети, не говоря уже о различных офисах, где связанных устройств может быть бесчисленное количество. К тому же, многие желают использовать печатное оборудование, но подключать его постоянно к разным ПК совершенно неудобно. В этом случае на помощь приходит встроенная функция операционной системы Windows 10, которая позволяет сделать принтер общим и запускать печать с любого локального аппарата.
Подключаем сетевой принтер в Windows 10
Чтобы выполнить поставленную задачу, вам необходимо соблюдать всего два главных условия — принтер обязательно должен быть подключен к одному из компьютеров и быть в рабочем состоянии (без проблем печатать страницы), а также все ПК должны находиться в одной локальной сети. После того, как вы убедились в осуществлении этих пунктов, можно приступать к подготовительным работам и непосредственному соединению сетевого оборудования.
Подробнее:
Как подключить принтер к компьютеру
Создание локальной сети через Wi-Fi-роутер
Создание домашней сети на Windows 10
Подготовительные действия
Первоочередно потребуется произвести несколько простых действий, чтобы в дальнейшем не приходилось на них отвлекаться. Мы выделили все пункты, которые следует учитывать:
- Узнайте имя или IP-адрес ПК, куда подсоединен необходимый принтер. Эта информация потребуется при его добавлении через системные средства. Детальнее об этом читайте в отдельной нашей статье по следующей ссылке.
- Предоставьте общий доступ в пределах локальной сети, чтобы обеспечить нормальное взаимодействие оборудования, всех файлов и папок.
- При возникновении проблем с отображением сетевого принтера воспользуйтесь отдельным руководством, перейдя к другому нашему материалу по ссылке далее.
- Узнайте точное имя принтера, для этого потребуется найти его на компьютере и запомнить или скопировать увиденное название.
Подробнее:
Узнаем имя компьютера в сети
Как узнать IP-адрес своего компьютера
Как узнать IP-адрес чужого компьютера
Подробнее: Настройка общего доступа в операционной системе Windows 10
Подробнее: Что делать, если Windows 10 не видит сетевой принтер
Подробнее: Поиск принтера на компьютере
Только после выполнения всех этих пунктов можно переходить к добавлению сетевого печатающего аппарата. Мы выделили все доступные методы осуществления этой операции, но в первую очередь остановиться хотелось бы на рекомендованном.
Способ 1: Меню «Параметры»
Меню «Параметры» появилось в Windows 10 и призвано в будущем полностью заменить «Панель управления». Сейчас через него уже можно достаточно просто производить различные действия с периферийным оборудованием, включая принтеры. Подключается сетевой аппарат через это меню буквально в несколько кликов:
- Откройте меню «Пуск» и зайдите в «Параметры».
- Выберите раздел «Устройства».
- Через боковую панель откройте категорию «Принтеры и сканеры».
- Здесь щелкните на «Добавить принтер или сканер».
- Нажмите на надпись «Необходимый принтер отсутствует в списке» при ее появлении.
- Отметьте маркером пункт «Выбрать общий принтер по имени». Заполните адрес в формате
\\Имя или IP-адрес компьютера\полное имя принтера
и нажмите на «Далее». - Вы также можете кликнуть на «Обзор», после чего откроется Проводник, где в разделе «Сеть» отобразится список доступных общих принтеров для выбора.
- Ожидайте завершения подключения выбранного устройства. При появлении уведомления о необходимости инсталляции драйверов подтвердите его, все остальные действия будут выполнены автоматически.
- По окончании инсталляции откроется новое окно с рекомендацией использования принтера по умолчанию и предложением запуска пробной страницы для проверки работоспособности.
После произведения этой инструкции принтер без проблем будет печатать по сети и станет отображаться при выборе оборудования для печати. Не забывайте только предварительно включать его на основном устройстве и проверять наличие бумаги в лотке, чтобы не получать ошибок при отправке.
Способ 2: Классическое приложение «PowerShell»
Данный метод заключается в использовании расширенной альтернативы «Командной строке» — классического приложения «Windows PowerShell». Подключение сетевого печатного оборудования таким образом осуществляется путем ввода специальных команд, однако для начала потребуется запустить саму консоль. Сделать это можно через меню «Пуск», введя соответствующее название в поиске.
В консоли потребуется ввести Add-Printer -ConnectionName "\\Имя_Компьютера\Полное_Название_Принтера"
для добавления принтера по имени главного ПК. После указания команды нажмите на клавишу Enter, чтобы активировать ее.
Если вы заинтересованы в соединении аппарата посредству IP-адреса ПК, команда обретет немного другой вид: Add-Printer -ConnectionName "\\192.168.1.8\Полное_Название_Принтера"
, где 192.168.1.8 — нужный локальный IP-адрес.
Способ 3: «Панель управления»
Как уже было сказано ранее, «Панель управления» постепенно теряет свои позиции, ведь новое меню «Параметры» гораздо удобнее и функциональнее. Однако еще остались те пользователи, которым надо выполнить рассматриваемую сегодня задачу именно через это классическое приложение, а делается это так:
- Запустите «Панель управления» любым удобным способом и перейдите там в раздел «Устройства и принтеры».
- На панели сверху щелкните на «Добавление принтера».
- Кликните по ссылке «Необходимый принтер отсутствует в списке».
- Все остальные действия производятся с точностью так, как это было показано в Способе 1.
Вы были ознакомлены с тремя различными вариантами соединения общего принтера в операционной системе Виндовс 10. Обычно все проходит успешно, однако иногда юзеры сталкиваются с проблемами. Самые частые — отключенная служба печати или ошибка «Локальная подсистема печати не выполняется». Ознакомиться с решением этих трудностей вы можете в отдельной нашей статье далее.
Читайте также: Решение проблемы «Локальная подсистема печати не выполняется» в Windows 10
Наша группа в TelegramПолезные советы и помощь
В ходе системного администрирования машин пользователей зачастую возникают различные мелкие задачи по работе с принтерами(добавление, удаление, изменение принтера по умолчанию и тп). Не всегда бывает удобно устанавливать 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
Тут все совсем просто.
Ошибка 0x0000011b «Windows не удается подключиться к принтеру» — одна из самых распространённых проблем при установке или подключении к уже установленному сетевому принтеру в актуальных версиях Windows. Однако, в большинстве случаев она сравнительно легко решаема.
В этой инструкции подробно о способах исправить ошибку 0x0000011b при подключении к принтеру в Windows 11 и Windows 10, один из которых, с большой вероятностью, сработает в вашей ситуации.
Отключение CVE-2021-1678 Mitigation (защита от CVE-2021-1678)
Основная причина появления и широкого распространения ситуации «В ходе операции произошла ошибка 0x0000011b» — выпущенные Майкрософт обновления для защиты от уязвимости в удаленном вызове процедур при подключении принтера (Windows Print Spooler Spoofing Vulnerability), сама уязвимость получила код CVE-2021-1678.
Обновления выходили под номерами KB5005565, KB5005652 и KB5006670, но в текущих версиях Windows 11 и Windows 10 вы не найдёте их в списке доступных к удалению. Тем не менее, отключить защиту от CVE-2021-1678 и, с большой вероятность, исправить ошибку 0x0000011b можно:
- Действия следует выполнять на «раздающем» доступ к принтеру компьютере. Нажмите правой кнопкой мыши по кнопке «Пуск», выберите пункт «Выполнить», введите regedit в открывшееся окно и нажмите Enter.
- В открывшемся редакторе реестра перейдите к разделу
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print
- Нажмите правой кнопкой мыши в пустом месте правой панели редактора реестра и выберите пункт «Создать» — «Параметр DWORD (32 бита)».
- Задайте имя
RpcAuthnLevelPrivacyEnabled
для вновь созданного параметра.
- Установите значение 0 для него.
- Закройте редактор реестра и перезагрузите компьютер.
После перезагрузки попробуйте вновь подключиться к принтеру, с большой вероятностью, ошибка 0x0000011b больше не появится.
Если предыдущий метод не помог, можно попробовать другие способы исправить проблему:
- Проверьте, есть ли в реестре Windows раздел
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers
и содержит ли он какие-либо значения или подразделы (по умолчанию содержать не должен, при наличии — можно попробовать удалить, но имеет смысл создать точку восстановления системы перед этим). Также попробуйте создать в этом разделе подраздел с именем PointAndPrint, а в нём — параметр RestrictDriverInstallationToAdministrators со значением 0 или использовать команду
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" /v RestrictDriverInstallationToAdministrators /t REG_DWORD /d 0 /f
в командной строке, запущенной от имени администратора.
- Маловероятно, что сработает, но: попробуйте использовать встроенное средство устранения неполадок принтера, подробнее: Устранение неполадок в Windows 11, Устранение неполадок Windows 10.
- Этот способ не очень желателен, поскольку открывает уязвимости, закрытые соответствующими обновлениями. Проверьте, возможно ли удаление обновлений KB5005565, KB5005652 и KB5006670 на вашем компьютере. Проще всего сделать это, запустив командную строку от имени администратора и введя команду (пример для первого из обновлений в списке):
wusa /uninstall /kb:5005565
Возможны и другие варианты: Как удалить обновления Windows 10, Как удалить обновления Windows 11. Если вы не нашли этого обновления, а при удалении в командной строке появляется сообщение «Обновление не установлено на этом компьютере», значит этот метод в вашем случае не подходит.
- Если принтер уже установлен, но не удаётся подключиться к нему, попробуйте удалить его в Панель управления — Устройства и принтеры, а затем выполнить повторную установку.
Надеюсь, один из способов помог в решении, ошибка 0x0000011b исправлена, а принтер успешно подключён.
|
newlife_86 0 / 0 / 0 Регистрация: 22.12.2017 Сообщений: 13 |
||||
Добавление сетевого принтера на удаленной машине22.12.2017, 07:50. Показов 37488. Ответов 21 Метки нет (Все метки) Всем привет! интересует такой вопрос — можно ли средствами powershell удаленно устанавливать сетевые принтеры. Например — есть принтсервер \\testprint\ На нем установлены различные принтера и доступны для установки по сети(шаре). Т.е. задача такая, написать скрипт где выбирать необходимый принтер с этого сервера и устанавливать его на удаленный пк. Пробовал через invoke-command отправлять команду на удаленный пк :
Пишет — имя принтера задано не верно.. хотя на локальном пк отрабатывает нормально. Может кто нибудь знает другие методы? Или что я не так делаю в данном примере?
0 |
IT_Exp Эксперт 34794 / 4073 / 2104 Регистрация: 17.06.2006 Сообщений: 32,602 Блог |
22.12.2017, 07:50 |
Ответы с готовыми решениями: Коннект к удалённой машине и вообще как это делаеться ???? !!! если… Подключение к удаленной машине public bool Connect() Время на удаленной машине 21 |
Maks Супер-модератор 8813 / 4716 / 571 Регистрация: 13.03.2013 Сообщений: 16,761 Записей в блоге: 16 |
||||||||
22.12.2017, 08:00 |
||||||||
Сообщение от newlife_86 Может кто нибудь знает другие методы? Не знаю, как в powershell, но я для таких целей всегда использую батник
и на всякий случай
0 |
0 / 0 / 0 Регистрация: 22.12.2017 Сообщений: 13 |
|
22.12.2017, 08:11 [ТС] |
|
Спасибо конечно) я знаю этот метод, но интересует именно средствами powershell ))
0 |
1886 / 1108 / 428 Регистрация: 22.01.2016 Сообщений: 3,050 |
|
22.12.2017, 10:28 |
|
Сообщение от newlife_86 интересует такой вопрос — можно ли средствами powershell удаленно устанавливать сетевые принтеры. Если ПК доменные, то удобнее всего решить такую задачу с помощью Group Policy
0 |
Супер-модератор 8813 / 4716 / 571 Регистрация: 13.03.2013 Сообщений: 16,761 Записей в блоге: 16 |
|
22.12.2017, 11:20 |
|
Сообщение от newlife_86 ) я знаю этот метод, но интересует именно средствами powershell )) Ну Вы написали про другие методы, вот я и педложил, кстати, вполне рабочий и достаточно отказустойчивый скрипт.
0 |
0 / 0 / 0 Регистрация: 22.12.2017 Сообщений: 13 |
|
25.12.2017, 02:06 [ТС] |
|
Тогда может подскажете, есть ли возможность запускать этот батник на удаленной машине с моего рабочего места. Т.е. что бы не «беспокоить пользователя» и просто подключить ему нужный сетевой принтер ?))
0 |
6374 / 2199 / 342 Регистрация: 10.12.2013 Сообщений: 7,538 |
|
25.12.2017, 06:51 |
|
Add-Printer ?
0 |
Супер-модератор 8813 / 4716 / 571 Регистрация: 13.03.2013 Сообщений: 16,761 Записей в блоге: 16 |
|
25.12.2017, 07:44 |
|
Сообщение от newlife_86 Тогда может подскажете, есть ли возможность запускать этот батник на удаленной машине с моего рабочего места. Как запустить .bat по сети?
0 |
KDE777 1886 / 1108 / 428 Регистрация: 22.01.2016 Сообщений: 3,050 |
||||
25.12.2017, 10:56 |
||||
Сообщение было отмечено newlife_86 как решение РешениеСообщение от newlife_86 Тогда может подскажете, есть ли возможность запускать этот батник на удаленной машине с моего рабочего места. Если GPO воспользоваться не хотите, тогда запускаем «батник» через powershell
0 |
Супер-модератор 8813 / 4716 / 571 Регистрация: 13.03.2013 Сообщений: 16,761 Записей в блоге: 16 |
|
25.12.2017, 11:56 |
|
newlife_86,
0 |
newlife_86 0 / 0 / 0 Регистрация: 22.12.2017 Сообщений: 13 |
||||
27.12.2017, 06:28 [ТС] |
||||
Спасибо большое! Этот метод сработал, добавляется нужный принтер. Может еще подскажете команду как удалить сетевые принтеры. И еще бы список установленных получать)) Добавлено через 1 час 0 минут
0 |
KDE777 1886 / 1108 / 428 Регистрация: 22.01.2016 Сообщений: 3,050 |
||||||||||||
27.12.2017, 11:55 |
||||||||||||
Сообщение от newlife_86 Спасибо большое! Этот метод сработал, добавляется нужный принтер. Может еще подскажете команду как удалить сетевые принтеры. И еще бы список установленных получать))
Вот только с получением списка сетевых принтеров есть одно, но — если пользователь подключил принтер самостоятельно, то HKLM-ветке его не будет и нужно смотреть в HKCU (HKEY_CURRENT_USER\Software\Microsoft\Wi ndows NT\CurrentVersion\Devices) каждого пользователя Получить список сетевых принтеров локально намного проще:
Равно, как и удалить:
0 |
6374 / 2199 / 342 Регистрация: 10.12.2013 Сообщений: 7,538 |
|
27.12.2017, 13:06 |
|
это всё понятно, но совсем неинтересно. дело за мотивацией. вот у меня пока не хватает. Добавлено через 5 минут
0 |
1886 / 1108 / 428 Регистрация: 22.01.2016 Сообщений: 3,050 |
|
27.12.2017, 13:18 |
|
Сообщение от volodin661 это всё понятно, но совсем неинтересно. Ещё SCCM забыли Но как я уже здесь писал, при наличие AD, задача из этой темы проще всего решается через Group Policy. Причём вплоть до автоматического подключения принтера в зависимости от номера комнаты пользователя. Добавлено через 3 минуты Сообщение от volodin661 дело ещё и в том, что powershell( и все его производные тоже) мутирует прямо на глазах; Здесь в качестве основного способа подключения предложено — RUNDLL32.EXE — по моему, твёрже уже некуда
0 |
0 / 0 / 0 Регистрация: 22.12.2017 Сообщений: 13 |
|
28.12.2017, 04:14 [ТС] |
|
Удаление/подключение заработало, спасибо огромное, мне это и нужно было)) а вот с получением списка проблемы Добавлено через 1 час 4 минуты
0 |
KDE777 1886 / 1108 / 428 Регистрация: 22.01.2016 Сообщений: 3,050 |
||||
28.12.2017, 11:50 |
||||
Сообщение было отмечено newlife_86 как решение РешениеСообщение от newlife_86 по моему эта команда ломится на удаленном пк в реестр, но запрашивает ветку с моей учеткой, а не под тем пользователем который сейчас там работает. Сообщение от newlife_86 Подправил путь к реестру, неверно прописал Вы внимательно прочитали мой ответ #12 — «нужно смотреть в HKCU каждого пользователя«? Invoke-Command выполняется в сессии/профиле пользователя запустившего эту команду. И ещё раз — в HKCU перечисленны принтеры, подключенные пользователем самостоятельно. Если информация о таких принтерах нужна, то получить их список можно примерно так:
0 |
0 / 0 / 0 Регистрация: 22.12.2017 Сообщений: 13 |
|
29.12.2017, 02:35 [ТС] |
|
Что то я немного запутался, только начинаю изучать Пош. Вообще изначально задача такая была — именно средствами поша (т.к. я пишу форму на нем для управления AD и удаленно Компами в целом) реализовать добавление/удаление принтера на удаленный пк(доменный) и получать список принтеров, актуальный, текущего пользователя на удаленном пк. Т.е. например поступил запрос добавить такой то принтер с принтсервера на такой то ПК. Прежде мне нужно получить список принтеров пользователя, если нужно поудалять лишние и добавить нужный по запросу с установкой его по дефолту. Добавлено через 5 минут Добавлено через 10 минут
0 |
KDE777 1886 / 1108 / 428 Регистрация: 22.01.2016 Сообщений: 3,050 |
||||
29.12.2017, 14:14 |
||||
Сообщение от newlife_86 Последний приведенный пример действительно получает подключенные принтера пользователя. Но если я добавляю ему принтер удаленно, то он не появлется по моему запросу этой командой. Т.е. выводит те которые были до этого уже установлены. И ещё раз — есть принтеры подключенные администратором, которые доступны всем локальным пользователям этого ПК, они перечислены в ветке HKLM. А есть принтеры, которые пользователь подключил самостоятельно — открыл в проводнике \\printserver и дважды кликнул по имени нужного принтера. Такие принтеры перечислены в HKCU конкретного пользователя. Сообщение от newlife_86 и получать список принтеров, актуальный, текущего пользователя на удаленном пк. Для этого нужно сначала найти интерактивный сеанс (а ещё могут быть RDP-сессии) и установить пользователя и его SID. Вот вам ещё пример, как получить список всех подключенных сетевых (общих) принтеров с удалённого ПК, причём как установленных администратором (для всех пользователей), так и подключенных лично. При этом подключенные лично принтеры, отображаются только для имеющихся в настоящий момент сессий.
Сообщение от newlife_86 В итоге те принтера которые добавил я удаленно я могу удалять, а те которые там уже были установлены не мной, а тем пользователем, я удалить не могу Это совсем не тривиальная задача. Но очевидно, что если пользователь разобрался, как самостоятельно добавить себе общий принтер, то и сам сможет его удалить…
0 |
0 / 0 / 0 Регистрация: 22.12.2017 Сообщений: 13 |
|
01.03.2018, 10:30 [ТС] |
|
Сообщение от KDE777 Это совсем не тривиальная задача. Но очевидно, что если пользователь разобрался, как самостоятельно добавить себе общий принтер, то и сам сможет его удалить… Еще раз спасибо, почти во всем разобрался. Но все таки есть ли возможность дистанционно удалять такие принтеры которые были установлены от учетной записи пользователя. Т.к. это не он их себе сам установил, а я подключал под его учетной записью лично сидя за его компом. А вот удаленно удалить не могу их.. Можно это так же средствами Поша сделать?
0 |
KDE777 1886 / 1108 / 428 Регистрация: 22.01.2016 Сообщений: 3,050 |
||||||||
01.03.2018, 11:00 |
||||||||
Сообщение от newlife_86 Но все таки есть ли возможность дистанционно удалять такие принтеры которые были установлены от учетной записи пользователя. Решения для удаления принтеров вам показали:
или
Теперь можете попробовать: 1. Cоздать задание в планировщике, которое сработает от имени вошедшего пользователя. Не по теме: Но повторюсь — «при наличие AD, задача из этой темы проще всего решается через Group Policy». Я бы лично, добавлял/удалял принтеры пользователей исключительно через GPO (что собственно и делаю), а не пытался бы реализовать это стоя в гамаке на лыжах (я про свой скрипт из ответа #18 :))
0 |
Новые блоги и статьи
Все статьи Все блоги / |
||||
Как перейти от Waterfall к Agile
EggHead 06.05.2025 Каскадная модель разработки Waterfall — классический пример того, как благие намерения превращаются в организационный кошмар. Изначально созданная для упорядочивания хаоса и внесения предсказуемости. . . |
Оптимизация SQL запросов — Продвинутые техники
Codd 06.05.2025 Интересно наблюдать эволюцию подходов к оптимизации. Двадцать лет назад всё сводилось к нескольким простым правилам: «Избегайте SELECT *», «Используйте индексы», «Не джойните слишком много таблиц». . . . |
Создание микросервисов с gRPC и Protobuf в C++
bytestream 06.05.2025 Монолитные приложения, которые ещё недавно считались стандартом индустрии, уступают место микросервисной архитектуре — подходу, при котором система разбивается на небольшие автономные сервисы, каждый. . . |
Многопоточность и параллелизм в Python: потоки, процессы и гринлеты
py-thonny 06.05.2025 Параллелизм и конкурентность — две стороны многопоточной медали, которые постоянно путают даже бывалые разработчики. Конкурентность (concurrency) — это когда ваша программа умеет жонглировать. . . |
Распределенное обучение с TensorFlow и Python
AI_Generated 05.05.2025 В машинном обучении размер имеет значение. С ростом сложности моделей и объема данных одиночный процессор или даже мощная видеокарта уже не справляются с задачей обучения за разумное время. Когда. . . |
CRUD API на C# и GraphQL
stackOverflow 05.05.2025 В бэкенд-разработке постоянно возникают новые технологии, призванные решить актуальные проблемы и упростить жизнь программистам. Одной из таких технологий стал GraphQL — язык запросов для API,. . . |
Распознавание голоса и речи на C#
UnmanagedCoder 05.05.2025 Интеграция голосового управления в приложения на C# стала намного доступнее благодаря развитию специализированных библиотек и API. При этом многие разработчики до сих пор считают голосовое управление. . . |
Реализация своих итераторов в C++
NullReferenced 05.05.2025 Итераторы в C++ — это абстракция, которая связывает весь экосистему Стандартной Библиотеки Шаблонов (STL) в единое целое, позволяя алгоритмам работать с разнородными структурами данных без знания их. . . |
Разработка собственного фреймворка для тестирования в C#
UnmanagedCoder 04.05.2025 C# довольно богат готовыми решениями – NUnit, xUnit, MSTest уже давно стали своеобразными динозаврами индустрии. Однако, как и любой динозавр, они не всегда могут протиснуться в узкие коридоры. . . |
Распределенная трассировка в Java с помощью OpenTelemetry
Javaican 04.05.2025 Микросервисная архитектура стала краеугольным камнем современной разработки, но вместе с ней пришла и головная боль, знакомая многим — отслеживание прохождения запросов через лабиринт взаимосвязанных. . . |
Наверх