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 |
|
DLL |
|
另請參閱