Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Win Server 2003. Принтеры. Автономная работа. CMD.

Автор: NeSViT
Дата сообщения: 09.12.2013 16:51
Доброго времени суток! Помогите, возможно кто-то сталкивался с подобной ситуацией.
Необходимо изменять состояние "Автономная работа" у определенного принтера с помощью команды в cmd или импорта ветки реестра.

Исходные данные:

Есть сервер c Windows Server 2003, назовем его "server".
Есть компьютер в локальной сети, пусть будет comp1, с принтером, назовем его очередь "printer".
На server по LPD заведен printer и с сервера он автоматически раздается другим пользователям.

Проблема:
Иногда comp1 выключается и если в это же время запланирована перезагрузка server, то после его включения он не видит очереди печати printer на comp1. Соответственно принтер на сервере переводится в "Автономный режим".

Хотелось бы автоматически снимать галочку с указанного принтера на сервере.

Надеюсь доходчиво описал ситуацию.
Спасибо за возможные советы по реализации этого мероприятия.
Автор: NeSViT
Дата сообщения: 18.12.2013 15:56
Нашел в интернете следующее решение. VBS-скрипт.
Евгений, спасибо вам большое!


Код: Set Shell = CreateObject("Shell.Application")
Set objFolder = Shell.NameSpace(4)

For Each printer In objFolder.Items
If InstrRev(objFolder.GetDetailsOf(printer, 2), "Не подключен") <> 0 Then ' если принтер в режиме "Автономная работа"
printer.InvokeVerbEx("&Использовать принтер в оперативном режиме")
End If

If InstrRev(objFolder.GetDetailsOf(printer, 2), "Приостановлена") <> 0 Then ' если принтер в режиме "Приостановленой печати"
printer.InvokeVerbEx("Возобновить &печать")
End If
Next
Автор: 3dHelg
Дата сообщения: 06.03.2014 12:59
Класс - как раз то, что нужно мне!
Вопрос на засыпку - а можно ли тоже самое сделать через cmd, а то есть готовый скрипт в командной строке и не охота его переделывать под vbs?
Автор: NeSViT
Дата сообщения: 07.03.2014 23:47
3dHelg, записать в файл *.cmd

cscript filename.vbs

Это имели в виду?
Автор: 3dHelg
Дата сообщения: 09.03.2014 10:59
Не совсем.
У меня на работе есть скрипт в батнике (Если слетели принтеры.bat):
%SYSTEMROOT%\system32\net stop spooler
@ping 127.0.0.1 -n 22 >NUL
del %SYSTEMROOT%\system32\spool\PRINTERS\*.* /q /s
%SYSTEMROOT%\system32\net start spooler
pause
Этот скрипт сбрасывает зависшие задания на всех принтерах, но он не умеет снимать автономную работу и возобновлять приостановленные принтеры, а Ваш умеет эти 2 вещи делать. Было бы хорошо скрестить вместе ежа с ужом, дабы всё выполнялось в одном едином коде, тогда сотрудники на работе вообще бы забыли о многих проблемах с принтерами и я бы спал крепче.
Поэтому я и спросил - есть ли аналог Вашего скрипта в командной строке или мне всё же придётся взяться с мыслями и переписать мой код под vbs, чтобы потом его дополнить Вашим!?
Просто неохота разделять на 2 кода, хотя может и стоит попробовать, чтобы не заморачиваться.
Заранее спасибо за ответ...
Автор: NeSViT
Дата сообщения: 04.04.2014 22:54
3dHelg, добиться решения данной проблемы в командной строке мне не удалось.
Пробовал импорт ветки реестра.
Находил значение, которое приобретало значение рандомное и нулевое, когда принтер переключался в "автономный режим", но добиться работы изменяя это значения в реестре, к сожалению, не вышло...

Не понял назначения этой строчки:

Код: @ping 127.0.0.1 -n 22 >NUL
Автор: nikhelfer
Дата сообщения: 06.04.2014 18:13

Цитата:
@ping 127.0.0.1 -n 22 >NUL

