Сценарий FinalSetup.vbs
Если Вы предпочитаете работать с командными файлами, то останетесь довольны и технологией сервера сценариев Windows (WSH). WSH – это обработчик сценариев (интерпретатор), являющийся составной частью операционных систем Windows 2000 и Windows 98. При необходимости, можно установить его на ОС Windows NT 4.0 и Windows 95. Интерпретатор WSH поддерживает команды WSH, а также языки сценариев VBScript и JScript (версию языка JavaScript компании Майкрософт).
Сценарии WSH используются для работы с файловой системой, автоматизации настольных приложений, управления системой Microsoft SQL Server и для многих других целей. Изучение этой технологии не составит большого труда, ведь все, что Вам потребуется, это текстовый редактор и установленный интерпретатор WSH. Кроме этого, посетите веб-узел компании Майкрософт, посвященный технологиям сценариев в среде Windows http://msdn.microsoft.com/scripting (EN), где Вы найдете массу полезной информации, доступной для загрузки. Также ознакомьтесь со статьями, предложенными в разделе "Связанные ресурсы" этой статьи.
Листинг 1 демонстрирует сценарий FinalSetup.vbs, для написания которого я использовал технологии WSH и VBScript. Вы наверняка заметите, что мне нравится "украшать" код многочисленными пробелами и добавлять достаточно комментариев. К слову сказать, комментарии упрощают чтение сценария и помогут вспомнить назначение той или иной строки, если открыть сценарий спустя месяцы после его написания. Во многих случаях я оставляю закомментированным даже отладочный код, который добавляю в процессе написания и проверки сценария.
Листинг 1 – Сценарий FinalSetup.vbs
'********************************************************************** ' НАЗВАНИЕ: FinalSetup.VBS Ver 2.0 ' НАЗНАЧЕНИЕ: для добавления глобальных групп домена к локальным группам ' после подключения компьютера к домену (образ WIN 2000). '********************************************************************** OPTION EXPLICIT 'Убедимся, что все переменные объявлены. ON ERROR RESUME NEXT 'Сценарий продолжит работу в случае внутренней ошибки. '*************************************************** 'Объявляем переменные. '*************************************************** Dim oGroup 'Объект ADSI созданный с помощью функции GetObject() Dim oWshShell 'Объект Shell для запуска исполняемого файла (smsman.exe) Dim sInDomain 'Используется для проверки членства в домене Dim sCompName 'Имя локального компьютера Dim oWshNet 'Объект WshNetwork Dim sUser 'Имя пользователя для проверки на ошибки Dim sMember 'Для проверки членства в группе (0 или 1) '******************************************************** 'Объявляем константы. '******************************************************** Const GLOBAL_GROUP = "WEBDEV" 'Глобальная группа, добавляемая к локальной группе Const LOCAL_GROUP = "Administrators" 'Имя локальной группы Const DOMAIN = "GONDOR" 'Имя домена '******************************************************** 'Создаем объекты. '******************************************************** 'Создаем объект network. Set oWshNet = Wscript.CreateObject("Wscript.Network") 'Создаем объект shell. Set oWshShell = Wscript.CreateObject("Wscript.Shell") '*************************************************** 'Получаем локальную информацию. '*************************************************** sUser = oWshNet.Username 'Получаем имя входа текущего пользователя. SCompName = oWshNet.Computername 'Получаем имя компьютера. '*************************************************** 'Убедимся, что вошедший пользователь является Администратором, если это не так, завершаем работу сценария. '*************************************************** IF UCASE(sUser) <> "ADMINISTRATOR" THEN Wscript.Echo "You must be logged in as ""ADMINISTRATOR"" to run this " & _ "script! " & vbCRLF & vbCRLF & "Log off and login as " & _ """ADMINISTRATOR"" to the local machine " & "(" & sCompName & ")." & _ vbCRLF & vbCRLF & "After logging in as ADMINISTRATOR, run the " & _ "C:\WINNT\SYSTEM32\FinalSetup.vbs script again" & _ " to finish the installation." Wscript.Quit END IF '*************************************************** 'Убедимся, что машина была добавлена к домену; 'в противном случае завершаем работу и выводим сообщение. '*************************************************** 'Получаем значение ключа из реестра. sInDomain = oWshShell.RegRead("HKLM\SOFTWARE\" & _ "Microsoft\Windows NT\CurrentVersion\Winlogon\DomainCache\GONDOR") IF sInDomain = "" THEN Wscript.Echo "The Computer does not belong to " & DOMAIN & " domain!" Wscript.quit END IF IF ERR.NUMBER = -2147024894 THEN Wscript.Echo "The Computer does not belong to " & DOMAIN & " domain!" Wscript.quit END IF '******************************************************** 'Обновляем членство в группе. '******************************************************** Set oGroup = GetObject("WinNT://" & sCompName & "/" & LOCAL_GROUP & ",group") sMember = oGroup.IsMember("WinNT://" & DOMAIN & "/" & GLOBAL_GROUP) 'если является членом, то sMember будет -1, иначе 0. IF sMember = 0 THEN oGroup.add("WinNT://" & DOMAIN & "/" & GLOBAL_GROUP) sMember = oGroup.IsMember("WinNT://" & DOMAIN & "/" & GLOBAL_GROUP) 'Если является членом, то sMember будет -1, иначе 0. IF sMember = -1 THEN oWshShell.Popup "The " & GLOBAL_GROUP & " global group has been " & _ "successfully added to the " & LOCAL_GROUP & " local group.", _ 5, "Local Group Modified", 064 End IF ELSE oWshShell.Popup "The " & GLOBAL_GROUP & " global group is already" & _ " a member of the " & LOCAL_GROUP & " local group.", 5, _ "Global Group Exists" ,064 End IF '******************************************************** 'Запускаем smsman.exe для установки SMS 2.0. '******************************************************** oWshShell.Popup "SMS 2.0 will now be installed. Please wait while" & _ " program is loading..." & vbCRLF & vbCRLF & "The SMS Client" & _ " Installation will take approximately 5 minutes to complete" _ , 10, "SMS 2.0 Installation", 064 oWshNet.MapNetworkDrive "N:", "\\SMSCPS1\SMSLOGON", , "guest", "" oWshShell.Run "N:\x86.bin\00000409\SMSMAN.EXE", ,TRUE oWshNet.RemoveNetworkDrive "N:" '******************************************************** 'Выводим сообщение об окончании сценария и завершаем работу. '******************************************************** MsgBox "This portion of the setup has been completed. " & _ "Logoff and login as the user and setup the printers."