Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Автоматизация администрирования

Автор: AlexSSS
Дата сообщения: 22.07.2005 10:28
> Возможен ли запуск скрипта vbs из скрипта же vbs с правами другого пользователя?
запуск того же RUNAS из VBS
RunAs не берет пароль из командной строки, но скриптом это решается - скрипт запускает RunAs, а чуть позже передает туда пароль, как бы набранный с клавиатуры.
Есть еще вариант - использовать PsExec от SysInternals - утилита позволяет из командной строки запускать процессы под именем любого пользователя (и даже на удаленном компьютере)
Автор: WereWolf
Дата сообщения: 22.07.2005 10:52

Цитата:
скрипт запускает RunAs, а чуть позже передает туда пароль, как бы набранный с клавиатуры

а как, простите, это сделать?
Автор: FreemanRU
Дата сообщения: 22.07.2005 11:04
WereWolf

Код:
Set Shell = WScript.CreateObject("WSCript.Shell")
WScript.Sleep 100
Shell.SendKeys "ThisIsMyPassword"
WScript.Sleep 100
WshShell.SendKeys "{ENTER}"
Автор: AlexSSS
Дата сообщения: 22.07.2005 11:43
> а как, простите, это сделать?
подобный пример с микрософта
http://www.microsoft.com/technet/scriptcenter/solutions/appcompat/scenario2-vbs.mspx

большую часть выбрасываешь
Автор: FreemanRU
Дата сообщения: 22.07.2005 11:50
AlexSSS

Цитата:
The user must enter the local Administrator password

А вот что подумал - ведь SendKeys посылает просто нажатие, а логон скрипт работает в бекграунде.
Т.е. либо придется работать с контесктом командной строки (не предсавляю как это в скриптах делать), либо выводить логон-скрпит на экран, через политику...
Автор: WereWolf
Дата сообщения: 22.07.2005 11:53
Спасибо, попробую...
А насчет передачи параметра в скрипт?
Автор: AlexSSS
Дата сообщения: 22.07.2005 11:57
ой,это я не посмотрел до конца, что делает скрипт.
сейчас найду рабочий вариант

Добавлено:
рабочий вариант с RunAs

set WshShell = CreateObject("WScript.Shell")
WshShell.Run "runas /user:domain\user notepad"
WScript.Sleep 100
WshShell.Sendkeys "password~"
Автор: FreemanRU
Дата сообщения: 22.07.2005 12:13
WereWolf

Цитата:
А насчет передачи параметра

А какие парметры? Если ты о имени пользователя, то ничего передовать не надо, прям используй %username%

Код:
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WScript.Echo WshShell.ExpandEnvironmentStrings("%Username%")
Автор: AlexSSS
Дата сообщения: 22.07.2005 12:28
FreemanRU
> Опять же - см. мой предыдущий пост.
> Надо выводить логон скрипт на экран.
не понял.
WshShell.Run "runas /user:domain\user notepad" уже выведет окно дос промта на экран на доли секунд. Командную строку с именем пользователя еще можно разглядеть, но пароль увидеть все равно нельзя.

Или хочется, чтобы на экран вообще ничего не выводилось? Слету могу предложить только использование PSEXEC
Автор: FreemanRU
Дата сообщения: 22.07.2005 12:42
AlexSSS
Изначально у WereWolf стояла задача прикрутить это дело в логон-скрипт.

Но если этот скрипт установить в кач-ве логонного, то он не сработает, т.к. пароль некуда будет вводить. Вот и говорю, что надо в политике безопасноти править способ отображения логон-скриптов.
Автор: AlexSSS
Дата сообщения: 22.07.2005 12:48
понял. У меня самого логон скрипты запускаются не политиками, а на каждом пользователе, причем они и так выводятся на экран, поэтому не вьехал в проблему
Автор: WereWolf
Дата сообщения: 22.07.2005 13:41

Цитата:
А какие парметры?


Нет, передать ip-шник... Хотя... может и не понадобится. Подумать надо, как это по-другому организовать.
при runas можно взять переменные среды, но проблема с передачей пароля
при psexec переменные среды по-моему не передаются...

