Tugas WMI untuk layanan mendapatkan informasi tentang layanan, termasuk layanan dependen atau antecedent. Untuk contoh lain, lihat TechNet ScriptCenter di https://www.microsoft.com/technet.
Contoh skrip yang ditampilkan dalam topik ini hanya mendapatkan data dari komputer lokal. Untuk informasi selengkapnya tentang cara menggunakan skrip untuk mendapatkan data dari komputer jarak jauh, lihat Menyambungkan ke WMI di Komputer Jarak Jauh.
Prosedur berikut menjelaskan cara menjalankan skrip.
Untuk menjalankan skrip
Salin kode dan simpan dalam file dengan ekstensi .vbs, seperti filename.vbs. Pastikan editor teks Anda tidak menambahkan ekstensi .txt ke file.
Buka jendela prompt perintah dan navigasikan ke direktori tempat Anda menyimpan file.
Ketik filename.vbscscript pada prompt perintah.
Jika Anda tidak dapat mengakses log peristiwa, periksa untuk melihat apakah Anda menjalankan dari prompt perintah Yang ditingkatkan. Beberapa Log Peristiwa, seperti Log Peristiwa Keamanan, dapat dilindungi oleh Kontrol Akses Pengguna (UAC).
Catatan
Secara default, cscript menampilkan output skrip di jendela prompt perintah. Karena skrip WMI dapat menghasilkan output dalam jumlah besar, Anda mungkin ingin mengalihkan output ke file. Ketik filename.vbs > cscript outfile.txt pada prompt perintah untuk mengalihkan output skrip filename.vbs ke outfile.txt.
Tabel berikut ini mencantumkan contoh skrip yang bisa digunakan untuk mendapatkan berbagai jenis data dari komputer lokal.
Bagaimana Caranya...
Kelas atau metode WMI
... menentukan layanan mana yang berjalan dan mana yang tidak?
Gunakan kelas Win32_Service untuk memeriksa status semua layanan. Properti status memungkinkan Anda mengetahui apakah layanan dihentikan atau berjalan.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Service",,48)
For Each objItem in colItems
Wscript.Echo "Service Name: " & objItem.Name & VBNewLine & "State: " & objItem.State
Next
... menghentikan Pengguna Daya memulai layanan tertentu?
Gunakan kelas Win32_Service dan metode ChangeStartMode untuk mengatur properti StartMode ke Dinonaktifkan. Layanan yang dinonaktifkan tidak dapat dimulai, dan, secara default, Pengguna Daya tidak dapat mengubah mode mulai layanan.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery ("Select * from Win32_Service where StartMode = 'Manual'")
For Each objService in colServiceList
errReturnCode = objService.Change( , , , , "Disabled")
WScript.Echo "Changed manual service to disabled: " & objService.Name
Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery ("Select * from Win32_Service Where Name ='Alerter'")
For Each objService in colListOfServices
objService.StartService()
Wscript.Echo "Started Alerter service"
Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery ("Select * from Win32_Service")
For Each objservice in colServiceList
If objService.StartName = ".\netsvc" Then
errReturn = objService.Change( , , , , , , , "password")
End If
Next
.. menentukan layanan mana yang dapat saya hentikan?
Gunakan kelas Win32_Service , dan periksa nilai properti AcceptStop .
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery ("Select * from Win32_Service Where AcceptStop = True")
For Each objService in colServices
Wscript.Echo objService.DisplayName
Next
... temukan layanan yang harus berjalan sebelum saya dapat memulai layanan DHCP?
Kueri untuk ASSOCIATORS dari kelas Win32_Service bernama "DHCP" yang berada di kelas Win32_DependentService dan memiliki "Dependen" di properti Peran .
Peran berarti peran layanan DHCP: dalam hal ini, itu tergantung pada layanan lain yang sedang dimulai.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery("Associators Of " _
& "{Win32_Service.Name='dhcp'} Where " _
& "AssocClass=Win32_DependentService " _
& "Role=Dependent")
For Each objService in colServiceList
Wscript.Echo objService.DisplayName
Next
PowerShell
$query = "Associators Of {Win32_Service.Name='dhcp'} Where AssocClass=Win32_DependentService Role=Dependent"
Get-WmiObject -Query $query -Namespace "root\cimv2" | format-list DisplayName
... temukan layanan yang mengharuskan layanan WMI (Winmgmt) berjalan sebelum dapat dimulai?
Kueri untuk ASSOCIATORS dari kelas Win32_Service bernama "DHCP" yang berada di kelas Win32_DependentService dan memiliki "Antecendent" di properti Peran .
Peran berarti peran layanan rasman: dalam hal ini, merupakan tambahan untuk harus dimulai sebelum layanan dependen.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\ & strComputer & "\root\cimv2")
Set colServiceList = _
objWMIService.ExecQuery("Associators of " _
& "{Win32_Service.Name='winmgmt'} Where " _
& "AssocClass=Win32_DependentService " _
& "Role=Antecedent" )
For Each objService in colServiceList
Wscript.Echo "Name: " & objService.Name & VBTab & "Display Name: " & objService.DisplayName
Next
PowerShell
$query = "Associators of {Win32_Service.Name='winmgmt'} Where AssocClass=Win32_DependentService Role=Antecedent"
Get-WmiObject -Query $query -Namespace "root\cimv2" | format-list Name, DisplayName