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

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

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в эселешном (или другом) visual basic editor-е удобнее отладка, чем просто в текстовом файле. Впрочем, это уже дело вкуса

Всего записей: 747 | Зарегистр. 26-06-2004 | Отправлено: 13:59 24-08-2005 | Исправлено: AlexSSS, 16:10 24-08-2005
distance

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

Цитата:
Но проблема в том, что Microsoft выбрала основой для себя именно VBS (что вобщем-то не удивительно). Н-р все функции работы с реестром, возращаюищие массив значений работают только с VBS.

неправда
 

Цитата:
Многие запросы WMI также работают только с VBS.

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

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 16:07 24-08-2005
FreemanRU



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

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

Предлагаю портировать в  JS скрипт, предложенный мною для GTHack.
Также предлагаю портировать любой скрипт, который работает с реестром через WMI (bc[исходник на VBS есть в Script Repository).
Если у тебя это получиться - честь тебе и хвала, и я уберу эти строки.
 

Цитата:
неправда

что именно? ЧТо Microsoft придерживается VBS? Ну найди в TechNET хоть один пример для JS.

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

Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 21:14 24-08-2005
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FreemanRU
Хы. Да пожалуйста
Лови. Потратил минут 15, из них 5 нинут исправлял синтаскис vbs на js, 5 минут разбирался что такое IPAddress, и 5 минул на отлов и исправление твоих ошибок (несовпадающий регистр переменных - это кстати тоже из-за чего я не люблю vbs, т.к. он допускает подобную неряшливость в действиях программиста)
Также исправил один недостаток в оригинальном скрипте - если комп выключен, то скрипт вылетал
Второй недостаток - то что скрипт ломится, в WMI под текущим аккаунтом, и если ты - не доменный админ, то  можешь расслабиться, списка IP тебе не видать как своих ушей.
Если по уму, то необходимо имперсонизироваться, ну да ладно, для примера и так сойдет
 

Код:
 
var ADS_SCOPE_SUBTREE = 2;
var objConnection = new ActiveXObject("ADODB.Connection");
var objCommand = new ActiveXObject("ADODB.Command");
objConnection.Provider = "ADsDSOObject";
objConnection.Open("Active Directory Provider");
objCommand.ActiveConnection = objConnection;
objCommand.CommandText = "Select Name, Location from 'LDAP://DC=fabrikam,DC=com' where objectClass='computer'";
objCommand.Properties("Page Size") = 1000;
objCommand.Properties("Timeout") = 30;
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE;
objCommand.Properties("Cache Results") = false;
var objRecordSet = objCommand.Execute();
objRecordSet.MoveFirst();
 
while (!objRecordSet.EOF)
{
    var strIp = "";
    var strComputer = objRecordSet.Fields("Name").Value;
 
    try
    {
        var objWMIService = GetObject("winmgmts:\\\\" + strComputer + "\\root\\cimv2");
        var colAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True");
 
        var e = new Enumerator(colAdapters);
        for ( ; !e.atEnd(); e.moveNext())
        {
            var objAdapter = e.item();
            var ips = (new VBArray(objAdapter.IPAddress)).toArray();
            for(var i = 0; i<ips.length; i++)
                strIp = strIp + " " + ips[i];
        }
 
        WScript.Echo(strIp + " - " + strComputer);  
    }
 
    catch(err)
    {
        WScript.Echo("<< DOWN >> - " + strComputer + " [" + err.message + "]");
    }
 
    objRecordSet.MoveNext();
}
 

 

Цитата:

Цитата:
неправда
что именно?

то, что на js нельзя работать с реестром вообще, и получать бинарные данные в частности.

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 22:17 24-08-2005 | Исправлено: distance, 22:22 24-08-2005
Smitis



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

Цитата:
Ну найди в TechNET хоть один пример для JS

http://www.microsoft.com/technet/scriptcenter/scripts/jscript/default.mspx
Кстати, есть ещё примеры для других языков
http://www.microsoft.com/technet/scriptcenter/scripts/language.mspx
 
И ещё, по поводу точки с запятой

Цитата:
Первое на что надо обратить внимание - JS чувствителен к регистру и каждая строка должна завершаться ";"

Во-первых, не строка, а оператор.
Во-вторых, не всегда обязательно:

Код:
 
WScript.Echo("aaaa")
WScript.Echo("bbbb")
WScript.Echo("cccc")
 

Собственно, точку с запятой можно использовать только как разделитель операторов в одной строке.
В-третьих, и регистр иногда можно не соблюдать! (В именах методов и свойств объектов). Например, тот же пример:

Код:
 
WScript.echo("aaaa")
WScript.echo("bbbb")
WScript.echo("cccc")
 

echo - в другом регистре.

Всего записей: 3215 | Зарегистр. 09-02-2003 | Отправлено: 00:47 25-08-2005 | Исправлено: Smitis, 00:53 25-08-2005
GTHack



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
как добавить проверку на включенность компьютера в vbs ?
как запустиь вышеприведенный js скрипт ? (запуск файла с расширением js ничего не дал)

Всего записей: 554 | Зарегистр. 03-03-2003 | Отправлено: 06:50 25-08-2005
FreemanRU



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

Цитата:
по поводу точки с запятой  

а вот тут что-то странное, т.к. у меня постоянно ругался на ";"
Да и лучше его ставить. Лишним не будет.
 

Цитата:
иногда можно не соблюдать!

именно что иногда. Лучше всегда соблюдать. Ибо это исключение.
 
GTHack

Цитата:
как добавить проверку на включенность компьютера в vbs ?  

добавить в начало
on error resume next
тогда просто не будут обрабатывать недоступные компы.

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

Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 15:53 25-08-2005
GTHack



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
в общем из-за winmgmts очень тяжело скрипт идёт (кстати это что за служба такая?)
и не все IP определяет, вот  думаю скриптом можно как нить не у конкретной машинки, а у сервера спрашивать IP назначенный определенному компьютеру.

Всего записей: 554 | Зарегистр. 03-03-2003 | Отправлено: 12:16 26-08-2005
distance

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

Цитата:
в общем из-за winmgmts очень тяжело скрипт идёт

попробуй сначала определить что комп в дауне чем-нибудь полегче, например так:

Код:
 
var ENABLE_SAMPLE = false;
 
function CheckHostInLocalNetwork(sHost)
{
    this.socket = WScript.CreateObject("MSWinsock.Winsock", "CheckHostInLocalNetwork_Event_");
    this.socket.Protocol = 0;    // TCP
    this.socket.RemoteHost = sHost;
    this.socket.RemotePort = 139;  // netbios-ssn
 
    // socket states
    this.sckClosed = 0;
 
    this.Check = function(timeout)
    {
        if (timeout == undefined)    // set default timeout
            timeout = 3000;
 
        // cleanup
        CheckHostInLocalNetwork.success = false;
        CheckHostInLocalNetwork.errorCode = 0;
        if (this.socket.State != this.sckClosed)
            this.socket.Close();
         
        // try connect...
        this.socket.Connect();
        timeout *= 10;
        while(!CheckHostInLocalNetwork.success && !CheckHostInLocalNetwork.errorCode && timeout > 0)
        {
            WScript.Sleep(100);
            timeout -= 100;
        }
 
        return (CheckHostInLocalNetwork.success && !CheckHostInLocalNetwork.errorCode);
    }
}
 
 
function CheckHostInLocalNetwork_Event_Error(Number, Description, Scode)
{
    CheckHostInLocalNetwork.errorCode = Number;
}
 
function CheckHostInLocalNetwork_Event_Connect()
{
    CheckHostInLocalNetwork.success = true;
}
 
function CheckHostInLocalNetwork_Event_Close()
{
}
 
 
if (ENABLE_SAMPLE)
{
    var host = "myhost";
    var chk = new CheckHostInLocalNetwork(host);
    WScript.Echo("host: " + host + " = " + (chk.Check(1000) ? "present" : "not present"));
    WScript.Quit(0);
}
 
 

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 15:24 26-08-2005 | Исправлено: distance, 15:25 26-08-2005
Rol155

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток всем!  
У меня возник вопрос. Он обсуждался уже но касался vbs а нужно на js.
Задача в том чтобы удалить файлы старше сегодняшней даты на 4 дня.
В vbs работает функция DateDiff а если что нибудь подобное в js?
 
Заранее благодарю

Всего записей: 1 | Зарегистр. 05-09-2005 | Отправлено: 08:51 05-09-2005
merlkerry

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rol155
если у тебя 2003 можешь попробовать forfiles.exe с ключом /D
если нет
 

Код:
 
 
function Near(Seconds) { return(new Date(new Date().valueOf()+1000*Seconds)) };
 
function InThePast(Value) { return(new Date().valueOf()>Value.valueOf()) };
 
 
...
 
if (InThePast(Near(-4*24*60*60))) {
 
...
 
};
 
 



----------
Вокруг одни враги.
Я испытываю естественный скептицизм по поводу чистоты человеческих намерений.

Всего записей: 1521 | Зарегистр. 16-09-2002 | Отправлено: 19:27 05-09-2005
slnes

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Известно: имя пользователя, имя группы.
Как узнать является ли данный пользователь её членом?
 
Добавлено:
Используя JavaScript

Всего записей: 9 | Зарегистр. 02-09-2005 | Отправлено: 08:15 12-09-2005
leputain



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
так и не нашел ничего хорошего, чтобы юзеры не могли закрыть аутлук, который должен запускаться при логоне.
wmi слишком жирно - мне кажется - для этого.
каким-нить бы простым js или vbs все сделать.
помогите, а?
нужен скрипт. я его поставлю запускаться при логоне.
 
а в нем мне надо :
запустить прогу.
пока не вышла заснуть на 5 минут.
опять проверить - вышла или нет.
если работает - снова спать.
а если не работает - прыгнуть в начало и все по кругу.
 
ну никак не могу сообразить, как все этот совокупить. goto не люблю..
понимаю, что скрипт-то легкий..
прошу помощи, вобщем..

Всего записей: 1434 | Зарегистр. 24-11-2002 | Отправлено: 18:59 12-09-2005
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
slnes
IADsGroup.IsMember
 
изучаешь пример, перекладываешь на js.

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 19:01 12-09-2005
Refugee

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
leputain
можно в самом outlook вставить скрипт на application startup
 
Private Declare Function GetSystemMenu Lib "user32" (ByVal HWND As Long, _
    ByVal bRevert As Long) As Long
 
Private Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As _
    Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
 
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal classname As Long, ByVal winname As String) As Long
 
