Win32_OperatingSystem 类的重启方法
RebootWMI 类方法会关闭计算机系统,然后重启它。
本主题使用托管对象格式 (MOF) 语法。 有关使用此方法的详细信息,请参阅 调用方法。
语法
uint32 Reboot();
参数
此方法没有任何参数。
返回值
返回零 (0) 以指示成功。 其他任何数字表示出现错误。 有关错误代码,请参阅 WMI 错误常量 或 WbemErrorEnum。 有关常规 HRESULT 值,请参阅 系统错误代码。
-
成功 (0)
-
其他 (1 4294967295)
备注
以编程方式重启计算机的功能允许管理员远程执行许多计算机管理任务。
例如,如果创建一个脚本来安装软件或进行需要重新启动计算机的配置更改,则可以在脚本中包含 restart 命令并远程执行整个操作。 Reboot 方法可用于重启计算机。 与 Win32Shutdown 方法一样, Reboot 方法要求脚本使用其安全凭据的用户具有“关闭”权限。
示例
以下 VBScript 代码示例调用 Win32_OperatingSystem 类的 Reboot 方法。
注意
必须具有 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 代码调用 Win32_OperatingSystem 类的 Reboot 方法。
注意
必须具有 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 在远程系统上调用 Win32_OperatingSystem 类的 Reboot 方法。 使用要重新启动的远程系统的名称填写REMOTE_SYSTEM_NAME。
注意
必须具有 RemoteShutdown 特权才能成功调用 Reboot 方法
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 调用远程系统上 Win32_OperatingSystem 类的 Reboot 方法。 使用要重新启动的远程系统的名称填写REMOTE_SYSTEM_NAME。
注意
必须具有 RemoteShutdown 特权才能成功调用 Reboot 方法。
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 |
|