Автор: AlexSSS
Дата сообщения: 22.07.2005 13:45
передача параметров для VBS
http://forum.ru-board.com/topic.cgi?forum=33&topic=1601
Автор: leputain
Дата сообщения: 25.07.2005 05:11
нужен скрипт,чтобы юзер не мог закрыть прогу.
если закроет - чтобы запускалась снова свернутая в таскбар.
js или vbs.

и я так понимаю, если у него он стоит через груп полиси в логоне, то избежать этого юзеру никак? или он через таск менеджер может закрыть процесс wscript?
Автор: pazdak
Дата сообщения: 26.07.2005 09:12
leputain
Примерный алгоритм, как можно поступить

for i = 1 to 2
Randomize
Wscript.Sleep Int(100000000*Rnd)/1.2
if *Проверка запущена ли программа, если нет* Then
WshShell.Run "Запускаем программу", 0, True
End If
i = 1
next

Можно сделать так чтобы скрипт запускался как сервис (понадобятся файлы instsrv.exe, srvany.exe из Resouce Kit).
Файл wscript.exe можно скопировать под другим названием, чтобы в процессах внимание не привлекал.
Автор: vserd
Дата сообщения: 27.07.2005 10:40
Всем доброго здравия.
Возникла такая необходимость.
Автоматическая (Unattended) установка. Хочется задать имя CD-ROM (если он есть конечно) на определденную букву. В ручную запросто: compmgmt.msc и далее по интерфейсу. А как можно то-же самое сделать с помощью программного кода (bat, OLE, VBScript т.п.)?
Автор: larryOnOff
Дата сообщения: 29.07.2005 20:24
Smitis

Цитата:
Сетевые настройки можно сохранить из командной строки:
netsh dump > файл
и восстановить обратно:
netsh exec файл

Помнишь ты писал, так вот эта команда не сохраняет рабочую группу. А надо бы это сделать. Как? Подскажите пожалуйста.
Автор: pe3yc
Дата сообщения: 01.08.2005 05:15
leputain

Цитата:
нужен скрипт,чтобы юзер не мог закрыть прогу.
если закроет - чтобы запускалась снова свернутая в таскбар.

можно запустить программу как сервис и установить в параметрах restart on failure.
Единственное что может сделать юзер - это остановить сервис, но эти права у него несложно отобрать. Поможет запустить программу как сервис _http://www.firedaemon.com/
Автор: leputain
Дата сообщения: 01.08.2005 06:05
скажу так, мне нужно у опред. юзеров, т.е. через груп полиси и группы безопасности запускать автораном при логоне аутлук, и если его закроют - запускать заново.
Автор: AlexSSS
Дата сообщения: 01.08.2005 08:17
leputain
как вариант, настраиваешь планировщик (Scheduled Tasks в XP) на запуск скрипта каждые N минут. Скрипт проверяет наличие запущенного оутлука, и, если он не запущен, запускает его.

список запущенных процессов можно проверить с помощью WMI, примерно так

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process")

Found = False
For Each objProcess in colProcessList
ProcessName = objProcess.name
If ProcessName = "OUTLOOK.EXE"
Found = True
End If
Next
If not Found
.........
End If

Добавлено:
PS. Можно еще попробовать запустить Outlook, как процесс (см предыдущее сообщение)
Автор: larryOnOff
Дата сообщения: 01.08.2005 18:46
Нужен скрипт, который отрубает такой-то Сервис. Желательно не на VB.
Заранее спасибо.
Автор: AlexSSS
Дата сообщения: 01.08.2005 20:07
larryOnOff
посмотри, может
pslist и pskill из PSTools помогут тебе (это дистанционно)
а локально NET STOP service

Автор: urel
Дата сообщения: 02.08.2005 11:43
AlexSSS
а если усложнить ситуацию до терминального сервера?
ока пользуюсь вариантом - бесконечный цикл кторый запускает оутлук и ждет до его закрытия, дальше опять...
минус - все время в памяти висит интерпритатор
Автор: Smitis
Дата сообщения: 02.08.2005 17:08
larryOnOff

