Aktualisieren Sie die BIOS-Informationen für Dell-Computer - Wie Man

Aktualisieren Sie die BIOS-Informationen für Dell-Computer

Ich muss ständig die BIOS-Level auf Systemen aktualisieren oder überprüfen. Es war schön, dass das Spiceworks das aktuell installierte BIOS sammelt. Was ist das neueste BIOS? Ich wurde durch das von Dave Newbern erstellte Garantieskript inspiriert, dieses Skript zu erstellen, mit dem Dell das aktuelle BIOS erhält und die Datenbank auffüllt. Um das Paket zu vervollständigen, haben wir sogar einen Bericht :)

4 Schritte insgesamt

Schritt 1: Vorraussetzungen

Bitte installieren Sie SQL Lite von http://www.sqlite.org/index.html

Schritt 2: Erstellen Sie benutzerdefinierte Felder in SpiceWorks

Klicken Sie auf Einstellungen
Klicken Sie auf erweiterte Optionen
Fügen Sie zwei benutzerdefinierte Geräteattribute hinzu
1. LatestBiosDate-Typ = Datum
2. LatestBiosVersion Typ = Text

Schritt 3: Erstellen Sie ein vb-Skript

Speichern Sie das folgende VBScript an einem Ort auf Ihrem SW-Server. Ich plane meinen jeden Tag nach der Inventarsammlung auszuführen.

_______________________________________

'Geschrieben von Terry Hunt - [email protected]

Dim Tag, BiosDate, BiosLevel, htm

'Reguläre Ausdrücke erstellen

Setze BiosDateRegExp = New RegExp
BiosDateRegExp.IgnoreCase = True
BiosDateRegExp.Global = True
BiosDateRegExp.Pattern = "level =" "0_0_3" "> d {1,2} / d {1,2} / d {2,4}"

Set BiosLevelRegExp = New RegExp
BiosLevelRegExp.IgnoreCase = True
BiosLevelRegExp.Global = True
BiosLevelRegExp.Pattern = "level =" "0_0_4" "> A d {1,2}"

Set BiosLevelRegExp2 = New RegExp
BiosLevelRegExp2.IgnoreCase = True
BiosLevelRegExp2.Global = True
BiosLevelRegExp2.Pattern = "level =" "0_0_4" "> ( d * . D * . D *)"

'Verbindung zur SW-Datenbank herstellen,

Set DB = CreateObject ("ADODB.Connection")
DB.ConnectionString = "Treiber = {SQLite3-ODBC-Treiber}; Database = C: Programme Spiceworks db spiceworks_prod.db"
DB.Öffnen

'ID und Seriennummer abrufen
Setze RS = CreateObject ("ADODB.Recordset")
RS.open "SELECT id, serial_number FROM Geräte, bei denen Hersteller wie 'Dell' UND Typ wie 'Computer' ', DB, 3,3

'den Datensatz durchlaufen

Während nicht rs
Tag = rs ("Seriennummer")

'Verbinden Sie sich mit Dell, rufen Sie das neueste BIOS-Datum und die aktuelle Version ab
loadHTML (Tag)

'Aktualisieren Sie die Gerätetabelle mit den neuesten Informationen
DB.Execute ("UPDATE-Geräte SET c_latestbiosversion =" "& BiosLevel &" ", c_latestbiosdate =" "& BiosDate &" WHERE ID = "& rs (" id "))
wscript.echo "system:" & tag & "Bios Level:" & BiosLevel & "Bios Date:" & BiosDate

'Holen Sie sich die nächste Platte

rs.movenext

Wend

Setze RS = Nichts
Set DB = Nichts

Funktion loadHTML (Tag)
Dim tmp, htm
htm = ""
tmp = "http://support.dell.com/support/downloads/driverslist.aspx?c=us&cs=04&l=de&s=bsd&catid=1&hidlang=en&hidos=BIOSA&impid=-1&os=NAA&osl=EN&servicetag=" & TAG & "& SystemID = = "
'Führen Sie die Suche zweimal durch, da es so aussieht, als ob das Tag kein Dell-Tag ist, die vorherige Suche wird zwischengespeichert.
Die zweite Suche scheint das zu erledigen.
htm = winhttpPostRequest (tmp, "", "")
htm = winhttpPostRequest (tmp, "", "")
BiosDate = ""
BiosLevel = "Nicht verfügbar"

Setze myMatches = BiosDateRegExp.Execute (htm)
Für jedes myMatch in myMatches
BiosDate = Mid (myMatch.Value, 15)
Nächster
Setze myMatches = BiosLevelRegExp.Execute (htm)
Für jedes myMatch in myMatches
Bioslevel = Mid (myMatch.Value, 15)
Nächster

Wenn BiosLevel = "Nicht verfügbar", dann
Setze myMatches = BiosLevelRegExp2.Execute (htm)
Für jedes myMatch in myMatches
Bioslevel = Mid (myMatch.Value, 15)
Nächster
Ende wenn
Funktion beenden

Funktion WinHTTPPostRequest (URL, FormData, Boundary)
WinHTTPPostRequest = ""
Dim http 'wie neu MSXML2.XMLHTTP

'XMLHTTP / ServerXMLHTTP / WinHttprequest-Objekt erstellen
'Sie können jedes dieser drei Objekte verwenden.
'Setze http = CreateObject ("WinHttp.WinHttprequest.5")
Setze http = CreateObject ("MSXML2.XMLHTTP")
'Setze http = CreateObject ("MSXML2.ServerXMLHTTP")

'URL als Postanforderung öffnen
http.Off "POST", URL, False


'Setzen Sie den Inhaltstyp-Header
http.setRequestHeader "Content-Type", "multipart / form-data; border =" + Boundary

'Formulardaten an URL als POST-Binäranfrage senden
http.send FormData

'Holen Sie sich ein Ergebnis des Skripts, das hochgeladen wurde
WinHTTPPostRequest = http.responseText

set http = Nichts
Funktion beenden

Schritt 4: Installieren Sie den folgenden Bericht

http://community.spiceworks.com/reports/849

Ich hoffe, das hilft jemand anderen so sehr, wie es mir geholfen hat !!