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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Breaker
Поясни что ты хочешь сделать
Скопировать ярлык с сервера в папку на локальном диске для доменных пользователей и для локальных?

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:28 16-11-2005
FreemanRU



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

Код:
 
Option Explicit
 
Dim WshShell, oShellLink, Path
 
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set oShellLink = WshShell.CreateShortcut(WshShell.SpecialFolders("AllUsersDesktop")+"\Excel.lnk")
oShellLink.TargetPath = "c:\program files\microsoft office\office10\excel.exe"
oShellLink.IconLocation = "c:\program files\microsoft office\office10\excel.exe, 0"
oShellLink.Save
 
Set oShellLink = WshShell.CreateShortcut(WshShell.SpecialFolders("AllUsersDesktop")+"\Word.lnk")
oShellLink.TargetPath = "c:\program files\microsoft office\office10\winword.exe"
oShellLink.IconLocation = "c:\program files\microsoft office\office10\winword.exe, 0"
oShellLink.Save
 
Set oShellLink = Nothing
 

 
alecsandrb
проверять на null

----------
Если не получается с первого раза - прочти инструкцию. (с)
"Откуда нам знать, что такое война, если мы не знаем мира..."(с)
Записки

Всего записей: 3794 | Зарегистр. 16-07-2004 | Отправлено: 16:47 16-11-2005
alecsandrb

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
FreemanRU
 
Пытаюсь выполнить следующее:
 
 CurStrOU = "OU=Domain controllers"
 CommandText = "LDAP://dc=dom1,dc=dom2"
 Set objDomain = GetObject(CommandText)
 Set objOU = objDomain.Create("organizationalUnit", CurStrOU)
 objOU.SetInfo
 
 If objOU = Null Then
           MsgBox 1
 Else
           MsgBox 2
 End If
 
Точно знаю что такой OU уже есть но сообщение об ошибке  
вылетает при выполнении оператора:  
 objOU.SetInfo -  (Такой объет уже существует),
а мне нужно чтобы появлялось либо сообщение 1 либо 2.
Пробовал комментарить этот оператор (objOU.SetInfo),
но тогда вылетает с ошибкой (Неправильный аргумент или свойство).
Какое свойство этого объекта необхождимо сравнивать с null в данном случае?

Всего записей: 36 | Зарегистр. 03-09-2003 | Отправлено: 06:56 17-11-2005
AlexSSS

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alecsandrb
поставь в начало скрипта (или перед SetInfo)
On Error Resume Next
тогда системное сообщение об ошибке будет подавлено

Всего записей: 747 | Зарегистр. 26-06-2004 | Отправлено: 08:59 17-11-2005
alecsandrb

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AlexSSS
 
Это не решит проблемы: как узнать есть ли такой OU или еще нет
и его надо создать.

Всего записей: 36 | Зарегистр. 03-09-2003 | Отправлено: 14:34 17-11-2005
pazdak

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alecsandrb
Как раз именно это и решит проблему !!!
Не зависимо от того есть OU или его нет он будет !!!

Всего записей: 376 | Зарегистр. 13-02-2003 | Отправлено: 15:17 17-11-2005
AlexSSS

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
> Это не решит проблемы: как узнать есть ли такой
> OU или еще нет и его надо создать.
ну так проверь вначале, есть ли такой OU.
А ты пытаешься создать уже существующее OU (objDomain.Create) и удивляешься, что вылетает ошибка.
Я показал, как обрабатывать ошибку по твоему коду.

Всего записей: 747 | Зарегистр. 26-06-2004 | Отправлено: 15:43 17-11-2005 | Исправлено: AlexSSS, 15:43 17-11-2005
alecsandrb

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Проверил скрипт:
 
 CurStrOU = "OU=Domain controllers"  
 CommandText = "LDAP://OU=Текущий OU,dc=dom1,dc=dom2"  
 On error resume next
 Set objDomain = GetObject(CommandText)  
 
 If objDomain = Null Then  
           MsgBox 1  
 Else  
           MsgBox 2  
 End If  
 
Результат: вне зависимости от того есть данный OU в AD или нет,  
всегда выдается сообщение 1, т.е objDomain = null всегда.
 
pazdak
 
А почему не решит проблемы - это просто: мне не нужно принудительно
создавать OU вне зависимости от того есть он или нет, мне нужно именно
убедиться в том что если такой OU уже существует то создавать заново
его не надо и все его дочерние объекты не уничтожать.
 
Добавлено:
AlexSSS
 
Так  я спрашивал как проверить существует ли заданный OU или нет.

Всего записей: 36 | Зарегистр. 03-09-2003 | Отправлено: 15:51 17-11-2005
AlexSSS

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
> Так  я спрашивал как проверить существует ли заданный OU или нет.
ладно, проехали
как вариант,
 
On Error Resume Next
Set objou = GetObject("LDAP://ou=domain controllers,dc=dom1,dc=dom2")
If IsObject(objou) Then
    MsgBox ("Found")
Else
    MsgBox ("Not Found")
