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

Компьютерный форум 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

 

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


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

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


Вот такая конструкция получилась, с использованием net view
Код: Выделить весь код
net view \\W2K8R2-PS-TEST | foreach -process {if ($_ -Like "*Печать*") {(($_).Remove(($_).IndexOf("Печать"))).Trim()}}
выводит:
Код: Выделить весь код
1 этаж ИТ отдел (M1214) черно-белый
1 этаж-рецепция (M1536) черно-белый
принтер-чб(ID670)
за место:
Код: Выделить весь код
Общие ресурсы на \\W2K8R2-PS-TEST



Имя общего ресурса                   Тип     Используется как  Комментарий

-------------------------------------------------------------------------------
1 этаж ИТ отдел (M1214) черно-белый  Печать                    1 этаж ИТ отдел (M1214) черно-белый
1 этаж-рецепция (M1536) черно-белый  Печать                    1 этаж-рецепция (M1536) черно-белый
принтер-чб(ID670)                    Печать                    принтер-чб(ID670)
Команда выполнена успешно.

Отправлено: 09:32, 18-07-2015 | #11



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

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


Ветеран


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

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


Цитата yanus74:
В любом случае, я считаю, что работать не будет. »
К сожалению, именно так. Вот код на WSH:
Код: Выделить весь код
Option Explicit

Dim strComputer
Dim objSWbemObjectEx


strComputer = "W2K8R2-PS-TEST"

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(strComputer, "root\cimv2")
	For Each objSWbemObjectEx In .ExecQuery("SELECT * FROM Win32_Share WHERE Type = 1")
		With objSWbemObjectEx
			WScript.Echo .Name, .Path, .Description, .Type
		End With
	Next
End With

WScript.Quit 0
Под простым пользователем — именно «отлуп» при попытке «поуправлять» удалённой машиной .

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


Ветеран


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

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


Попробуйте с помощью Get-Printer:
Код: Выделить весь код
help get-printer -examples

Отправлено: 16:21, 18-07-2015 | #13


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


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

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


Цитата Foreigner:
Попробуйте с помощью Get-Printer: »
Get-Printer работает только в win 8.1 и выше, и win 2012 r2.

Отправлено: 16:46, 18-07-2015 | #14


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


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

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


Вообщем скрипт я себе написал, оставлю его здесь, вдруг компу пригодится.
Напомню, принтеры расшарены на сервере-печати, на каждый принтер назначена группа доступа. Так же есть группа доступа для политики, которая добавляет logon скрипт для пользователя. Что бы пользователь мог ставить драйвера на принтер, через политику разрешается установка:
Код: Выделить весь код
Конфигурация пользователя - Политика- Административные шаблоны - Панель управления - принтеры
Ограничения указания и печати - Включено
При установке драйверов для нового подключения: Не показывать предупреждение или запрос на повышение прав
При обновлении драйверов для нового подключения: Не показывать предупреждение или запрос на повышение прав
Сам logon скрипт (powershell):
Код: Выделить весь код
#Удаление принтера к которому утрачен доступ
Get-WmiObject -Class Win32_Printer | foreach { if ($_.PrinterState -eq $null) {$_.delete()}}
#Подключить все доступные принтеры на сервере \\W2K8R2-PS-TEST
net view \\W2K8R2-PS-TEST | foreach -process {
	if ($_ -Like "*Печать*") {
		$path = "\\W2K8R2-PS-TEST\" + (($_).Remove(($_).IndexOf("Печать"))).Trim()
		([WMICLASS]'Win32_Printer').AddPrinterConnection($path)
	}
}
Толком я его не тестировал, все еще впереди, но по отдельности все работало как запланировано.
Всем спасибо за помощь)

Последний раз редактировалось yanus74, 18-07-2015 в 20:12.


Отправлено: 19:49, 18-07-2015 | #15



Компьютерный форум 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




 
Переход