Metode PauseService dari kelas Win32_Service (Penyedia WMI CIMWin32)
Metode kelas PauseServiceWMI mencoba menempatkan layanan dalam status dijeda.
Topik ini menggunakan sintaksIs Managed Object Format (MOF). Untuk informasi selengkapnya tentang menggunakan metode ini, lihat Memanggil Metode.
Sintaks
uint32 PauseService();
Parameter
Metode ini tidak memiliki parameter.
Nilai hasil
Mengembalikan salah satu nilai yang tercantum dalam daftar berikut, atau nilai lainnya untuk menunjukkan kesalahan. Untuk kode kesalahan tambahan, lihat Konstanta Kesalahan WMI atau WbemErrorEnum. Untuk nilai HRESULT umum, lihat Kode Kesalahan Sistem.
-
0
-
Permintaan diterima.
-
1
-
Permintaan tidak didukung.
-
2
-
Pengguna tidak memiliki akses yang diperlukan.
-
3
-
Layanan tidak dapat dihentikan karena layanan lain yang sedang berjalan bergantung padanya.
-
4
-
Kode kontrol yang diminta tidak valid, atau tidak dapat diterima oleh layanan.
-
5
-
Kode kontrol yang diminta tidak dapat dikirim ke layanan karena status layanan (Win32_BaseService.Properti status) sama dengan 0, 1, atau 2.
-
6
-
Layanan belum dimulai.
-
7
-
Layanan ini tidak menanggapi permintaan mulai secara tepat waktu.
-
8
-
Kegagalan yang tidak diketahui saat memulai layanan.
-
9
-
Jalur direktori ke file yang dapat dieksekusi layanan tidak ditemukan.
-
10
-
Layanan sudah berjalan.
-
11
-
Database untuk menambahkan layanan baru dikunci.
-
12
-
Dependensi yang diandalkan layanan ini telah dihapus dari sistem.
-
13
-
Layanan gagal menemukan layanan yang diperlukan dari layanan dependen.
-
14
-
Layanan telah dinonaktifkan dari sistem.
-
15
-
Layanan tidak memiliki autentikasi yang benar untuk dijalankan pada sistem.
-
16
-
Layanan ini sedang dihapus dari sistem.
-
17
-
Layanan ini tidak memiliki utas eksekusi.
-
18
-
Layanan ini memiliki dependensi melingkar ketika dimulai.
-
19
-
Layanan berjalan dengan nama yang sama.
-
20
-
Nama layanan memiliki karakter yang tidak valid.
-
21
-
Parameter yang tidak valid telah diteruskan ke layanan.
-
22
-
Akun tempat layanan ini berjalan tidak valid atau tidak memiliki izin untuk menjalankan layanan.
-
23
-
Layanan ada dalam database layanan yang tersedia dari sistem.
-
24
-
Layanan saat ini dijeda dalam sistem.
Keterangan
Setelah Anda menentukan layanan mana yang dapat dihentikan atau dijeda, Anda dapat menggunakan metode StopService dan PauseService untuk menghentikan dan menjeda layanan. Keputusan untuk menghentikan layanan daripada menjedanya, atau sebaliknya, tergantung pada beberapa faktor, termasuk yang berikut:
- Apakah layanan mampu dijeda? Jika tidak, satu-satunya opsi Anda adalah menghentikan layanan.
- Apakah Anda perlu terus menangani permintaan klien untuk siapa pun yang sudah terhubung ke layanan? Jika demikian, menjeda layanan biasanya memungkinkannya untuk menangani klien yang ada sambil menolak akses ke klien baru. Sebaliknya, ketika Anda menghentikan layanan, semua klien segera terputus.
- Apakah Anda perlu mengonfigurasi ulang layanan dan segera menerapkan perubahan? Meskipun properti layanan dapat diubah saat layanan dijeda, sebagian besar tidak berlaku sampai layanan benar-benar dihentikan dan dimulai ulang.
Kode pembuatan skrip yang diperlukan untuk menghentikan layanan hampir identik dengan kode yang diperlukan untuk menjeda layanan.
Contoh
Sampel kode VBScript berikut menunjukkan cara menjeda layanan tertentu dari instans Win32_Service.
Catatan
Layanan harus mendukung jeda dan sudah berjalan.
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
Sampel kode Perl berikut menunjukkan cara menjeda layanan tertentu dari instans Win32_Service.
Catatan
Layanan harus mendukung jeda dan sudah berjalan.
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";
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung |
Windows Vista |
Server minimum yang didukung |
Windows Server 2008 |
Ruang nama |
Root\CIMv2 |
MOF |
|
DLL |
|