Метод Win32Shutdown класса Win32_OperatingSystem
Метод класса WMIWin32Shutdown предоставляет полный набор параметров завершения работы, поддерживаемых операционными системами Win32. К ним относятся выход, завершение работы, перезагрузка и принудительное завершение работы, завершение работы или перезагрузка.
В этом разделе используется синтаксис формата управляемого объекта (MOF). Дополнительные сведения об использовании этого метода см. в разделе Вызов метода.
Синтаксис
uint32 Win32Shutdown(
[in] sint32 Flags,
[in] sint32 Reserved =
);
Параметры
-
Флаги [в]
-
Набор битовых флагов для завершения работы компьютера. Чтобы принудительно выполнить команду, добавьте флаг Force (4) в значение команды. Использование Force в сочетании с завершением работы или перезагрузкой на удаленном компьютере немедленно завершает работу всех компонентов (включая WMI, COM и т. д.) или перезагружает удаленный компьютер. В результате возвращается неопределенное значение.
-
0 (0x0)
-
Log Off — регистрирует пользователя за компьютером. Отключение журнала останавливает все процессы, связанные с контекстом безопасности процесса, который вызвал функцию выхода, записывает текущего пользователя из системы и отображает диалоговое окно входа.
-
4 (0x4)
-
Принудительный выход (0 + 4) — немедленно регистрирует пользователя с компьютера и не уведомляет приложения о завершении сеанса входа. Это может привести к потере данных.
-
1 (0x1)
-
Завершение работы — завершает работу компьютера до точки, в которой можно безопасно отключить питание. (Все буферы файлов сбрасываются на диск, а все запущенные процессы остановлены.) Пользователи видят сообщение,
It is now safe to turn off your computer.
Во время завершения работы система отправляет сообщение каждому работающему приложению. Приложения выполняют очистку во время обработки сообщения и возвращают значение True, чтобы указать, что они могут быть завершены.
-
5 (0x5)
-
Принудительное завершение работы (1 + 4) — завершает работу компьютера до точки, в которой можно безопасно отключить питание. (Все буферы файлов сбрасываются на диск, а все запущенные процессы остановлены.) Пользователи видят сообщение,
It is now safe to turn off your computer.
При использовании подхода принудительного завершения работы все службы, включая WMI, немедленно завершаются. Из-за этого вы не сможете получить возвращаемое значение при выполнении скрипта на удаленном компьютере.
-
2 (0x2)
-
Перезагрузка — завершает работу, а затем перезагружает компьютер.
-
6 (0x6)
-
Принудительная перезагрузка (2 + 4) — завершает работу, а затем перезагружает компьютер.
При использовании метода принудительной перезагрузки все службы, включая WMI, немедленно завершаются. Из-за этого вы не сможете получить возвращаемое значение при выполнении скрипта на удаленном компьютере.
-
8 (0x8)
-
Выключение питания — завершает работу компьютера и отключает питание (если поддерживается рассматриваемым компьютером).
-
12 (0xC)
-
Принудительное выключение питания (8 + 4) — завершает работу компьютера и отключает питание (если поддерживается рассматриваемым компьютером).
При использовании подхода принудительного выключения питания все службы, включая WMI, немедленно завершаются. Из-за этого вы не сможете получить возвращаемое значение при выполнении скрипта на удаленном компьютере.
Зарезервировано [в]
Средство расширения Win32Shutdown. В настоящее время параметр Reserved игнорируется.
Возвращаемое значение
Возвращает ноль (0), чтобы указать на успешное выполнение. Любое другое значение указывает на ошибку. Коды ошибок см. в разделе Константы ошибок WMI или WbemErrorEnum. Общие значения HRESULT см. в разделе Системные коды ошибок.
-
Успешное выполнение (0)
-
Другое (1–4294967295)
Комментарии
Для более эффективного управления компьютерами в организации администраторам требуется возможность удаленного завершения работы или перезагрузки компьютера, а также удаленного выхода пользователя из системы. Возможность выполнения этих задач позволяет администраторам устанавливать программное обеспечение, перенастраивать параметры компьютера, удалять компьютеры из сети и выполнять другие задачи без необходимости вручную завершать работу или перезагружать каждый компьютер.
Например, чтобы выполнить обновление сети, может потребоваться завершить работу всех компьютеров, работающих в определенном сегменте сети. Чтобы принудительно выполнить обновление групповая политика, необходимо выйти из системы пользователей. Если компьютерный вирус присутствует в любой точке вашей организации, вы можете завершить работу как можно больше компьютеров, прежде чем вирус сможет распространиться. Возможность завершения работы и перезагрузки компьютеров, а также программного выхода пользователей из системы, а не вручную, может значительно сэкономить время.
Вызывающий процесс должен иметь привилегию SE_SHUTDOWN_NAME .
Метод Win32ShutdownTracker предоставляет тот же набор параметров завершения работы, которые поддерживаются методом Win32Shutdown в Win32_OperatingSystem но также позволяет указать комментарии, причину завершения работы или время ожидания.
Метод Win32Shutdown не имеет параметра для блокировки рабочей станции, в результате чего пользователь вошел в систему. Однако рабочие станции можно заблокировать в командной строке с помощью следующей команды:
% windir %\System32\rundll32.exe user32.dll,LockWorkStation
Примеры
Пример VBScript для выхода из системы, перезагрузки или завершения работы нескольких компьютеров в коллекции TechNet использует Win32Shutdown для выхода из системы, завершения работы, перезагрузки или выключения (в зависимости от выбранного варианта) компьютеров, перечисленных в массиве серверов.
Пример ComputerManagement.ps1 PowerShell в коллекции TechNet включает метод, который вызывает Win32Shutdown на удаленном компьютере.
В следующем примере PowerShell используется метод Win32Shutdown для завершения работы указанного компьютера.
$computername= "."
$win32OS = get-wmiobject win32_operatingsystem -computername $computername
$win32OS.psbase.Scope.Options.EnablePrivileges = $true
$win32OS.win32shutdown(8)
В следующем примере кода PowerShell используется командлет EnableAllPrivileges из get-wmiobject для достижения соответствующих привилегий.
$win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges
$win32OS.win32shutdown(8)
В следующем VB.NET примере кода используется метод Shutdown для перезагрузки или выхода из системы.
Dim
testResult AsSingle
Dim WMIServiceObject, ComputerObject AsObject
'Now get some privileges
WMIServiceObject = GetObject(
"Winmgmts:{impersonationLevel=impersonate,(Debug,Shutdown)}")
ForEach ComputerObject In WMIServiceObject.InstancesOf("Win32_OperatingSystem")
testResult = ComputerObject.Win32Shutdown(2 + 4, 0)
'reboot
'testResult = ComputerObject.Win32Shutdown(0, 0) 'logoff
' testResult = ComputerObject.Win32Shutdown(8 + 4, 0) 'shutdown
If testResult <> 0 Then
MsgBox("Sorry, an error has occurred while trying to perform selected operation")
Else
'Operation selected in statement above if condition would be carried out
EndIf
Next
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows Vista |
Минимальная версия сервера |
Windows Server 2008 |
Пространство имен |
Root\CIMV2 |
MOF |
|
DLL |
|
См. также раздел