Seriennummer auslesen

  • Moin zusammen,


    wir lesen die gespeicherte Seriennummer eines Remote PC's so aus:


    Nun funktioniert das bis W7 32Bit einwandfrei. Aber (eigentlich wie erwartet) bei W10 64Bit nicht mehr. Hat jemand damit bereits Erfahrung und kann mir weiter helfen?


    Vorweg, auf meinem W7 64Bit OS läuft es auch, es muss sich also etwas zu W10 geändert haben.

    Lokal auf einem W10 64Bit läuft es auch (Localhost anstatt IP).


    Bekomme immer "Error: Variable must be of type "Object".

    Er steigt gleich bei "ObjGet("winmgmts:\\" & $IP & "\root\CIMV2")" aus mit -2147023174 im @error

    Wobei _WinAPI_GetLastError() & ' ' & _WinAPI_GetLastErrorMessage() mir zurück gibt: 0 DER VORGANG WURDE ERFOLGREICH BEENDET.


    -.- jetzt bin ich komplett verwirrt.

  • Wobei _WinAPI_GetLastError() & ' ' & _WinAPI_GetLastErrorMessage() mir zurück gibt: 0 DER VORGANG WURDE ERFOLGREICH BEENDET.

    _WinAPI_GetLastError() und _WinAPI_GetLastErrorMessage() rufst du auf, wenn du zuvor eine _WinAPI_*-Funktion ausgeführt hast, z.B. _WinAPI_ActivateKeyboardLayout.


    Um Fehler bei Objekten abzufangen und auszuwerten, brauchst du einen COM ERROR HANDLER.


    Hier ein Bsp. mit _DebugCOMError:


    Hier noch eins ohne _DebugCOMError:


    $IP musst du natürlich anpassen...

  • Ein COM Error Handler gibt Dir genauere Informationen über das Problem. Siehe ObjEvent in der Hilfe.

  • Bei einigen PCs wird allerdings keine SerialNumber angezeigt, so auch bei virtuellen Maschinen. Da kann dann z.B. auch To be filled by O.E.M. oder 0 stehen.


    Hier ein Bsp. mit Powershell:

    PS C:\Users\bitnugger> Get-WmiObject -Class Win32_BIOS


    SMBIOSBIOSVersion : A7522MLN.10F

    Manufacturer : American Megatrends Inc.

    Name : Default System BIOS

    SerialNumber :

    Version : MEDION - 20100914

  • Mittlerweile vermute ich ein Problem in der (erlaubten) Kommunikation da, wenn ich das Skript lokal ausführe, es funktioniert.

    Ich teste später aber dennoch nochmal das Skript von dir (Bitnugger) ob das eine Änderung bewirkt.

  • Mittlerweile vermute ich ein Problem in der (erlaubten) Kommunikation da, wenn ich das Skript lokal ausführe, es funktioniert.

    Das kannst du mit dem Microsoft-Tool wbemtest testen.

    https://knowledge.broadcom.com…ectivity-using-micro.html


    https://social.technet.microso…forum=winserverManagement


    https://www.windowspro.de/wolf…remote-ueber-wmi-auslesen



    Ich teste später aber dennoch nochmal das Skript von dir (Bitnugger) ob das eine Änderung bewirkt.

    Ich denke mal ja... denn in deinem Script sind zwei böse Fehler drin...

    - Zeile 9 muss vor Zeile 8 stehen

    - nach Zeile 8 musst du testen, ob $colItems ein Objekt ist, bevor du darauf zugreifst.


    So wäre es korrekt: