Sdílet prostřednictvím


Aktualizace dat rozhraní WMI ve skriptech

Ve skriptech monitorování se můžete vyhnout následným voláním GetObject pomocí objektu SWbemRefresher. SWbemRefresher objekt je kontejner, který může obsahovat několik objektů WMI, jejichž data je možné aktualizovat v jednom volání.

K získání přesných dat z tříd výkonu rozhraní WMI, jako jsou Win32_PerfFormattedData_PerfDisk_LogicalDisk nebo jiné předinstalované třídy odvozené z Win32_Perf, je nutné použít SWbemRefresher objekt .

Následující postup popisuje, jak aktualizovat data ve skriptech.

Aktualizace dat ve skriptech

  1. Voláním CreateObject vytvořte objekt obnovy SWbemRefresher.

    Set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
    
  2. Připojte se k WMI namespace. Chcete-li použít předinstalované třídy výkonu Win32_Perf, připojte se k root\cimv2.

    Set objServicesCimv2 = GetObject("winmgmts:\\" _
        & strComputer & "\root\cimv2")
    
  3. Přidejte jeden objekt (volání SWbemRefresher.Add) nebo kolekci (volání SWbemRefresher.AddEnum) do refresheru.

    Použijte předem vypočtené datové třídy odvozené z Win32_PerfFormattedData, například Win32_PerfFormattedData_PerfDisk_LogicalDisk místo Win32_PerfRawData_PerfDisk_LogicalDisk. V opačném případě je nutné vypočítat hodnoty pro všechny ostatní vlastnosti kromě jednoduchých počítadel.

    Set objRefreshableItem = _
        objRefresher.AddEnum(objServicesCimv2 , _
        "Win32_PerfFormattedData_PerfProc_Process")
    
  4. Aktualizujte data jednou, abyste získali počáteční údaje o výkonu.

    Volejte metodu SWbemRefresher.Refresh nebo obecnou metodu SWbemObjectEx.Refresh_.

    objRefresher.Refresh
    
  5. Pokud monitorujete výkon a máte kolekci v obnovovacím objektu, projděte si objekty kolekce.

    For Each Process in objRefreshableItem.ObjectSet
        If Process.PercentProcessorTime > 1 then
            WScript.Echo Process.Name & vbnewLine _
                & Process.PercentProcessorTime & "%"
        End If
    Next
    
  6. Vymažte položky z aktualizačního nástroje voláním SWbemRefresher.DeleteAll nebo odeberte konkrétní položky voláním SwbemRefresher.Remove.

Následující příklad kódu VBScript ukazuje, jak aktualizovat jeden objekt v místním počítači. Skript vytvoří kontejner pro aktualizaci a přidá instanci enumerátoru pro instance Win32_PerfFormattedData_PerfProc_Process. Volání Refresh se provádí třikrát, aby bylo znázorněno změny ve vlastnosti PercentProcessorTime pro procesy používající více než jedno procento času procesoru.

On Error Resume Next
strComputer = "."
Set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set objServicesCimv2 = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
If Err = 0 Then 
Set objRefreshableItem = _
    objRefresher.AddEnum(objServicesCimv2 ,"Win32_PerfFormattedData_PerfProc_Process")
objRefresher.Refresh
' Loop through the processes three times to locate  
'    and display all the process currently using 
'    more than 1 % of the process time. Refresh on each pass.
For i = 1 to 3
    Wscript.Echo "Refresh number " & i 
    objRefresher.Refresh 
    For Each Process in objRefreshableItem.ObjectSet
        If Process.PercentProcessorTime > 1 then
            WScript.Echo Process.Name & vbnewLine & Process.PercentProcessorTime & "%"
        End If
    Next
Next
Else
    WScript.Echo Err.Description
End If

Vlastnost Index vrácených SWbemRefreshableItem představuje index objektu v kolekci obnovovače. Můžete použít vlastnost SWbemRefreshableItem.IsSet k určení, zda je položka v osvěžovacím nástroji jedna položka nebo kolekce. Pro přístup k jedné položce použijte SWbemRefreshableItem.Object vlastnost. Pokud neprovedete volání na SWbemRefreshableItem.Object, skript selže při pokusu o přístup k objektu. Pro přístup k kolekci použijte SWbemRefreshableItem.ObjectSet vlastnost.

třídy čítačů výkonu

přístup k datům o výkonu ve skriptu

úlohy rozhraní WMI: Monitorování výkonu

monitorování dat o výkonu