Андрей Попов - Windows Script Host для Windows 2000/XP
var vbYesNo=4,vbQuestion=32,vbYes=6;
//Создаем объект WshShell
WshShell = WScript.CreateObject("WScript.Shell");
//Создаем объект Shell.Application
Shell=WScript.CreateObject("Shell.Application");
//Выводим запрос
Res=WshShell.Popup("Открыть окно выключения компьютера?",0,
 "Вызов стандартных диалогов Windows",vbQuestion+vbYesNo);
if (Res==vbYes) //Нажата кнопка Да
 //Вызываем окно выключения компьютера
В Shell.ShutdownWindows();
/************* Конец *********************************************/В
Рспользование технологии Windows Management Instrumentation (WMI)
Р’ Windows XP/2000 СЏРґСЂРѕРј системы управления является технология WMI — Windows Management Instrumentation. WMI — это глобальная концепция настройки, управления Рё слежения Р·Р° работой различных частей корпоративной компьютерной сети. Р’ частности, используя WMI, можно РёР· сценария WSH контролировать Рё изменять параметры самых разнородных физических Рё логических элементов компьютерной системы, РІ качестве которых РјРѕРіСѓС‚ выступать, например, файл РЅР° жестком РґРёСЃРєРµ, запущенный экземпляр приложения, системное событие, сетевой пакет или установленный РІ компьютере процессор. Очень важно, что РїСЂРё этом для доступа РєРѕ всем элементам используется единый интерфейс СЃ помощью CIMOM — Common Information Model Object Manager — базы данных объектов, представляющих эти элементы. Рто позволяет, РІ частности, быстро получать информацию разнообразного типа РѕР± объектах СЃ помощью запросов РЅР° языке SQL. Другой важной особенностью WMI является то, что этот же интерфейс можно использовать для дистанционного управления компьютерами РІ сети (естественно, если РЅР° локальной Рё удаленной машине установлен WMI, Р° Сѓ пользователя, который выполняет удаленное администрирование, имеются соответствующие права).
Технология WMI — это созданная фирмой Microsoft реализация модели управления предприятием на базе Web (WBEM, Web-Based Enterprise Management), которая была разработана и принята рабочей группой по управлению распределенными системами (DMTF, Distributed Management Task Force), при участии таких компаний, как ВМС Software, Cisco Systems, Compaq Computer, Intel и Microsoft. Задачей WBEM была разработка стандартного набора интерфейсов для управления информационной средой предприятия.
В WBEM информация интерпретируется в рамках модели Common Information Model (CIM). CIM представляет собой стандартную схему именования для физических и логических компонентов компьютера. К любому элементу CIM можно обратиться с помощью объектно-ориентированной терминологии:
□ класс CIM — это шаблон управляемых элементов, имеющий свойства и методы;
□ объект CIM — это экземпляр класса, представляющий базовый компонент системы;
□ схема (schema) — это совокупность классов, описывающая систему в целом.
В Windows используются две схемы: CIM (соответствует спецификации CIM 2.0) и Win32 (расширяет спецификацию CIM 2.0).
ЗамечаниеВОбъекты WMI также РјРѕРіСѓС‚ использоваться Рё РІ Windows 9x/ME/NT, для этого нужно скачать СЃ сервера Microsoft(http://www.microsoft.com/downloads/release.asp?ReleaseID=18490).
Здесь мы не будем рассматривать классы, свойства и методы, которые поддерживает WMI, т.к. даже поверхностное ознакомление с ними потребовало бы отдельной книги, а лишь приведем несколько простых примеров сценариев, из которых станет ясно, каким образом происходит соединение с WMI, запрос нужной информации и использование объектов WMI.
Доступ к свойствам файла
Первый пример, который мы рассмотрим, будет посвящен работе с файловой системой. Мы напишем сценарий FileInfoWMI.js, в котором с помощью WMI будет формироваться диалоговое окно с информацией о файле C:boot.ini (рис. 11.28).
Рис. 11.28. Свойства файла C:boot.ini
ЗамечаниеНапомним, что из сценария к файловой системе можно получить доступ с помощью стандартного объекта FileSystemObject, однако использование WMI дает возможность собрать более полную информацию.
Для доступа к файлу на диске нужно создать для этого файла объект класса DataFile схемы CIM. Как и при использовании объектов ADSI, это делается с помощью JScript-функции GetObject(), в качестве параметра которой указывается строка вида "winMgmts:Prefix_class.Property=Value", где параметр Prefix соответствует используемой схеме (CIM или Win32), Class задает имя требуемого класса, Property соответствует имени свойства класса, a Value определяет конкретное значение этого свойства. В нашем случае нужный объект (переменная File) создается следующим образом:
//Создаем объект класса CIM_DataFile для файла C:boot.ini
File=GetObject("winMgmts:CIM_DataFile.Name='РЎ:\boot.ini'")В
После этого свойства файла извлекаются обычным образом из переменной File:
//Рнициализируем символьную переменную SInfo
SInfo="Рнформация Рѕ файле "+File.Name+"nn";
//Рзвлекаем свойства файла
SInfo+="РРјСЏ:tt"+File.Name+"n";
…
//Определяем, доступен ли файл для чтения и записи
SInfo+="n";
if (File.Readable) SInfo+="Файл доступен для чтенияn"
else SInfo+="Файл не доступен для чтенияn";