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

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

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

emx (13-12-2006 21:07): http://forum.ru-board.com/topic.cgi?forum=8&topic=19088#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

ooptimum



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

                               Коллеги-администраторы  ....  


Часть 1


Думаю каждый из вас сталкивался с необходимостью выполнять некие несложные рутинные операции, на котороые уходит много драгоценного времени.
 Например, создать определенную структуру каталогов для каждого пользователя домена, изменить некие параметры в профилях всех или части пользователей, изменить полномочия/владельца однотипных файлов в разных каталогах т.д.  
Я, как сисадмин, тоже не раз был вынужден делать все это.  Руками делать это тоскливо и муторно, как вы понимаете. Должен заметить, что по неким "религиозным" убеждениям я всегда старался избегать любых отношений с бейсиком и его производными. Еще мой отец учил меня не иметь с ним никаких дел. Буквально. А теперь я учу своего сына тому же. Но, тем не менее, полностью избежать этого, по всей видимости, невозможно, тем более, что бейсик от M$ сейчас уже далеко не та "лапша", которой он был изначально, а современный структурированный язык, нашедший множество применений. Похоже, что для меня в очередной раз настала пора выучить еще что-то. Знаете, как курильщик много раз безуспешно пытается бросить курить, так и я не раз пытался подступиться к изучению VBScript, но пока никак не одолел. Лень, знаете ли. А инструмент в делах административных был бы весьма пользительный, должен заметить, для быстрого написания всякого рода скриптов.

 
    Внимание   !  !  !  

  • Поскольку данный топ весьма не мал, не забывайте  использовать "версию для печати" для более удобного поиска по теме. А также МЕГА ПОИСКОВИК от NEPa

  • Дабы не раздувать топ,  примеры своих  скриптов  заключаем в тег  "more"

Консольные команды. Командный интерпретатор

Windows Script Host (WSH) &  VBScript  &  JScript


Вышеперечисленные буки можно  взять здесь

    ТOOLS :
  1. Autoit+readme.rus
  2. Scriptologic
  3. AutoMate
  4. KIXTART
  5. nnCron-Планировщик с поддержкой скриптового языка --  РЕКОМЕНДУЮ
  6. WGET, GREP, GETMAIL, BLAT for Windows замечательные консольные утилиты
  7. 4dos/4nt -- отличная замена стандартного коммандного интерпретатора  
  8. JudoScript - java подобный скриптовый язык с исходниками

    Дружественные темы :
  1. Автоматическая (unattended) установка Windows
  2. Интересные команды при работе с Linux
  3. Отличный сайт по скриптингу, и не только
  4. Использование KIX
  5. Использование WMI

 
>>HOW -  TO:
Создается по материалам данного топа

 
Надеюсь данная тема будет полезна для Вас.
 Предложения по реформированию шапки принимаю в ПМ Jovanotti

 

Всего записей: 2898 | Зарегистр. 30-05-2002 | Отправлено: 08:55 13-12-2002 | Исправлено: FreemanRU, 17:29 11-12-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Нужен простой скриптик, только что-то я догнать не могу как его написать.  
 
Нужно получить список organizational unit(ou) входящих в другой ou?
 
p.s. пример: OU=Test,dc=test,dc=ru. Нужно вывести на экран organizational unit's входящие в состав OU=Test
 
Очень большая просьба откликнуть кто знает как сделать.  

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 12:13 17-04-2006
urel

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

Set objOU = GetObject("LDAP://ou=Test,dc=domain,dc=com")
objOU.Filter = Array("organizationalUnit")
 
For Each oOu in objOU
    Wscript.Echo  oOU.Name
   
Next

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 12:28 17-04-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
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
 
 
 

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 12:47 17-04-2006 | Исправлено: Sk1f, 14:35 17-04-2006
FoxHunter



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
urel
Спасибо. Но. Гостевой эккаунт  закрыт и

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

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


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

 
Ругается "Нет возможности установить соединение"
Сразу же после загрузки Виндов, при ручном запуске скрипта, все без проблем.