Цитата:
Нужен скрипт, который отрубает такой-то Сервис. Желательно не на VB.

sc.exe /?
Например остановить сервис:
sc stop SharedAccess
отключить запуск нафиК:
sc config SharedAccess start= disabled
Может работать по сети
Автор: AlexSSS
Дата сообщения: 03.08.2005 11:33
urel
>пока пользуюсь вариантом - бесконечный цикл кторый запускает
> оутлук и ждет до его закрытия, дальше опять...
> минус - все время в памяти висит интерпритатор
да и бог с ним, пусть висит, ресурсов он жрать при этом не должен ;o)

насколько я понимаю, проблема в том, что пользователи закрывают Outlook, в результате чего не сразу видят новую почту?
Я бы здесь пошел административными мерами - ответственность за оперативную проверку почты должна лежать на самом пользователе. Если он закрыл Outlook, значит он не исполняет свои обязанности.

Всякие варианты с автозапуском Outlook-a могут теоретически привести к тому, что он будет пытаться перезапустится и в моменты, когда пользователь выходит из системы.

Что еще можно покопать.
1. Посмотреть сторонние mail checkers. Они могут запускаться как сервис и висеть в трее, периодически сканируя почтовые ящики с проверкой прихода новой почты.
2. Посмотреть VBA для Outlook. Очень может быть там есть событие (event) типа BeforeClose, на которое можно повесить код перезапуска (или отмены завершения)
Автор: urel
Дата сообщения: 04.08.2005 10:25
AlexSSS
тот вариант запуска оутлука которым я пользуюсь - вобщем имеет два замеченых минуса -
- клиент всегда может закрыть процес cmd.exe запущеный от его имени
- иногда возникает глюк - start /wait не ждет завершения работы оут лука и идет дальше по циклу - как следствие милион аутлуков на рабочем столе... плох, но и бывает оч редко

1й вариант не пройдет - из за того что все происходит на терминальном сервере, а сервис - актуален только для консоли (или не так?)
2й уже интересно, но такого не нашел а есть невнятный Application_Quit, который е меня почемут сработал один раз и больше не захотел... =)
но вопрос - как привезать скрипт к пользовательским аутлукам, и закрыть паролем - наверн только руками...

вобщем получается - административные меры - форева, + бесконечный цикл =)
Автор: AlexSSS
Дата сообщения: 04.08.2005 15:34
urel
> 1й вариант не пройдет - из за того что все происходит на терминальном сервере,
> а сервис - актуален только для консоли (или не так?)
Why not??? Я не проверял, но думаю, что у каждого просто будет запущено по одному сервису из под его учетной записи

> но вопрос - как привезать скрипт к пользовательским аутлукам,
> и закрыть паролем - наверн только руками...
не знаю. Я делал что-то подобное для Экселя.
Для Аутлука ничего не программировал, когда-то просто сметрел, что он весьма прилично интегрирован с VBA
Автор: urel
Дата сообщения: 04.08.2005 16:54
AlexSSS
1
получиться что для каждого пользователя нужно создавать свой сервис - это не есть правильно

2
с экселем тоже все хорошо было - буду посмотреть, но скорее всего оставлю как есть
Автор: FormatM
Дата сообщения: 09.08.2005 13:38
AlexSSS
А как на VBS можно размапить скрытый сетевой диск?
То есть чтобы его небыло видно в Explorer.
Автор: AlexSSS
Дата сообщения: 09.08.2005 14:02
FormatM
не понял о чем это ты
давай поподробнее

на стороне сервера зашариваются ресурсы. Если их зашаривать с $ на конце, то их не видно в обозревателях.
На стороне клиента диск либо замаплен (NET USE X: \\server\sharename) и его видно в эксплорере, либо нет, тогда его в эксплорере не видно.
даже если диск не замаплен, к зашаренному ресурсу можно обращаться по UNC имени, напр.
\\Server\Public$\kadry\spisok.xls

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Зеркалирование дисков Win2000


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