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
CIMWin32.mof
DLL
CIMWin32.dll

另请参阅

操作系统类

Win32_OperatingSystem

Win32ShutdownTracker

WMI 任务:桌面管理

使用 VBScript 执行特权操作