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

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

Автор: FreemanRU
Дата сообщения: 13.04.2006 17:53
Prening

Цитата:
покури TechNet Script Center Sample Scripts из шапки - там много есть

Все что ты написал там есть... и здесь тоже.... вместо Excel советую пользовать *.csv. Их писать удобнее, и можно потом в том же Excel открыть...
Автор: Reznikoff
Дата сообщения: 14.04.2006 07:34
Товарищи, а реально ли написать вбс скрипт, который выполняется и лежит на локальной машине.
При старте, еще до логина системы (это там где имя пасс домен) выводит окно с вопросом, и в зависимости от ответа меняет ключи реестра с доменом, ип адресом.
Интересует именно как его автозапустить до логина
Автор: urel
Дата сообщения: 14.04.2006 12:21
Reznikoff
в политиках компьютера или назначиные задачи - при старте системы, но вот начет окошек нужно пробовать


Добавлено:
а если не секрет - какого эффекта добиться нужно?
Автор: Reznikoff
Дата сообщения: 14.04.2006 14:12
urel
две локальной сети с разными доменами и ип адресами. соответсвенно надо перед логином выбрать сеть, автоматом установить нужный ип адрес, гейт, домен. вот и хочу перед логином править нужные строчки реестра
Автор: urel
Дата сообщения: 14.04.2006 14:16
Reznikoff
настроить доверие между доменами, выделить какойнить комп под маршрутизатор для этих сетей, если, гейты разные должны быть
кончено если я прально понял что разделены они логически, но физически нахдятся в пределах одной сетевой инфраструктуры
PS: после применения настроек тебе будет необходимо ребутить комп + тебе нужно быдет выделить пользователя заведения компа в домен/разрешить делать это пользователям
PPS: можно ли запросить пользовательский ввод до логона пользователя?
Автор: Reznikoff
Дата сообщения: 14.04.2006 14:18
urel
физически раскиданы, никаких изменений сети и добавлений новых железок. только настраивать ноутбуки (собсвтенно их то и переносят из одного офиса в другой).
Есть программы которые это делают (в том числе пользовательский ввод до ввода логина и пароля), но там скорее всего используется виндовс сервис, да и громоздкие они очень
Автор: urel
Дата сообщения: 14.04.2006 14:22
есть программы типа Select a net
но как мне кажеться лучше DHCP + доверие между доменами

ЗЫ - а ведь им придеться держать 2 профиля неудобно...
Автор: FoxHunter
Дата сообщения: 14.04.2006 22:27
Господа,

Есть простенький скрипт VB (буква диска, юзер, пароль) который подключает
расшаренную папку на сервере к локальному компьютеру.
Сам компьютер в состав домена не входит.

Как выполнить его при запуске Windows? Куда его прописать?
В Автозагрузку пробовал, ругается. Буду признателен за совет.
Автор: urel
Дата сообщения: 17.04.2006 10:19
FoxHunter

net use /?

Цитата:

