Seriennummer des Computers auslesen

  • Hallo zusammen,

    ich suche eine Funktion, mit der ich die Seriennummer des Computers aus dem BIOS auslesen kann um diese später in einer SQLite-Datenbank neben anderen Informationen zu dokumentieren.
    Hat jemand eine Idee, wie man an diese Info kommt und ob diese bei allen Geräten funktioniert? Gibt es vllt sogar ein Macro dafür? (Lese alle anderen Daten mit diesen aus.) Es muss mit HP Standrechnern/Laptops gehen sowie Laptops von IBM der Serien (X60/X61 sowie T60/T61 mit deaktiviertem Security Chip).

    Danke für Tipps,

    Stefan

    Einmal editiert, zuletzt von Alter Schwede (18. März 2008 um 14:18)

  • Versuch´s mal hiermit

    Spoiler anzeigen
    [autoit]

    #Include <Constants.au3>
    Dim $strComputer, $objWMIService
    Const $wbemFlagReturnImmediately = 0x10
    Const $wbemFlagForwardOnly = 0x20
    $strComputer = inputbox( "Please enter the name of the computer you want", "Input","localhost")
    $objWMIService = ObjGet("winmgmts:{(RemoteShutdown)}//" & $strComputer & "\root\CIMV2")
    _Serial_Number()

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

    Func _Serial_Number()
    Local $colItems = ""
    $colItems = $objWMIService.ExecQuery("Select * from Win32_BIOS")

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

    For $objItem in $colItems
    Local $item = $objItem.SerialNumber
    MsgBox(0,'Output','Serien-Nummer : ' & $Item)
    Next
    EndFunc

    [/autoit]

    Sollte funktionieren, hab´s grad an 2 HP-Rechnern getestet.

    Ein Versuch an einem etwas älteren FSC-Midi-Tower brachte auch das gewünschte Ergebnis.
    Ich denke, wenn die Maschinen nicht allzu alt sind (älter als 5 Jahre) sollte sich die Serial so auf allen problemlos auslesen lassen.


    Grüsse, Mick

    • Offizieller Beitrag
    [autoit]

    ; Generated by AutoIt Scriptomatic

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

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"

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

    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $Output = $Output & "==========================================" & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_BaseBoard", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

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

    If IsObj($colItems) then
    For $objItem In $colItems
    $Output = $Output & "Caption: " & $objItem.Caption & @CRLF
    $strConfigOptions = $objItem.ConfigOptions(0)
    $Output = $Output & "ConfigOptions: " & $strConfigOptions & @CRLF
    $Output = $Output & "CreationClassName: " & $objItem.CreationClassName & @CRLF
    $Output = $Output & "Depth: " & $objItem.Depth & @CRLF
    $Output = $Output & "Description: " & $objItem.Description & @CRLF
    $Output = $Output & "Height: " & $objItem.Height & @CRLF
    $Output = $Output & "HostingBoard: " & $objItem.HostingBoard & @CRLF
    $Output = $Output & "HotSwappable: " & $objItem.HotSwappable & @CRLF
    $Output = $Output & "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
    $Output = $Output & "Manufacturer: " & $objItem.Manufacturer & @CRLF
    $Output = $Output & "Model: " & $objItem.Model & @CRLF
    $Output = $Output & "Name: " & $objItem.Name & @CRLF
    $Output = $Output & "OtherIdentifyingInfo: " & $objItem.OtherIdentifyingInfo & @CRLF
    $Output = $Output & "PartNumber: " & $objItem.PartNumber & @CRLF
    $Output = $Output & "PoweredOn: " & $objItem.PoweredOn & @CRLF
    $Output = $Output & "Product: " & $objItem.Product & @CRLF
    $Output = $Output & "Removable: " & $objItem.Removable & @CRLF
    $Output = $Output & "Replaceable: " & $objItem.Replaceable & @CRLF
    $Output = $Output & "RequirementsDescription: " & $objItem.RequirementsDescription & @CRLF
    $Output = $Output & "RequiresDaughterBoard: " & $objItem.RequiresDaughterBoard & @CRLF
    $Output = $Output & "SerialNumber: " & $objItem.SerialNumber & @CRLF
    $Output = $Output & "SKU: " & $objItem.SKU & @CRLF
    $Output = $Output & "SlotLayout: " & $objItem.SlotLayout & @CRLF
    $Output = $Output & "SpecialRequirements: " & $objItem.SpecialRequirements & @CRLF
    $Output = $Output & "Status: " & $objItem.Status & @CRLF
    $Output = $Output & "Tag: " & $objItem.Tag & @CRLF
    $Output = $Output & "Version: " & $objItem.Version & @CRLF
    $Output = $Output & "Weight: " & $objItem.Weight & @CRLF
    $Output = $Output & "Width: " & $objItem.Width & @CRLF
    if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
    $Output=""
    Next
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_BaseBoard" )
    Endif

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

    Func WMIDateStringToDate($dtmDate)

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

    Return (StringMid($dtmDate, 5, 2) & "/" & _
    StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
    & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
    EndFunc

    [/autoit]
  • @ BugFix:
    Wenn ich Dein Skript auf meinem MaxData-PC laufen lasse, sind nur ein paar wenige Einträge befüllt.
    So zwar auch die Seriennummer, allerdings lautet sie:
    "MB-1234567890"
    Sieht nicht wirklich Vertrauen erweckend aus, find'st nicht auch...?!

    Rasta

  • Hallo,

    danke für die Hilfe. Das erste Script funktioniert perfekt (auch mit den IBM Laptops).

    Gruß,
    Stefan

    • Offizieller Beitrag

    Hallo

    Rasta: Jo, bei mir ist es die gleiche Seriennummer^^
    @Mick: Deine Version funktioniert btw überhaupt nicht bei mir, gibt nur "System Serial Number" zurück.

    @Schwede: Brauchst du das nur für dich, oder soll das Script auch auf anderen Rechnern laufen? Falls ja, würde ich natürlich darauf achten, dass es auch überall funktioniert ;)

    Mfg Spider

  • Das Script von Mick gibt bei mir To be filled by O.E.M. :P Dabei hab ich mir meinen Computer selber zusammengebaut :)