Const MF_GRAYED = &H1&
Const MF_BYCOMMAND = &H0&
Const SC_CLOSE = &HF060&
 
'Disable the Close Button Option
Sub CloseButtonState(boolClose As Boolean)
    Dim HWND As Long
    Dim wFlags As Long
    Dim hMenu As Long
    Dim result As Long
     
    Dim cp As String
    cp = ActiveExplorer.Caption
     
    HWND = FindWindow(0, cp)
 
 
    hMenu = GetSystemMenu(HWND, 0)
    If Not boolClose Then
        wFlags = MF_BYCOMMAND Or MF_GRAYED
    Else
        wFlags = MF_BYCOMMAND And Not MF_GRAYED
    End If
 
    result = EnableMenuItem(hMenu, SC_CLOSE, wFlags)
End Sub
 
Private Sub ExitMenuState(state As Boolean)
    Dim mbc, sbc
    For Each mbc In ActiveExplorer.CommandBars("Menu Bar").Controls
        If mbc.Caption = "&Файл" Then
            For Each sbc In mbc.Controls
                If sbc.Caption = "В&ыход" Or sbc.Caption = "Вы&ход" Then
                    sbc.Enabled = state
                End If
            Next
        End If
    Next
 
End Sub
 
Private Sub Application_Startup()
    CloseButtonState (False)
    ExitMenuState (False)
