BIOS mittels WMI per Skript auslesen

Problem
Man möchte gerne BIOS-Version, Hersteller, Seriennummer und Physikalische Speicherbelegung aus dem BIOS auslesen ohne den Server neu zu starten.

Lösung
Folgendes VBS-Skript ließt die wichtigsten Informationen aus dem BIOS aus:


strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colBIOS = objWMIService.ExecQuery ("Select * from Win32_BIOS")
For each objBIOS in colBIOS
msg = "BIOS-Informationen" & vbcrlf
msg = msg & "Manufacturer: " & objBIOS.Manufacturer & vbcrlf
msg = msg & "Name: " & objBIOS.Name & vbCRLF
msg = msg & "Serial Number: " & objBIOS.SerialNumber & vbCRLF
msg = msg & "SMBIOS Version: " & objBIOS.SMBIOSBIOSVersion & vbCRLF
msg = msg & "Status: " & objBIOS.Status & vbCRLF & vbcrlf
Next

msg = msg & "physikalische Speicherplätze" & vbCRLF
anzahl = 0

Set colItems = objWMIService.ExecQuery("Select * from Win32_PhysicalMemory",,48)
For Each objItem in colItems
    anzahl = anzahl + 1
    msg = msg & "Bank " & anzahl & " = Größe: " & objItem.Capacity/1024/1024 & " MB" & vbcrlf
Next
msgbox msg

Aktuelles Datum , zweistellig ermitteln / ausgeben

Ist zwar eine einfach Funktion aber dennoch wenn man sie hat muß man sie nicht immer selber Tippen ;-)


Function GetDate()
'------------------ Ermittelt das aktuelle Datum
Dim Monat : Monat = Month(now)
Dim Tag : Tag = Day(Now)
Dim Jahr : Jahr = Year(now)
If Monat < 10 then
Monat = "0" & Monat
End If
If Tag < 10 Then
Tag = "0" & Tag
End If
GetDate = Tag & "." & Monat & "." & Jahr
End Function

ActiveX Steuerelemente (Intranet) erlauben

Problem :

Bei internen (Intranet) Anwendungen werden die ActiveX Steuerelemente geblockt

Lösung :

1.) Eine Datei anlegen mit der Endung .vbs z.B. set_activex.vbs
2.) Den unten aufgeführten Code in diese Datei kopieren
3.) Das Skript mit in das Loginscript aufnehmen z.B. start /B cscript.exe //NOLOGO [PFAD zum Skript]\set_activex.vbs

Nachdem das Skript beim Login durchgelaufen ist stehen alle ActiveX Berechtigungen auf Aktiviert



Option Explicit
' --------------------------------------------------------------------------------------------
' - Setz die sicherheit für die ActiveX Steuerelemente für die lokale Zone auf erlauben
' -
' - Source : Christopher Pope
' --------------------------------------------------------------------------------------------
Dim ObjWsh : Set ObjWsh = CreateObject("WScript.Shell")
DIm I
Dim RegZone : RegZone = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1\"
Dim PopUpReg : PopUpReg = "HKCU\Software\Microsoft\Internet Explorer\New Windows\PopupMgr"

' -------- ActiveX Keys deklarieren
Dim RegArray(9)
RegArray(0) = "1001"
RegArray(1) = "1004"
RegArray(2) = "1200"
RegArray(3) = "1201"
RegArray(4) = "1405"
RegArray(5) = "2201"
RegArray(6) = "2000"
RegArray(7) = "1208"
RegArray(8) = "1209"
RegArray(9) = "120A"

On Error Resume Next

For I = 0 to Ubound(RegArray)
Call Set_AX_Allow(RegArray(I))
Next

'-------- PopUp Blocker deaktivieren
If ObjWsh.RegRead(PopUpReg) = "yes" Then
ObjWsh.RegWrite PopUpReg,"no","REG_SZ"
End If

WScript.Quit (1)


Function Set_AX_Allow(ID)
If ObjWsh.RegRead(RegZone & ID) <> 0 then
ObjWsh.RegWrite RegZone & ID,0,"REG_DWORD"
End If
End Function


Set_ActiveX.vbs
ActiveX

Gerade oder ungerade Zahl (Mod)

Beschreibung

Um festzustellen, ob eine Zahl gerade oder Ungerade ist, kann man den VBScript-Operator Modulo verwenden. Der Modulo-Operator gibt den Rest einer Teilung aus, Beispiel:

11 Mod 5

Teilt man 11 durch 5(=2), und nimmt dann den Rest von 11 - (2*5) dann erhält man die Zahl eins, somit ist das Ergebnis dieser Modulo-Anwendung 1. Fliesskommazahlen werden dabei in ganze Zahlen umgewandelt. Möchte man jetzt ermitteln, ob gerade oder ungerade Zahl, so muss als 2. Operand die Zahl 2 eingesetzt werden. Hier ein konkretes Beispiel:

Rest = Zahl Mod 2
If Rest > 0 Then
msgbox "Ungerader Wert"
Else
msgbox "Gerader Wert"
End if

alle lokalen Drucker auslesen

Beschreibung

Dieses Skript ließt alle lokal installierten Drucker aus:

Set objNetwork = WScript.CreateObject("WScript.Network")
Set colPrinters = objNetwork.EnumPrinterConnections
For i = 0 to colPrinters.Count -1 Step 2
Wscript.Echo colPrinters.Item (i + 1)
Next
“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)