Win32_Service 類別的 PauseService 方法 (CIMWin32 WMI 提供者)
PauseServiceWMI 類別方法會嘗試將服務置於暫停狀態。
本主題使用Managed物件格式 (MOF) 語法。 如需使用此方法的詳細資訊,請參閱 呼叫方法。
語法
uint32 PauseService();
參數
這個方法沒有任何參數。
傳回值
傳回下列清單中所列的其中一個值,或任何其他值,以指出錯誤。 如需其他錯誤碼,請參閱 WMI 錯誤常數或 WbemErrorEnum。 如需一般 HRESULT 值,請參閱 系統錯誤碼。
-
0
-
已接受要求。
-
1
-
不支援此要求。
-
2
-
用戶沒有必要的存取權。
-
3
-
無法停止服務,因為正在執行的其他服務相依於它。
-
4
-
要求的控制程式代碼無效,或服務無法接受。
-
5
-
要求的控制程式代碼無法傳送至服務,因為服務的狀態 (Win32_BaseService。State 屬性) 等於 0、1 或 2。
-
6
-
服務尚未啟動。
-
7
-
服務未及時回應啟動要求。
-
8
-
啟動服務時發生未知的失敗。
-
9
-
找不到服務可執行文件的目錄路徑。
-
10
-
服務已在執行中。
-
11
-
要加入新服務的資料庫已鎖定。
-
12
-
此服務所依賴的相依性已從系統中移除。
-
13
-
服務找不到相依服務所需的服務。
-
14
-
服務已從系統停用。
-
15
-
服務沒有在系統上執行的正確驗證。
-
16
-
此服務正從系統中移除。
-
17
-
服務沒有執行線程。
-
18
-
服務啟動時會有迴圈相依性。
-
19
-
服務是以相同名稱執行。
-
20
-
服務名稱具有無效的字元。
-
21
-
無效的參數已傳遞至服務。
-
22
-
此服務執行的帳戶無效或缺少執行服務的許可權。
-
23
-
服務存在於系統可用的服務資料庫中。
-
24
-
服務目前在系統中暫停。
備註
在您判斷哪些服務可以停止或暫停之後,您可以使用 StopService 和 PauseService 方法來停止和暫停服務。 停止服務而不是暫停服務的決策,反之亦然,取決於數個因素,包括下列各項:
- 服務是否能夠暫停? 如果沒有,您唯一的選項就是停止服務。
- 您需要繼續處理已連線至服務之任何人的用戶端要求嗎? 如果是,暫停服務通常允許它處理現有的用戶端,同時拒絕存取新的用戶端。 相較之下,當您停止服務時,所有客戶端都會立即中斷連線。
- 您是否需要重新設定服務,並立即生效變更? 雖然服務屬性可以在服務暫停時變更,但在服務實際停止並重新啟動之前,大部分屬性都不會生效。
停止服務所需的腳本程式代碼幾乎與暫停服務所需的程式代碼完全相同。
範例
下列 VBScript 程式代碼範例示範如何從 實例暫停特定服務Win32_Service。
注意
服務必須支持暫停且已經執行。
Set ServiceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_Service where Name='Schedule'")
for each Service in ServiceSet
SupportsPause = Service.AcceptPause
if SupportsPause = true then
RetVal = Service.PauseService()
if RetVal = 0 then
WScript.Echo "Service paused"
else
if RetVal = 1 then
WScript.Echo "Pause not supported"
else WScript.Echo "An error occurred:" & RetVal
End If
End If
else
WScript.Echo "Service does not support pause"
end if
next
下列 Perl 程式代碼範例示範如何從 Win32_Service 實例暫停特定服務。
注意
服務必須支持暫停且已經執行。
use strict;
use Win32::OLE;
my ($ServiceSet, $SupportsPause, $RetVal);
eval {$ServiceSet = Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\Root\\CIMv2")->
ExecQuery("SELECT * FROM Win32_Service WHERE Name='Schedule'"); };
unless($@)
{
foreach my $ServiceInst (in $ServiceSet)
{
if ($ServiceInst->{AcceptPause})
{
$RetVal = $ServiceInst->PauseService();
if ($RetVal == 0)
{
print "\nService paused\n";
}
else
{
if ($RetVal == 1)
{
print "\nPause not supported\n" ;
}
else
{
print "\nAn error occurred:", $RetVal, "\n";
}
}
}
else
{
print "\nService does not support pause\n";
}
}
}
else
{
print STDERR "\n", Win32::OLE->LastError, "\n";
}
需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows Vista |
最低支援的伺服器 |
Windows Server 2008 |
Namespace |
Root\CIMv2 |
MOF |
|
DLL |
|