Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Как получить список расшаренных принтеров?

Ответить
Настройки темы
PowerShell - [решено] Как получить список расшаренных принтеров?

Новый участник


Сообщения: 44
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: yanus74
Дата: 18-07-2015
Здравствуйте!
Настраиваю сервер печати в домене на windows server 2008r2.
Стоял вопрос, как подключать принтеры, расшаренные на сервере, пользователям.
Изучив множество решений, пришел к такому:
1. На каждый принтер назначил группу безопасности. Если пользователь не состоит в группе, то он не сможет подключить принтер, и печатать на него.
2. Политикой разрешить пользователю устанавливать драйвера для принтеров.
3. установку/удаление принтером производить logon скриптом:

алгоритм скрипта:
1. получить список установленных (подключенных) принтеров.
2. Все принтеры подключенные с сервера печати, но без доступа ( если ранее пользователь имел доступ к принтеру, состоял в группе, а потом пользователя удалили из группы безопасности) отключить.
3. получить список всех принтеров с сервера (список можно отфильтровать по доступности), подключить все принтеры из списка ( с подавлением ошибки о отсутствие доступа) ( наверно, нужна будет проверка на уже подключенные).

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

И вопрос: Как получить список расшаренных принтеров с сервера печати, без прав администратора? Подскажите пожалуйста.

Отправлено: 19:37, 17-07-2015

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата yanus74:
Все решения которые я находил (Win32_Printer), требовали прав администратора на сервере, »
Приведите примеры некоторых из «всех решений».

Отправлено: 21:46, 17-07-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 44
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Iska:
Профиль | Отправить PM | Цитировать | Сообщить модератору
Цитата yanus74:
Все решения которые я находил (Win32_Printer), требовали прав администратора на сервере, »
Приведите примеры некоторых из «всех решений». »
Все что я находил, было реализовано через wmi class Win32_Printer. Просто разное оформление.

Get-WmiObject -Class Win32_Printer -ComputerName

поискал на английском, нашел еще "net view \\MyServer ", есть еще какие нибудь способы?)

Интересуют решение на powershell

Последний раз редактировалось yanus74, 17-07-2015 в 22:08.


Отправлено: 21:48, 17-07-2015 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


yanus74, так вот я и спрашиваю, чтобы посмотреть. Я не уверен, что простое перечисление требует наличия административных прав.

Отправлено: 22:10, 17-07-2015 | #4


Новый участник


Сообщения: 44
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Iska:
yanus74, так вот я и спрашиваю, чтобы посмотреть. Я не уверен, что простое перечисление требует наличия административных прав. »
На сколько я понял, коммандлет Get-WmiObject с ключом -ComputerName выполняет запуск WMI класса на указанном компьютере, и если указать сервер, то выдает ошибку, что не достаточно прав. Локально отрабатывает, под пользователем.

Код: Выделить весь код
Get-WmiObject -Class Win32_Printer -ComputerName W2K8R2-PS-TEST
Get-WmiObject : Отказано в доступе. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))
строка:1 знак:14
+ Get-WmiObject <<<<  -Class Win32_Printer -ComputerName W2K8R2-PS-TEST
    + CategoryInfo          : NotSpecified: (:) [Get-WmiObject], UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
Если запустить консоль с правами администратора домена, то коммандлет возвращает все принтеры ( и не шаренные) с сервера

Отправлено: 22:16, 17-07-2015 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Вообще-то должно быть «Win32_Share», а не «Win32_Printer»:
Код: Выделить весь код
gwmi -Class Win32_Share -ComputerName W2K8R2-PS-TEST -Filter 'Type=1'
P.S. Я сейчас, к сожалению, не скажу навскидку разницу для «Type» между «Print Queue» и «Print Queue Admin». По поводу подключений попробую посмотреть завтра.

Отправлено: 23:18, 17-07-2015 | #6


Новый участник


Сообщения: 44
Благодарности: 2

Профиль | Отправить PM | Цитировать


Iska,
результат выполнения из под обычного пользователя: gwmi -Class Win32_Share -ComputerName W2K8R2-PS-TEST -Filter 'Type=1'
Код: Выделить весь код
Get-WmiObject : Отказано в доступе. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))
строка:1 знак:5
+ gwmi <<<<  -Class Win32_Share -ComputerName W2K8R2-PS-TEST -Filter 'Type=1'
    + CategoryInfo          : NotSpecified: (:) [Get-WmiObject], UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Отправлено: 23:28, 17-07-2015 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


yanus74, а на WSH, интересно, как отреагирует?

Отправлено: 23:51, 17-07-2015 | #8


Новый участник


Сообщения: 44
Благодарности: 2

Профиль | Отправить PM | Цитировать


Iska, я не знаю как на vbs это реализовать.

В любом случае, я считаю, что работать не будет. Т.к. в PowerShell, командлет Get-WmiObject запускает на удаленном компьютере ( ключ -ComputerName) Win32_Share. А для этого нужен доступ к этому объекту ( можно конечно разрешить, но вот как , я пока хз. ну и если разрешить доступ для обычных пользователей, к этому объекту wmi, то пользователь через этот объект сможет управлять принтерами ( сетевыми папками)).

Сами Win32_Share и Win32_Printer не имеют методов, указывающих, с какого компьютера получать вывод.

Видимо, нужен либо другой объект wmi или com, который будет иметь метод, в который можно будет передать имя компьютера, с которого нужно получить данные.

Отправлено: 07:54, 18-07-2015 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата yanus74:
Сами Win32_Share и Win32_Printer не имеют методов, указывающих, с какого компьютера получать вывод.
Видимо, нужен либо другой объект wmi или com, который будет иметь метод, в который можно будет передать имя компьютера, с которого нужно получить данные. »
Имя машины задаётся при подключении к ней.

Отправлено: 08:12, 18-07-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Как получить список расшаренных принтеров?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как получить список файлов находящихся в каталоге? Kocuk Microsoft Windows 2000/XP 8 27-02-2012 23:25
[решено] Как распечатать(получить) список пользователей домена. RedX Microsoft Windows NT/2000/2003 4 22-04-2010 09:03
[решено] Как получить список пользователей Vagac AutoIt 2 06-11-2009 12:24
Разное - [решено] Как получить список локальных пользователей ZlojMyX Microsoft Windows 2000/XP 1 16-03-2009 11:16
Как получить список пользователей AD? Evgeniy15 Microsoft Windows NT/2000/2003 10 09-04-2007 18:03




 
Переход