Задержка на 22 секунды.
Автор: 3dHelg
Дата сообщения: 06.04.2014 21:40
nikhelfer, всё правильно (@ping 127.0.0.1 -n 22 >NUL ) - это задержка в секундах. Так функция задержки реалтзована для обычных рабочих станций, потому что у них нет сервачной команды sleep. Нужна эта задержка чтобы успела правильно остановиться служба.
NeSViT отвечаю на Ваш вопрос:
Это вы свой скрипт сами на сервере запускаете, когда жалуются? Не мешает пользователям, которые работают с другими принтерами в это же время?
Ни в коем случае. Сами пользователи запускают этот скрипт!
Так же отвечу на Ваши последующие вопросы:
1. У Вас пользователи имеют админские права?
Ответ: Ни в коем случае - они имеют простые права пользователя домена!
2. А как же они могут запустить данный скрипт без админских прав?
Ответ: для этого я разработал специальную программу, которая в скрытом режиме позволяет запускать данный скрипт от имени другого пользователя! Моя программа умеет принимать параметры управления, в которых я и указываю на то, что надо запустить этот скрипт. В итоге они видят только окно cmd. Сам батник я немного переработал так, что пользователи видят только служебные надписи. А если запускать эту программу без ключей, то она запускается в видимом режиме и позволяет мне, как админу, запускать от имени любого пользователя разные оснастки управления, что очень сильно мне облегчает жизнь в удалённой настройке пользовательских компов.
Поэтому у меня всё достаточно гибко и просто настроено и работает. Можно даже сказать, что фактически автомат - по крайней мере для меня, потому что мне самому ничего не приходится делать.
И не подумайте, что я ленивый. Я просто как и все люди хочу нормально спать по ночам. Так получилось, что я работаю в территориально распределённой по всей России компании и я не хочу, чтобы меня разбудили ночью из какого-либо филиала с глупыми вопросами, мол у них не работают принтеры.
Прошу прощения за лирику.
Жизнь админа должна быть проще!


Добавлено:
NeSViT
Чуть не забыл...

Цитата:
3dHelg, добиться решения данной проблемы в командной строке мне не удалось.
Пробовал импорт ветки реестра.
Находил значение, которое приобретало значение рандомное и нулевое, когда принтер переключался в "автономный режим", но добиться работы изменяя это значения в реестре, к сожалению, не вышло...

Спасибо за оказанную помощь в проведении исследования.
Теперь я для себя окончательно решил, что надо мой батник конвертить в vbs и приделать к нему Ваш скрипт. В итоге получиться реальная боевая машина, способная исправить многие проблемы принтера!
На досуге займусь этим вопросом...
Автор: NeSViT
Дата сообщения: 06.04.2014 23:52
Я для доступа пользователя к службе subinacl использую.
Чаще всего это openvpn на WinXP, или обновление какой-то бухгалтерской программы без моего вмешательства.

Жизнь админа должна быть проще! Тут с Вами полностью согласен!
Об этом думают все админы и стремятся к этому.
Автор: 3dHelg
Дата сообщения: 07.04.2014 09:36

Цитата:
Я для доступа пользователя к службе subinacl использую.
Чаще всего это openvpn на WinXP, или обновление какой-то бухгалтерской программы без моего вмешательства.

subinacl - бегло поглядел на описание сего чуда - как я понял - эта более крутая штука по сравнению с моим арсеналом runas и cacls. надо будет заценить на досуге. спасибо за инфу!
кстати, вопрос на засыпку - пароли этой утилите нужно в каком-либо виде указывать?
Автор: NeSViT
Дата сообщения: 07.04.2014 17:42
Пароли указывать не нужно.
Использую что-то типа такого:


Код: subinacl /service СЛУЖБА /grant=ДОМЕН\ПОЛЬЗОВАТЕЛЬ=TOP
Автор: Radjah
Дата сообщения: 16.12.2014 08:09

Цитата:
%SYSTEMROOT%\system32\net stop spooler
@ping 127.0.0.1 -n 22 >NUL
del %SYSTEMROOT%\system32\spool\PRINTERS\*.* /q /s
%SYSTEMROOT%\system32\net start spooler
pause

Но net возвратит управление только после полной остановки службы, так что смысла в эмуляции sleep нет никакого.
Специально проверил для WinXP.

inb4: Некропостинг во все поля, да.
Автор: nikoladimitri
Дата сообщения: 16.12.2014 22:03
When the GPMC is installed on servers or client computers

Страницы: 1

Предыдущая тема: Windows 10. Обсуждение работы (I)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.