End Sub
 
тогда и крестик, и пункт меню будут серыми... только надо будет или подписать проект, или поставить низкий уровень безопасности

Всего записей: 513 | Зарегистр. 31-03-2004 | Отправлено: 21:39 12-09-2005
leputain



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

Всего записей: 1434 | Зарегистр. 24-11-2002 | Отправлено: 07:34 13-09-2005
slnes

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как узнать является ли пользователь членим группы
 
Добавлено:
В AD используя JavaScript ну или VBScript на худой конец
 
Добавлено:
Имеется Active Directory.
Как узнать входит ли пользователь в группу используя JavaScript, или хотя бы VBScript.
 
 
Добавлено:
У меня тут фигня какая то, сообщение моё пропало, я новое написал, оно добавилось в старое и появилось ????

Всего записей: 9 | Зарегистр. 02-09-2005 | Отправлено: 14:11 13-09-2005
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
тогда тупой логон скрипт:
 
@echo off
hide h
 
:nx
start /D "D:\Program Files\Microsoft Office\OFFICE11" /MIN /WAIT OUTLOOK.EXE
goto nx
 
ed:
 
зы - hide h прячет окно командного интерпритатора cmd.exe

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 18:31 13-09-2005
Master_Alex



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
urel
"hide" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Где этот утиль взять?

Всего записей: 525 | Зарегистр. 11-09-2003 | Отправлено: 14:55 14-09-2005
leputain



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
прет. спасибо.
я взял cmdow.exe из BTS_DriverPack
вместо hide h делаю cmdow @ /hid
прячется консоль!

Всего записей: 1434 | Зарегистр. 24-11-2002 | Отправлено: 06:23 15-09-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