End If
 
PS. Если еще не скачал, скачай "TechNet Script Center Sample Scripts ---  recomend" из шапки. Совершенно великолепная подборка по использованию скриптов

Всего записей: 747 | Зарегистр. 26-06-2004 | Отправлено: 16:00 17-11-2005 | Исправлено: AlexSSS, 16:03 17-11-2005
alecsandrb

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AlexSSS
 
Скачал, спасибо. Подборка хорошая но я не нашел там данной проверки
именно для OU.  
Твой пример также выдает постоянно одно и тоже  - Found.

Всего записей: 36 | Зарегистр. 03-09-2003 | Отправлено: 16:09 17-11-2005
AlexSSS

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
>вой пример также выдает постоянно одно и тоже  - Found.
естественно, такой OU есть в AD
поставь
Set objou = GetObject("LDAP://ou=FigVam,dc=dom1,dc=dom2")  
и он скажет, что такого OU нет

Всего записей: 747 | Зарегистр. 26-06-2004 | Отправлено: 16:16 17-11-2005
alecsandrb

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Похоже я решил свою проблему как хотел при помощи следующей конструкции:
CurStrFullOU = "OU=Sample1"
DomainStr = "DC=dom1,DC=dom2"
DotStr = "'"
 
 On Error Resume Next
 Set objConnection = CreateObject("ADODB.Connection")
 objConnection.provider = "ADsDSOObject"
 objConnection.Open ("Active Directory Provider")
 CommandText = "Select name"
 CommandText = CommandText + " from 'LDAP://" & CurStrFullOU & DomainStr & DotStr
 CommandText = CommandText + " where objectClass='organizationalUnit'"
 Set objRecordset = CreateObject("ADODB.Recordset")
 objRecordset.Open CommandText, objConnection
 
 If objRecordset.EOF Then
           MsgBox (Not Found)
 Else
           MsgBox (Found)
 End If
 
Привожу свой вариант может кому пригодиться.
Всем спасибо за помощь

Всего записей: 36 | Зарегистр. 03-09-2003 | Отправлено: 16:19 17-11-2005
AlexSSS

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alecsandrb, что еще советую поставить на сервак, так это Windows 2000/2003 Support Tools, там есть ADSI Edit, с ее помощью можно в посмотреть всю структуру домена, кто куда входит и у кого какие свойства есть и чему они равны.  
Но пока не разберешься, что к чему, сам ничего в ней не изменяй!!!

Всего записей: 747 | Зарегистр. 26-06-2004 | Отправлено: 16:20 17-11-2005
alecsandrb

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AlexSSS
 
Может и оффтоп но я проверял твой вариант на существуещем OU
и таком которого еще нет в AD.

Всего записей: 36 | Зарегистр. 03-09-2003 | Отправлено: 16:21 17-11-2005
AlexSSS

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alecsandrb, странно. я тоже проверил код перед опубликованием, все работает правильно
попробуй отменить игнорирование ошибок после выполнения запроса.  
Возможно у тебя есть ошибка в условии IF, тогда действительно строка с IF игнорируется и выводится Found
 
On Error Resume Next
Set objou = GetObject("LDAP://.....")
On Error GoTo 0
...

Всего записей: 747 | Зарегистр. 26-06-2004 | Отправлено: 16:23 17-11-2005 | Исправлено: AlexSSS, 16:33 17-11-2005
alecsandrb

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Оно конечно странно но у меня тот же результат на все варианты
(существует или нет OU в AD) Found.
У меня только одно предположение  -  я все свои варианты выполнял из-под Excel
может он не понимает данной конструкции.

Всего записей: 36 | Зарегистр. 03-09-2003 | Отправлено: 16:46 17-11-2005
Nello



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

Цитата:
Что то ругается на эту строчку Set objRS = objComm.Execute(  )  

А ты strbase под себя поправил?

Всего записей: 133 | Зарегистр. 23-04-2003 | Отправлено: 12:05 18-11-2005
Spartac



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всем привет. Кто-нибудь юзает checkcfg ?
Меня интересует софт, которым можно анализировать результаты работы checkcfg, желательно сервисом и с настраиваемыми алертами

Всего записей: 72 | Зарегистр. 31-03-2005 | Отправлено: 07:31 20-11-2005
AlexSSS

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alecsandrb
в экселе убери все On Error
в GetObject("LDAP://.....") установи существующий OU
GetObject пройдет без ошибок, а вот на следующей строке скорее всего ошибка выскочит. Если так, то разберись, почему выскакивает ошибка

Всего записей: 747 | Зарегистр. 26-06-2004 | Отправлено: 13:01 20-11-2005
AlexSSS

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть сеть с кучей управляемых свичей. Можно ли скриптами собрать с них какую-то инфу через SNMP? Для начала самую простую - Name, IP, MAC, Location, версию Firmware
 
если не скриптами, то как это удобнее сделать?

Всего записей: 747 | Зарегистр. 26-06-2004 | Отправлено: 17:09 06-12-2005
   

Страницы: 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