Win32_OperatingSystem 類別的 Win32Shutdown 方法

Win32ShutdownWMI 類別方法提供 Win32 操作系統支援的一組完整關機選項。 其中包括註銷、關機、重新啟動,以及強制註銷、關機或重新啟動。

本主題使用Managed物件格式 (MOF) 語法。 如需使用此方法的詳細資訊,請參閱 呼叫方法

語法

uint32 Win32Shutdown(
  [in] sint32 Flags,
  [in] sint32 Reserved = 
);

參數

旗標 [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

範例

下列 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
Namespace
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

另請參閱

作業系統類別

Win32_OperatingSystem

Win32ShutdownTracker

WMI 工作:桌面管理

使用 VBScript 執行特殊許可權作業