Перезагрузка компьютера
Типичные администраторские сценарии WMI
Мы рассмотрим несколько простых сценариев WMI, которые могут оказаться полезными при решении определенной задачи администратора Windows (удаленное управление работой рабочих станций, централизованная инвентаризация установленного на компьютерах оборудования и т. д.). Поняв принцип их работы, можно по аналогии составлять сценарии, работающие с другими компонентами информационной системы (естественно, при этом нужно знать, какие именно объекты WMI соответствуют тому или иному компоненту системы, и какие свойства и методы этих объектов следует задействовать в сценарии).
Управление компьютером
В листингах 13.1–13.3 приведены сценарии, которые с помощью соответствующих методов класса Win32_OperatingSystem позволяют принудительно завершить сеанс активного пользователя, перезагрузить или выключить компьютер.
Завершение сеанса пользователя
Для завершения сеанса активного пользователя необходимо вызвать метод Win32Shutdown объекта Win32_OperatingSystem (листинг 13.1).
'*******************************************************************
' Имя: LogOff.vbs
' Язык: VBScript
' Описание: Завершение сеанса пользователя
'*******************************************************************
Option Explicit
' Объявляем переменные
Dim strComputer ' Имя компьютера
Dim strNamespace ' Имя пространства имен
Dim strClass ' Имя класса
Dim objClass ' Объект SWbemObject (класс WMI)
Dim colInstances ' Коллекция экземпляров класса WMI
Dim objInstance ' Элемент коллекции
'********************** Начало *************************************
' Присваиваем начальные значения переменным
strComputer = "."
strNamespace = "Root\CIMV2"
strClass = "Win32_OperatingSystem"
' Получаем указатель на класс WMI
Set objClass = GetObject("WinMgmts:\\" & strComputer & _
"\" & strNamespace & ":" & strClass)
' Создаем коллекцию экземпляров класса Win32_OperatingSystem
Set colInstances = objClass.Instances_
' Перебираем элементы коллекции
For Each objInstance In colInstances
' Выводим на экран предупреждение
WScript.Echo "На компьютере " & objInstance.CSNAME & VbCrLf &_
"сеанс текущего пользователя будет завершен "
' Для каждого экземпляра вызываем метод Win32Shutdown
objInstance.Win32Shutdown(0)
Next
'************************* Конец ***********************************
Листинг 13.1. Завершение сеанса пользователя
Перезагрузка компьютера
Для перезагрузки компьютера необходимо использовать метод Reboot объекта Win32_OperatingSystem (листинг 13.2). При этом при подключении к подсистеме WMI необходимо указать дополнительные привилегии Shutdown (для перезагрузки локального компьютера) и RemoteShutdown (для перезагрузки удаленного компьютера).
'*******************************************************************
' Имя: Reboot.vbs
' Язык: VBScript
' Описание: Перезагрузка компьютера
'*******************************************************************
Option Explicit
' Объявляем переменные
Dim strComputer ' Имя компьютера
Dim strNamespace ' Имя пространства имен
Dim strClass ' Имя класса
Dim objClass ' Объект SWbemObject (класс WMI)
Dim colInstances ' Коллекция экземпляров класса WMI
Dim objInstance ' Элемент коллекции
'********************** Начало *************************************
' Присваиваем начальные значения переменным
strComputer = "."
strNamespace = "Root\CIMV2"
strClass = "Win32_OperatingSystem"
' Получаем указатель на класс WMI
Set objClass = GetObject("WinMgmts:{(Shutdown,RemoteShutdown)}!\\" &_
strComputer & "\" & strNamespace & ":" & strClass)
' Создаем коллекцию экземпляров класса Win32_OperatingSystem
Set colInstances = objClass.Instances_
' Перебираем элементы коллекции
For Each objInstance In colInstances
' Выводим на экран предупреждение
WScript.Echo "Компьютер " & objInstance.CSNAME &_
" будет перезагружен "
' Для каждого экземпляра вызываем метод Reboot
objInstance.Reboot()
Next
'************************* Конец ***********************************
Листинг 13.2. Перезагрузка компьютера
Дата добавления: 2018-03-01; просмотров: 533;