Win32_OperatingSystem 类的 Win32Shutdown 方法
Win32ShutdownWMI 类方法提供 Win32 操作系统支持的一组完整的关闭选项。 其中包括注销、关闭、重启和强制注销、关闭或重新启动。
本主题使用托管对象格式 (MOF) 语法。 有关使用此方法的详细信息,请参阅 调用方法。
语法
uint32 Win32Shutdown(
[in] sint32 Flags,
[in] sint32 Reserved =
);
参数
-
Flags [in]
-
用于关闭计算机的已位图标志集。 若要强制命令,请将 Force 标志 (4) 添加到命令值。 将 Force 与远程计算机上的关机或重新启动结合使用会立即关闭所有 (包括 WMI、COM 等) ) ,或重新启动远程计算机。 这会导致不确定的返回值。
-
0 (0x0)
-
注销 - 将用户从计算机注销。 注销会停止与调用 exit 函数的进程的安全上下文关联的所有进程,将当前用户记录在系统外,并显示登录对话框。
-
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)都会立即关闭。 因此,如果针对远程计算机运行脚本,则无法接收返回值。
保留 [in]
一种扩展 Win32Shutdown 的方法。 目前, 将忽略 Reserved 参数。
返回值
返回零 (0) 以指示成功。 其他任何数字表示出现错误。 有关错误代码,请参阅 WMI 错误常量 或 WbemErrorEnum。 有关常规 HRESULT 值,请参阅 系统错误代码。
-
成功 (0)
-
其他 (1–4294967295)
备注
为了更高效地管理组织中的计算机,管理员需要能够远程关闭或重启计算机,或者远程注销用户。 执行这些任务的功能允许管理员安装软件、重新配置计算机设置、从网络中删除计算机以及执行其他任务,而无需手动关闭或重启每台计算机。
例如,若要执行网络升级,可能需要关闭在特定网段上运行的所有计算机。 若要强制组策略升级,需要将用户从其计算机注销。 如果组织中的任何位置都存在计算机病毒,可能需要在病毒有机会传播之前关闭尽可能多的计算机。 以编程方式(而不是手动)关闭和重启计算机以及注销用户的功能可以节省大量时间。
调用进程必须具有 SE_SHUTDOWN_NAME 特权。
Win32ShutdownTracker 方法在 Win32_OperatingSystem 中提供了 Win32Shutdown 方法支持的相同关闭选项集,但它也允许指定注释、关闭原因或超时。
Win32Shutdown 方法没有用于锁定工作站的参数,使用户保持登录状态。 但是,可以使用以下命令从命令行锁定工作站:
% windir %\System32\rundll32.exe user32.dll,LockWorkStation
示例
TechNet 库中的 注销、重启或关闭多台计算机 VBScript 示例使用 Win32Shutdown (注销、关闭、重新启动或关闭电源,具体取决于服务器阵列中列出的计算机) 选择。
TechNet 库中 的ComputerManagement.ps1 PowerShell 示例包括一个在远程计算机上调用 Win32Shutdown 的方法。
以下 PowerShell 示例使用 Win32Shutdown 方法关闭指定的计算机。
$computername= "."
$win32OS = get-wmiobject win32_operatingsystem -computername $computername
$win32OS.psbase.Scope.Options.EnablePrivileges = $true
$win32OS.win32shutdown(8)
以下 PowerShell 代码示例使用 get-wmiobject cmdlet 中的 EnableAllPrivileges 来实现适当的特权。
$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 |
|
另请参阅