NET USE
[devicename | *] [\\computername\sharename[\volume] [password | *]]
[/USER:[domainname\]username]
[/USER:[dotted domain name\]username]
[/USER:[username@dotted domain name]
[/SMARTCARD]
[/SAVECRED]
[[/DELETE] | [/PERSISTENT:{YES | NO}]]

NET USE {devicename | *} [password | *] /HOME

NET USE [/PERSISTENT:{YES | NO}]


можно положить в "%USERPROFILE%\Start Menu\Programs\Startup" или в локальной политике пользователей.
а как ругается? есть ли пермишины на доступ к шаре, если нет, и используется доменный аккаунт то нужно указывать домен domain\user или user@domain

Добавлено:
проверь чтобы под этим аккаунтом ты мог ходить на шару
Автор: Sk1f
Дата сообщения: 17.04.2006 11:13
Нужен простой скриптик, только что-то я догнать не могу как его написать.

Нужно получить список organizational unit(ou) входящих в другой ou?

p.s. пример: OU=Test,dc=test,dc=ru. Нужно вывести на экран organizational unit's входящие в состав OU=Test

Очень большая просьба откликнуть кто знает как сделать.
Автор: urel
Дата сообщения: 17.04.2006 11:28

Set objOU = GetObject("LDAP://ou=Test,dc=domain,dc=com")
objOU.Filter = Array("organizationalUnit")

For Each oOu in objOU
Wscript.Echo oOU.Name

Next
Автор: Sk1f
Дата сообщения: 17.04.2006 11:47
urel cпасибо огромное!!!!!

А с такой проблемой кто-нибудь сталкивался -
VBScript compilation error: Cannot use parentheses when calling a Sub

Возникает, когда я после того как извлек название OU (нижнего подуровня) пытаюсь создать GlobalGroup


Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set WshNet = WScript.CreateObject("WScript.Network")
Set RootDSE = GetObject("LDAP://RootDSE")
Set DefaultDomain = GetObject("LDAP://" & RootDSE.Get("DefaultNamingContext"))
Set FSO = CreateObject("Scripting.FileSystemObject")
WScript.Echo DefaultDomain.distinguishedName
WScript.Echo VbCrLf
' Получение названия OU 0-го уровня
On Error Resume Next
strResourceOUDN = "OU=Test,"& RootDSE.Get("DefaultNamingContext")
Set objOU = GetObject("LDAP://" & strResourceOUDN)
objOU.Filter = Array("organizationalUnit")
For Each oOU In objOU
s = oOU.Description

strResource = "OU=" & s & ",OU=Test,"& RootDSE.Get("DefaultNamingContext")
GlobalGroup = "" & s & " KT"

' Create Global Group
Set objGroup = GetObject("LDAP://" & strResource)
objGroup.Create("Group", "cn=" & GlobalGroup) ВОТ НА ЭТОЙ СТРОЧКЕ ВОЗНИКАЕТ ОШИБКА
objGroup.Put "sAMAccountName", "" & GlobalGroup
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo

WScript.Echo strResource
WScript.Echo GlobalGroup

Next



Автор: FoxHunter
Дата сообщения: 17.04.2006 14:27
urel
Спасибо. Но. Гостевой эккаунт закрыт и

Цитата:
Сам компьютер в состав домена не входит
.

NET USE тут курит. Есть готовый скрипт. Я его хочу исполнить
при запуске операционки.


Цитата:
можно положить в "%USERPROFILE%\Start Menu\Programs\Startup"


Цитата:
В Автозагрузку пробовал, ругается.


Ругается "Нет возможности установить соединение"
Сразу же после загрузки Виндов, при ручном запуске скрипта, все без проблем.
Автор: urel
Дата сообщения: 17.04.2006 14:38
Sk1f
еще бы

Цитата:

Create a Global Security Group

Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000

Set objOU = GetObject("LDAP://ou=HR,dc=NA,dc=fabrikam,dc=com")
Set objGroup = objOU.Create("Group", "cn=HR-Employees")

objGroup.Put "sAMAccountName", "HRStaff"
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo

качай The Portable Script Center


Цитата:
s = oOU.Description
strResource = "OU=" & s & ",OU=Test,"& RootDSE.Get("DefaultNamingContext")
GlobalGroup = "" & s & " KT"

непонятно что ты хочешь вытянуть из описания? у тебя там название OU забито? иначе в strResource фигня получиться
может ты думал вот так:

Цитата:
strResource = oOU.distinguishedName
GlobalGroup = oOU.ou & " KT"


Добавлено:
FoxHunter
как мапить разници нет

Цитата:
net use t: \\comp\share password /user:administrator@domain.ru

или

Цитата:
Set objNet = CreateObject("WScript.Network")
objNet.MapNetworkDrive strLocalName, strRemoteName, [bUpdateProfile], [strUser], [strPassword]

если ты указываешь пользователя - то главное что бы он имел пермишины.
ты не можешь мапить диски до логона пользователя. странно - авто загрузка это и есть запуск сразу после логона, попробуй паузу воткнуть WScript.Sleep 2000
можно забить в локальную политику gpedit.msc -> user configuration -> windows settings -> scripts

PS: попробуй имя компа заменить на IP
Автор: Sk1f
Дата сообщения: 17.04.2006 15:17
Я коряво написал, но именно так как ты описал я и делал. Т.е. извлекаю название OU и с этим названием должна была создаться группа.
Сделал проверки (вывел Echo)
Все то что должно создаться и пути она выводит правильно, но как только включаю
Create Global Group. Выскакивает ошибка.
Эта ошибка появляется и если все написать так как ты описываешь.

p.s. У тебя более красивый и нормальный способ, поэтому в дальнейшем можешь на основе своего алгоритма идти.
Автор: urel
Дата сообщения: 17.04.2006 15:39
Sk1f
разве так тяжело то что я сказал вписать в скрипт

Цитата:
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000

Set RootDSE = GetObject("LDAP://RootDSE")

strResourceOUDN = "OU=Test," & RootDSE.Get("DefaultNamingContext")
Set objOU = GetObject("LDAP://" & strResourceOUDN)
objOU.Filter = Array("organizationalUnit")

For Each oOU In objOU
    strResource = oOU.distinguishedName
    GlobalGroup = oOU.ou & " KT"
    Set objOU2 = GetObject("LDAP://" & strResource)
    Set objGroup = objOU2.Create("Group", "cn=" & GlobalGroup)
    objGroup.Put "sAMAccountName", "" & GlobalGroup
    objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or _
     ADS_GROUP_TYPE_SECURITY_ENABLED
    objGroup.SetInfo
    WScript.Echo    GlobalGroup    
Next


Добавлено:
а ругалось оно у тебя на то, что аргументы процедуре не нужно заключать в скобки , эт еще не глядя на как ты пытался создать группу
Автор: Sk1f
Дата сообщения: 17.04.2006 15:49
Понял . Громадное спасибо!
Автор: FoxHunter
Дата сообщения: 17.04.2006 16:11
urel

Цитата:
gpedit.msc -> user configuration -> windows settings -> scripts

Работает. Огромное спасибо.
Автор: Isia
Дата сообщения: 17.04.2006 18:16
Люди добрые, пишу уже во второй раз...
Так и не смог победить WMI. Конкретно нужно интерактивно запустить мой EXE-файл на удалённой машине.

Может кто что другое посоветует.
Задача такая:
на удалённом серваке стоит PGP с виртуальным диском W: , в настройках PGP настроил горячую клавишу ALT+U на отключение всех подключенных виртуальных дисков. Виртуальный шифрованный диск W: расшарен по сети. Нужно в случе проверки бухгалтеру кликнуть по иконке что б удалённо размонтировался этот диск W.

Написал скриптик нажимающий ALT+U:

Цитата:
set WshShell = WScript.CreateObject("WScript.Shell")
WriteWord()
function WriteWord()
WshShell.SendKeys("%(+(U))")
end function


Написал следующее чудо для удалённого запуска этого хозяйства (пример):

Цитата:
Const HIDDEN_WINDOW = 1
strComputer = "buch"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW
Set objProcess = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
result = objProcess.Create ("start notepad.exe",null,objConfig,processid)


писал для ALT+U отдельный EXE'шник на SOM'е, но ничего не помогает. Приложение запускается в каком-то терминальном окне.
Помогите чем можете....
Автор: urel
Дата сообщения: 17.04.2006 22:06
а ведь можно размаунтить с момощью коммандно строки - есть ключики - посмотри в доках

сорри - не там такого, зат оесть отдельный продукт PGP Command Line, если пгп юзается исключительно для создания крипто дисков, я бы поменял его на чтонить более управляемое из коммандно строки напремер: best crypt/drive crypt. сам пользуюсь и не нужно будет таких извратов...
Автор: Uriu
Дата сообщения: 18.04.2006 06:32
Isia


Цитата:
result = objProcess.Create ("start notepad.exe",null,objConfig,processid)



CommandLine=”notepad.exe” а не "start notepad.exe". Для вашего сценария(который нужно запустить, нужно указать путь. Пример для пути C:\Test\Test.vbs:

iErr=objProcess.Create("WScript.exe C:\Test\Test.vbs",Null , objConfig, wscriptID)


Сценарий должен лежать на удаленной машине. Зачем Вам использовать класс Win32_ProcessStartup, можно и так любое приложение и пр. запустить используя класс Win32_Process. Вы же скачали мой "опус" о WMI. Там есть готовый сценарий для запуска процессов на удаленных машинах, Вам нужно только путь поменять.

Если Вам что то не понятно с WMI теоретически задавайте вопросы в теме http://forum.ru-board.com/topic.cgi?forum=62&bm=1&topic=6906#1, я по мере знаний постараюсь на пальцах объяснить.

Автор: Sk1f
Дата сообщения: 19.04.2006 09:39
2 urel
Рещил использовать процедуру CrGroup вместо того чтобы по 4 раза писать одно и тоже.


Цитата:
Sub CrGroup(strN1,strPath,t)

Set objGroup = GetObject("LDAP://" & strPath)
objCr = objGroup.Create("Group", "cn="& strN1)
objCr.Put "sAMAccountName", ""& strN1
If t=0 Then
objCr.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or ADS_GROUP_TYPE_SECURITY_ENABLED
Else
objCr.Put "groupType",ADS_GROUP_TYPE_LOCAL_GROUP Or ADS_GROUP_TYPE_SECURITY_ENABLED
End If
objGroup.SetInfo
End Sub
.........
Call CrGroup(name, path, 0)
WSCript.Exho .....


Но вопрос - могу ли я так делать? Скрипт не ругается, но и группы не создает



Автор: urel
Дата сообщения: 19.04.2006 10:37
Sk1f

на скидку - set пропустил...
objCr = objGroup.Create("Group", "cn="& strN1)

посмотри внимательней примеры с technet, там есть все
Автор: Sk1f
Дата сообщения: 19.04.2006 11:01
Извиняюсь, не ту информацию поместил.
В скрипте есть Set, т.е. выглядит так:
Set objGroup = GetObject("LDAP://" & strPath)
Set objCr = objGroup.Create("Group", "cn="& strN1)

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

Добавлено:
Я script_center смотрю.
Автор: urel
Дата сообщения: 19.04.2006 11:24
Sk1f
Set objCr = ...
...
objGroup.SetInfo

внимательней читать нужно, странно что оно у тебя не ругается, ты в чем скрипт пишешь?
попробуй ченить вроде VbsEdit
Автор: Sk1f
Дата сообщения: 19.04.2006 11:57
спасибо. Ошибку понял.
а Primal Script и не должен был выдавать ошибку.Все ф-ции выполнялись правильно, только ф-ции изменяющие AD не сохраняли свои действия
Автор: urel
Дата сообщения: 19.04.2006 12:16
Sk1f
а у меня вот выскочило:

Object required: 'objGroup'
Автор: Sk1f
Дата сообщения: 19.04.2006 13:18
2urel
А у тебя лицензионный primal?
Или у меня глючить начал



Автор: urel
Дата сообщения: 19.04.2006 14:44
смяшно =)
Set objListUser = GetObject("LDAP://" & strResourceGr)
objListUser.Filter = Array("user")
этим ты получаешь всех пользователей OU strResourceGr, но oGroup не OU и пользователей там нет, поищи в примерах как вынуть членов группы....
Автор: Sk1f
Дата сообщения: 19.04.2006 14:52
Уже понял в чем ошибка

Но как сделать двойной фильтр?
Т.е. чтобы извлекать только Глобальные группы!




Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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