Aracılığıyla paylaş


WMI Görevleri: Hizmetler

Hizmetlere yönelik WMI görevleri, bağımlı veya öncül hizmetler de dahil olmak üzere hizmetler hakkında bilgi alır. Diğer örnekler için, https://www.microsoft.com/technetkonumundaki TechNet ScriptCenter'ne bakın.

Bu konuda gösterilen betik örnekleri yalnızca yerel bilgisayardan veri alır. Betiği uzak bilgisayarlardan veri almak için kullanma hakkında daha fazla bilgi için bkz. Uzak Bilgisayarda WMI'ye Bağlanma.

Aşağıdaki yordamda betiğin nasıl çalıştırıldığı açıklanmaktadır.

Betik çalıştırmak için

  1. Kodu kopyalayın ve filename.vbsgibi .vbs uzantısına sahip bir dosyaya kaydedin. Metin düzenleyicinizin dosyaya .txt uzantısı eklemediğinden emin olun.
  2. Bir komut istemi penceresi açın ve dosyayı kaydettiğiniz dizine gidin.
  3. Komut istemine cscript filename.vbs yazın.
  4. Olay günlüğüne erişemiyorsanız Yükseltilmiş komut isteminden çalıştırılıp çalıştıramadığınızı denetleyin. Güvenlik Olay Günlüğü gibi bazı Olay Günlüğü, Kullanıcı Erişim Denetimleri (UAC) tarafından korunabilir.

Not

Varsayılan olarak, cscript komut istemi penceresinde bir betiğin çıkışını görüntüler. WMI betikleri büyük miktarda çıkış üretebileceğinden, çıkışı bir dosyaya yeniden yönlendirmek isteyebilirsiniz. filename.vbs betiğinin çıktısını outfile.txtyönlendirmek için komut istemine cscript filename.vbs > outfile.txt yazın.

Aşağıdaki tabloda, yerel bilgisayardan çeşitli veri türlerini almak için kullanılabilecek betik örnekleri listelenmiştir.

Nasıl... WMI sınıfları veya yöntemleri
... hangi hizmetlerin çalıştığını ve hangilerinin çalışmadığını belirler mi? Tüm hizmetlerin durumunu denetlemek için Win32_Service sınıfını kullanın. state özelliği, bir hizmetin durdurulup durdurulmadığını veya çalıştırılıp çalıştırılamadığını size bildirir.
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
PowerShell
Get-WmiObject -Class win32_service -computer "." -Namespace "root\cimv2" | format-list Name, State
... Power Users'ın belirli hizmetleri başlatması durdurulsun mu?

StartMode özelliğini Devre Dışı olarak ayarlamak için Win32_Service sınıfını ve ChangeStartMode yöntemini kullanın. Devre dışı bırakılan hizmetler başlatılamaz ve Power Users varsayılan olarak bir hizmetin başlangıç modunu değiştiremez.

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
PowerShell
Get-WmiObject -Class win32_service -computer "." -Namespace "root\cimv2" | where {$_.startMode -eq "Manual"} | `
    foreach-object { [void]$_.changeStartMode('Disabled') }
... hizmetleri başlatıp durdursun mu?

Win32_Service sınıfını ve StopService ve StartService yöntemlerini kullanın.

VB
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
PowerShell
Get-WmiObject -Class win32_service -computer "." -Namespace "root\cimv2" | where {$_.Name -eq "Alerter"} | `
    foreach-object { [void]$_.StartService() }
... betik kullanarak hizmet hesabı parolalarını değiştirsin mi?

Win32_Service sınıfını ve Change yöntemini kullanın.

VB
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
.. hangi hizmetleri durdurabilirim?

Win32_Service sınıfını kullanın ve AcceptStop özelliğinin değerini denetleyin.

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
PowerShell
Get-WmiObject -Class win32_service -computer "." -Namespace "root\cimv2" | where {$_.AcceptStop -eq "True"} | `
     format-list DisplayName
... DHCP hizmetini başlatmadan önce çalışması gereken hizmetleri bulma

Win32_DependentService sınıfında yer alan ve Rol özelliğinde "Bağımlı" olan "DHCP" adlı Win32_Service sınıfını ASSOCIATORS sorgusu. Rol, DHCP hizmetinin rolü anlamına gelir: bu durumda, başlatılmakta olan diğer hizmetlere bağımlıdır.

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
... WMI hizmeti (Winmgmt) hizmetinin başlatılmadan önce çalıştırılmasını gerektiren hizmetleri bulun.

Win32_DependentService sınıfında yer alan ve Rol özelliğinde "Antecendent" bulunan "DHCP" adlı Win32_Service sınıfını ASSOCIATORS sorgusu. Rol, rasman hizmetinin rolü anlamına gelir: bu durumda, bağımlı hizmetlerden önce başlatılması gereken bir öncüldür.

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

Betikler ve Uygulamalar için WMI Görevlerini

WMI C++ Uygulama Örnekleri

TechNet ScriptCenter

`