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.

    7 Mal editiert, zuletzt von Moombas (15. Januar 2021 um 08:01)

  • 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...

    Einmal editiert, zuletzt von Bitnugger (12. Januar 2021 um 16:25)

  • 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/external/artic…sing-micro.html

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    https://social.technet.microsoft.com/Forums/lync/en…erverManagement

    https://www.windowspro.de/wolfgang-somme…er-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: