Метод перезагрузки класса Win32_OperatingSystem
Метод класса RebootWMI завершает работу компьютерной системы, а затем перезапускает ее.
В этом разделе используется синтаксис MOF. Дополнительные сведения об использовании этого метода см. в разделе "Вызов метода".
Синтаксис
uint32 Reboot();
Параметры
Этот метод не имеет параметров.
Возвращаемое значение
Возвращает ноль (0), чтобы указать успешность. Любое другое значение указывает на ошибку. Коды ошибок см. в разделе "Константы ошибок WMI " или WbemErrorEnum. Общие значения HRESULT см. в разделе "Коды системных ошибок".
-
Успех (0)
-
Другое (1 4294967295)
Remarks
Возможность программно перезагрузить компьютер позволяет администраторам выполнять множество задач управления компьютерами удаленно.
Например, если вы создаете скрипт для установки программного обеспечения или вносите изменение конфигурации, требующее перезагрузки компьютера, можно включить команду перезапуска в скрипт и выполнить всю операцию удаленно. Метод перезагрузки можно использовать для перезагрузки компьютера. Как и в методе Win32Shutdown , метод Reboot требует, чтобы пользователь, учетные данные безопасности которых используются скриптом для получения привилегий завершения работы.
Примеры
Следующий пример кода VBScript вызывает метод Reboot класса Win32_OperatingSystem .
Примечание
Для успешного вызова метода Shutdown необходимо иметь привилегию shutdown.
Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")
for each OpSys in OpSysSet
OpSys.Reboot()
next
Следующий код Perl вызывает метод Reboot класса Win32_OperatingSystem .
Примечание
Для успешного вызова метода Shutdown необходимо иметь привилегию shutdown.
use Win32::OLE;
use strict;
my $OpSysSet;
eval { $OpSysSet = Win32::OLE->GetObject("winmgmts:{(Shutdown)}//./root/cimv2")->
ExecQuery("SELECT * FROM Win32_OperatingSystem WHERE Primary=true"); };
if (!$@ && defined $OpSysSet)
{
close(STDERR);
foreach my $OpSys (in $OpSysSet)
{
my $RetVal = $OpSys->Reboot();
if (!defined $RetVal || $RetVal != 0)
{
print Win32::OLE->LastError, "\n";
}
}
}
else
{
print STDERR Win32::OLE->LastError, "\n";
}
Следующий VBScript вызывает метод Reboot класса Win32_OperatingSystem в удаленной системе. Заполните REMOTE_SYSTEM_NAME именем удаленной системы для перезагрузки.
Примечание
Для успешного вызова метода Reboot необходимо иметь привилегию RemoteShutdown.
Set OpSysSet = GetObject("winmgmts:{(RemoteShutdown)}//REMOTE_SYSTEM_NAME/root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")
for each OpSys in OpSysSet
OpSys.Reboot()
next
Он после Perl вызывает метод Reboot класса Win32_OperatingSystem в удаленной системе. Заполните REMOTE_SYSTEM_NAME именем удаленной системы для перезагрузки.
Примечание
Для успешного вызова метода Reboot необходимо иметь привилегию RemoteShutdown.
use strict;
use Win32::OLE;
use constant REMOTE_SYSTEM_NAME => "MACHINENAME";
use constant USERNAME => "USER";
use constant PASSWORD => "PASSWORD";
use constant NAMESPACE => "root\\cimv2";
use constant wbemPrivilegeRemoteShutdown => 23;
use constant wbemImpersonationLevelImpersonate => 3;
close(STDERR);
my ($locator, $services, $OpSysSet);
eval {
$locator = Win32::OLE->new('WbemScripting.SWbemLocator');
$locator->{Security_}->{impersonationlevel} = wbemImpersonationLevelImpersonate;
$services = $locator->ConnectServer(REMOTE_SYSTEM_NAME, NAMESPACE, USERNAME, PASSWORD);
$services->{Security_}->{Privileges}->Add(wbemPrivilegeRemoteShutdown);
$OpSysSet = $services->ExecQuery("SELECT * FROM Win32_OperatingSystem WHERE Primary=true");
};
if (!$@ && defined $OpSysSet)
{
foreach my $OpSys (in $OpSysSet)
{
$OpSys->Reboot();
}
}
else
{
print Win32::OLE->LastError, "\n";
exit(1);
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows Vista |
Минимальная версия сервера |
Windows Server 2008 |
Пространство имен |
Root\CIMV2 |
MOF |
|
DLL |
|