Всего записей: 306 | Зарегистр. 06-01-2003 | Отправлено: 15:27 17-04-2006
urel

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

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 15:38 17-04-2006 | Исправлено: urel, 15:43 17-04-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Я коряво написал, но именно так как ты описал я и делал. Т.е. извлекаю название OU и с этим названием должна была создаться группа.
Сделал проверки (вывел Echo)
Все то что должно создаться и пути она выводит правильно, но как только включаю  
Create Global Group. Выскакивает ошибка.
Эта ошибка появляется и если все написать так как ты описываешь.  
 
p.s. У тебя более красивый и нормальный способ, поэтому в дальнейшем можешь на основе своего алгоритма идти.

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 16:17 17-04-2006
urel

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

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

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 16:39 17-04-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Понял . Громадное спасибо!

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 16:49 17-04-2006
FoxHunter



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

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

Работает. Огромное спасибо.

Всего записей: 306 | Зарегистр. 06-01-2003 | Отправлено: 17:11 17-04-2006
Isia



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди добрые, пишу уже во второй раз...
Так и не смог победить 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'е, но ничего не помогает. Приложение запускается в каком-то терминальном окне.
Помогите чем можете....

Всего записей: 39 | Зарегистр. 05-02-2004 | Отправлено: 19:16 17-04-2006 | Исправлено: Isia, 19:17 17-04-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а ведь можно размаунтить с момощью коммандно строки - есть ключики - посмотри в доках
 
сорри - не там такого, зат оесть отдельный продукт  PGP Command Line, если пгп юзается исключительно для создания крипто дисков, я бы поменял его на чтонить более управляемое из коммандно строки напремер: best crypt/drive crypt. сам пользуюсь и не нужно будет таких извратов...

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 23:06 17-04-2006 | Исправлено: urel, 11:48 18-04-2006
Uriu

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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, я по мере знаний постараюсь на пальцах объяснить.
 

Всего записей: 340 | Зарегистр. 25-11-2004 | Отправлено: 07:32 18-04-2006 | Исправлено: Uriu, 07:42 18-04-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
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 .....
 

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

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 10:39 19-04-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sk1f
 
на скидку - set пропустил...
objCr = objGroup.Create("Group", "cn="& strN1)  
 
посмотри внимательней примеры с technet, там есть все

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 11:37 19-04-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Извиняюсь, не ту информацию поместил.  
В скрипте есть Set, т.е. выглядит так:
  Set objGroup = GetObject("LDAP://" & strPath)
  Set  objCr = objGroup.Create("Group", "cn="& strN1)
 
И скрипт отрабатывается, но почему не создается группа не понимаю до конца, есть только предположения.  
 
Добавлено:
Я script_center смотрю.

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 12:01 19-04-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sk1f
Set  objCr = ...
...
objGroup.SetInfo  
 
внимательней читать нужно, странно что оно у тебя не ругается, ты в чем скрипт пишешь?
попробуй ченить вроде VbsEdit

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 12:24 19-04-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
спасибо.  Ошибку понял.  
а Primal Script и не должен был выдавать ошибку.Все ф-ции выполнялись правильно, только ф-ции изменяющие AD не сохраняли свои действия

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 12:57 19-04-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sk1f
а у меня вот выскочило:
 
Object required: 'objGroup'

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 13:16 19-04-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
2urel
А у тебя лицензионный primal?  
Или у меня глючить начал
 
 
 

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 14:18 19-04-2006 | Исправлено: Sk1f, 15:47 19-04-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
смяшно =)  
Set objListUser = GetObject("LDAP://" & strResourceGr)
objListUser.Filter = Array("user")  
этим ты получаешь всех пользователей OU strResourceGr, но oGroup  не OU и пользователей там нет, поищи в примерах  как вынуть членов группы....

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 15:44 19-04-2006 | Исправлено: urel, 15:54 19-04-2006
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Закладки » Автоматизация администрирования
emx (13-12-2006 21:07): http://forum.ru-board.com/topic.cgi?forum=8&topic=19088#1


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru