![]() |
Как получить список расшаренных принтеров?
Здравствуйте!
Настраиваю сервер печати в домене на windows server 2008r2. Стоял вопрос, как подключать принтеры, расшаренные на сервере, пользователям. Изучив множество решений, пришел к такому: 1. На каждый принтер назначил группу безопасности. Если пользователь не состоит в группе, то он не сможет подключить принтер, и печатать на него. 2. Политикой разрешить пользователю устанавливать драйвера для принтеров. 3. установку/удаление принтером производить logon скриптом: алгоритм скрипта: 1. получить список установленных (подключенных) принтеров. 2. Все принтеры подключенные с сервера печати, но без доступа ( если ранее пользователь имел доступ к принтеру, состоял в группе, а потом пользователя удалили из группы безопасности) отключить. 3. получить список всех принтеров с сервера (список можно отфильтровать по доступности), подключить все принтеры из списка ( с подавлением ошибки о отсутствие доступа) ( наверно, нужна будет проверка на уже подключенные). Все этапы, вроде как понятны, и широко описаны в интернете, за исключением, получения списка расшаренных на сервере принтеров. Все решения которые я находил (Win32_Printer), требовали прав администратора на сервере, а скрипт планируется запускать с правами пользователя. Конечно, можно сформировать список и сохранить его в ТХТ, и потом подключать принтеры ссылаясь на этот список. Но это план Б) И вопрос: Как получить список расшаренных принтеров с сервера печати, без прав администратора? Подскажите пожалуйста. |
Цитата:
|
Цитата:
Get-WmiObject -Class Win32_Printer -ComputerName поискал на английском, нашел еще "net view \\MyServer ", есть еще какие нибудь способы?) Интересуют решение на powershell |
yanus74, так вот я и спрашиваю, чтобы посмотреть. Я не уверен, что простое перечисление требует наличия административных прав.
|
Цитата:
Код:
Get-WmiObject -Class Win32_Printer -ComputerName W2K8R2-PS-TEST |
Вообще-то должно быть «Win32_Share», а не «Win32_Printer»:
Код:
gwmi -Class Win32_Share -ComputerName W2K8R2-PS-TEST -Filter 'Type=1' |
Iska,
результат выполнения из под обычного пользователя: gwmi -Class Win32_Share -ComputerName W2K8R2-PS-TEST -Filter 'Type=1' Код:
Get-WmiObject : Отказано в доступе. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED)) |
yanus74, а на WSH, интересно, как отреагирует?
|
Iska, я не знаю как на vbs это реализовать.
В любом случае, я считаю, что работать не будет. Т.к. в PowerShell, командлет Get-WmiObject запускает на удаленном компьютере ( ключ -ComputerName) Win32_Share. А для этого нужен доступ к этому объекту ( можно конечно разрешить, но вот как , я пока хз. ну и если разрешить доступ для обычных пользователей, к этому объекту wmi, то пользователь через этот объект сможет управлять принтерами ( сетевыми папками)). Сами Win32_Share и Win32_Printer не имеют методов, указывающих, с какого компьютера получать вывод. Видимо, нужен либо другой объект wmi или com, который будет иметь метод, в который можно будет передать имя компьютера, с которого нужно получить данные. |
Цитата:
|
Вот такая конструкция получилась, с использованием net view
Код:
net view \\W2K8R2-PS-TEST | foreach -process {if ($_ -Like "*Печать*") {(($_).Remove(($_).IndexOf("Печать"))).Trim()}} Код:
1 этаж ИТ отдел (M1214) черно-белый Код:
Общие ресурсы на \\W2K8R2-PS-TEST |
Цитата:
Код:
Option Explicit |
Попробуйте с помощью Get-Printer:
Код:
help get-printer -examples |
Цитата:
|
Вообщем скрипт я себе написал, оставлю его здесь, вдруг компу пригодится.
Напомню, принтеры расшарены на сервере-печати, на каждый принтер назначена группа доступа. Так же есть группа доступа для политики, которая добавляет logon скрипт для пользователя. Что бы пользователь мог ставить драйвера на принтер, через политику разрешается установка: Код:
Конфигурация пользователя - Политика- Административные шаблоны - Панель управления - принтеры Код:
#Удаление принтера к которому утрачен доступ Всем спасибо за помощь) |
Время: 21:38. |
Время: 21:38.
© OSzone.net 2001-