Win32_OperatingSystem 类的 Shutdown 方法
ShutdownWMI 类方法卸载程序和 DLL,直到安全关闭计算机为止。
本主题使用托管对象格式 (MOF) 语法。 有关使用此方法的详细信息,请参阅 调用方法。
语法
uint32 Shutdown();
参数
此方法没有任何参数。
返回值
返回零 (0) 以指示成功。 其他任何数字表示出现错误。 有关错误代码,请参阅 WMI 错误常量 或 WbemErrorEnum。 有关常规 HRESULT 值,请参阅 系统错误代码。
-
成功 (0)
-
其他 (1 4294967295)
备注
有时需要从网络中删除计算机,可能是为了进行计划性维护,因为计算机无法正常运行,或者为了完成配置过程。 例如,如果 DHCP 服务器分发了错误的 IP 地址,则可能需要关闭计算机,直到可以派遣服务技术人员来解决问题。 如果怀疑发生了安全漏洞,可能需要关闭某些服务器,以确保在安全问题解决之前无法访问这些服务器。 某些配置操作 ((如更改计算机名称) )要求在更改生效之前重新启动计算机。
如果可能,此方法会立即关闭计算机。 系统停止所有正在运行的进程,将所有文件缓冲区刷新到磁盘,然后关闭系统。 调用进程必须具有 SE_SHUTDOWN_NAME 特权,如以下示例中所述。
Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")
有关设置特权的详细信息,请参阅 执行特权操作 和使用 VBScript 执行特权操作。 有关其他关闭选项(例如注销或强制关闭),请参阅 Win32Shutdown 方法。
示例
以下 VBScript 代码关闭本地计算机。
注意
必须具有 Shutdown 特权才能成功调用 Shutdown 方法。
Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")
for each OpSys in OpSysSet
OpSys.Shutdown()
next
以下 Perl 代码关闭本地计算机。
注意
必须具有 Shutdown 特权才能成功调用 Shutdown 方法。
use strict;
use Win32::OLE;
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->Shutdown();
if (!defined $RetVal || $RetVal != 0)
{
print Win32::OLE->LastError, "\n";
}
}
}
else
{
print STDERR Win32::OLE->LastError, "\n";
}
以下 VBScript 代码关闭指定的远程计算机。 在 REMOTE_SYSTEM_NAME 填写要关闭的远程系统的名称。
注意
必须具有 RemoteShutdown 特权才能成功调用 Shutdown 方法。
Set OpSysSet = GetObject("winmgmts:{(Debug,RemoteShutdown)}//REMOTE_SYSTEM_NAME/root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")
for each OpSys in OpSysSet
OpSys.Shutdown()
next
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows Vista |
最低受支持的服务器 |
Windows Server 2008 |
命名空间 |
Root\CIMV2 |
MOF |
|
DLL |
|