WMI in Autoit

  • Hallo,

    ich lese einige Computerinformationen per WMI aus. Das klappt auch soweit ganz gut. Der BEISPIELCode für eien Abfrage sieht so aus:


    Nun möchte ich aber die Informationen des WMI Befehls MEMPHYSICAL auslesen. Dabei habe ich zu Testzwecken in obigen, funktionierendem BEISPIELCode in Zeile 4 COMPUTERSYSTEM durch MEMPHYSICAL ersetzt. (Den Wert Caption in Zeile 7 gibt es auch bei MEMPHYSICAL). Leider kommt es dann zu keiner Ausgabe.

    Muss ich denn noch was ändern? Evtl. in Zeile 1 ?

    Vielen Dank

  • Ich gehe davon aus, dass du die Speichergröße auslesen willst.

    Probiere es mal hiermit:

    [autoit]


    #include <WinAPIMisc.au3>

    [/autoit][autoit][/autoit][autoit]

    $sWMIService = "winmgmts:\\.\root\CIMV2"
    $objWMIService = ObjGet($sWMIService)
    If IsObj($objWMIService) Then
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_COMPUTERSYSTEM")
    If IsObj($colItems) Then
    For $oItem In $colItems
    $rechnername = $oItem.Caption
    $speicher = $oItem.TotalPhysicalMemory
    msgbox(0,"",$rechnername & " / " & _WinAPI_StrFormatByteSize($speicher))
    Next
    Else
    MsgBox(16, "Error", "Failed to get collection.")
    EndIf
    Else
    MsgBox(4096, "ERROR", "Failed to connect to WMI at: " & $sWMIService)
    EndIf

    [/autoit]

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Hi,

    danke für Deine Hilfe. Leider nein. Ich möchte die Anzahl der verfügbaren Speicherbänke auslesen. Diese finde ich in der CMD über "memphysical get MemoryDevices"

    Bis dann

  • Ok, dann probiere es mal damit:

    [autoit]

    $sWMIService = "winmgmts:\\.\root\CIMV2"
    $objWMIService = ObjGet($sWMIService)
    If IsObj($objWMIService) Then
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PhysicalMemoryArray")
    If IsObj($colItems) Then
    For $oItem In $colItems
    $MemoryDevices = $oItem.MemoryDevices
    msgbox(0,"Speicherbänke", "Speicherbänke Anzahl: " & $MemoryDevices)
    Next
    Else
    MsgBox(16, "Error", "Failed to get collection.")
    EndIf
    Else
    MsgBox(4096, "ERROR", "Failed to connect to WMI at: " & $sWMIService)
    EndIf

    [/autoit]

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Wenn du in der CMD Box nur wmic memphysical eingibst, dann bekommst du eine Tabelle zurück, die dir die WMI Klasse dafür zurück gibt.

    CreationClassName
    Win32_PhysicalMemoryArray


    Oder Google ist dein persönlicher Freund. ;)

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