Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Win Server 2003. Принтеры. Автономная работа. CMD.

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

NeSViT

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток! Помогите, возможно кто-то сталкивался с подобной ситуацией.
Необходимо изменять состояние "Автономная работа" у определенного принтера с помощью команды в cmd или импорта ветки реестра.
 
Исходные данные:
 
Есть сервер c Windows Server 2003, назовем его "server".
Есть компьютер в локальной сети, пусть будет comp1, с принтером, назовем его очередь "printer".
На server по LPD заведен printer и с сервера он автоматически раздается другим пользователям.
 
Проблема:
Иногда comp1 выключается и если в это же время запланирована перезагрузка server, то после его включения он не видит очереди печати printer на comp1. Соответственно принтер на сервере переводится в "Автономный режим".  
 
Хотелось бы автоматически снимать галочку с указанного принтера на сервере.
 
Надеюсь доходчиво описал ситуацию.  
Спасибо за возможные советы по реализации этого мероприятия.

Всего записей: 13 | Зарегистр. 09-12-2013 | Отправлено: 18:51 09-12-2013
NeSViT

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нашел в интернете следующее решение. 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  

Всего записей: 13 | Зарегистр. 09-12-2013 | Отправлено: 17:56 18-12-2013 | Исправлено: NeSViT, 22:10 09-01-2014
3dHelg



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Класс - как раз то, что нужно мне!
Вопрос на засыпку - а можно ли тоже  самое сделать через cmd, а то есть готовый скрипт в командной строке и не охота его переделывать под vbs?

Всего записей: 112 | Зарегистр. 01-11-2010 | Отправлено: 14:59 06-03-2014
NeSViT

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
3dHelg, записать в файл *.cmd
 
cscript filename.vbs
 
Это имели в виду?

Всего записей: 13 | Зарегистр. 09-12-2013 | Отправлено: 01:47 08-03-2014 | Исправлено: NeSViT, 01:49 08-03-2014
3dHelg



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не совсем.
У меня на работе есть скрипт в батнике (Если слетели принтеры.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 кода, хотя может и стоит попробовать, чтобы не заморачиваться.
Заранее спасибо за ответ...

Всего записей: 112 | Зарегистр. 01-11-2010 | Отправлено: 11:59 09-03-2014 | Исправлено: 3dHelg, 12:02 09-03-2014
NeSViT

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

Код:
@ping 127.0.0.1 -n 22 >NUL

 
Это вы свой скрипт сами на сервере запускаете, когда жалуются? Не мешает пользователям, которые работают с другими принтерами в это же время?
 
P.S. Долго ничего не отвечал, т.к. не заходил на форум.

Всего записей: 13 | Зарегистр. 09-12-2013 | Отправлено: 23:54 04-04-2014 | Исправлено: NeSViT, 00:05 05-04-2014
nikhelfer

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

Задержка на 22 секунды.

Всего записей: 193 | Зарегистр. 16-08-2003 | Отправлено: 19:13 06-04-2014 | Исправлено: nikhelfer, 19:17 06-04-2014
3dHelg



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

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

Спасибо за оказанную помощь в проведении исследования.
Теперь я для себя окончательно решил, что надо мой батник конвертить в vbs и приделать к нему Ваш скрипт. В итоге получиться реальная боевая машина, способная исправить многие проблемы принтера!
На досуге займусь этим вопросом...

Всего записей: 112 | Зарегистр. 01-11-2010 | Отправлено: 22:40 06-04-2014 | Исправлено: 3dHelg, 22:41 06-04-2014
NeSViT

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я для доступа пользователя к службе subinacl использую.
Чаще всего это openvpn на WinXP, или обновление какой-то бухгалтерской программы без моего вмешательства.
 
Жизнь админа должна быть проще! Тут с Вами полностью согласен!
Об этом думают все админы и стремятся к этому.

Всего записей: 13 | Зарегистр. 09-12-2013 | Отправлено: 00:52 07-04-2014 | Исправлено: NeSViT, 01:05 07-04-2014
3dHelg



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

subinacl - бегло поглядел на описание сего чуда - как я понял - эта более крутая штука по сравнению с моим арсеналом runas и cacls. надо будет заценить на досуге. спасибо за инфу!
кстати, вопрос на засыпку - пароли этой утилите нужно в каком-либо виде указывать?

Всего записей: 112 | Зарегистр. 01-11-2010 | Отправлено: 10:36 07-04-2014
NeSViT

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пароли указывать не нужно.
Использую что-то типа такого:
 

Код:
subinacl /service СЛУЖБА /grant=ДОМЕН\ПОЛЬЗОВАТЕЛЬ=TOP

 
Запускать под администратором, стоять в папке где лежит subinacl.exe
Удобно делать Far'ом.
 

Всего записей: 13 | Зарегистр. 09-12-2013 | Отправлено: 18:42 07-04-2014
Radjah



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
   %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: Некропостинг во все поля, да.

Всего записей: 223 | Зарегистр. 09-05-2007 | Отправлено: 09:09 16-12-2014
nikoladimitri

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
When the GPMC is installed on servers or client computers

Всего записей: 36 | Зарегистр. 14-12-2014 | Отправлено: 23:03 16-12-2014
ForAnyShit



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сам только что озадачился именно этой галочкой "Работать автономно" и вот как она убирается:
 
rundll32.exe printui.dll,PrintUIEntry /Xs /n "Длинное Название ВашегоПринтера" attributes -WorkOffline
 
Так, соответственно, ставится:
 
rundll32.exe printui.dll,PrintUIEntry /Xs /n "Длинное Название ВашегоПринтера" attributes +WorkOffline

Всего записей: 13 | Зарегистр. 15-01-2011 | Отправлено: 16:49 26-06-2018
vzhik777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ForAnyShit
 
хм.. пригодилось...)))

Всего записей: 680 | Зарегистр. 03-03-2007 | Отправлено: 15:20 04-02-2022
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Win Server 2003. Принтеры. Автономная работа. CMD.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru