Logo faq-o-matic.net
Logo faq-o-matic.net

BGInfo um eigene Datenfelder erweitern

von veröffentlicht am5. September 2007, 17:06 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Administration, Dokumentation, Scripting, VBScript   Translate with Google Translate Translate EN   Die angezeigte Seite drucken
Zuletzt aktualisiert: 4. Juni 2008

BGInfo von Sysinternals ist für viele Windows-Admins ein unverzichtbares Werkzeug. Es blendet Konfigurationsinformationen über den lokalen Rechner in das Hintergrundbild ein und erlaubt so eine schnelle Orientierung, mit welcher Maschine man es zu tun hat. Gerade bei der Serveradministration ist das wichtig, denn schnell geht bei der Nutzung mehrerer RDP-Fenster oder eines Monitor-Umschalters die Übersicht verloren.

Wenig bekannt ist, dass sich BGInfo um eigene Datenfelder erweitern lässt. Dazu dient der Button „Custom“ unter der Feldauswahl. Hier lassen sich diverse Feldtypen einbinden – im einfachsten Fall wird der Inhalt einer Textdatei ausgegeben (interessant z.B. für die Support-Telefonnummer) oder auch ein bestimmter Registry-Wert. Viel interessanter sind WMI-Abfragen oder VB-Skripts.

WMI-Abfragen

WMI-Abfragen lassen sich mit einem kleinen integrierten Hilfstool zusammenklicken. Die folgende Anweisung zeigt z.B. an, ob die Windows-Firewall aktiv ist oder nicht:

Select Started from Win32_Service where Name=“SharedAccess“

Anmerkung: Der Dienst heißt unter Windows XP und Windows Server 2003 „Shared Access“. In Windows Vista heißt er „MpsSvc“.

Ulf B. Simon-Weidner hat in seinem Blog darauf hingewiesen, dass BGInfo unter Vista und Windows Server 2008 versucht, die Konfiguration aller Netzwerkkarten auszugeben, auch wenn diese gar nicht konfiguriert sind. Das führt zu einer kaum brauchbaren Ausgabe. Auch hier bieten WMI-Abfragen Abilfe:

        

  • Für die tatsächlich konfigurierten IP-Adressen eignet sich die Abfrage
    SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = TRUE
  • Die wirklich eingestellten DNS-Server gibt diese Zeile zurück:
    SELECT DNSServerSearchOrder FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = TRUE

Eine weitere Möglichkeit sind Versionsabfragen für Dateien. Das kann interessant sein, um etwa die Versionsnummer eines Netzwerktreibers mit BGInfo anzuzeigen. Dazu muss man natürlich erst mal wissen, welche Datei hier relevant sind. Im Falle des Netzwerktreibers hilft ein Blick in den Gerätemanager: Dort die Eigenschaften der Netzwerkkarte aufrufen und über die Registerkarte Treiber den Button Treiberdetails betätigen. Die Versionsnummer der gefundenen Datei kann dann über die Custom-Felder in BGInfo ausgegeben werden.

VBS-Skripte

VBS-Skripte haben innerhalb von BGInfo eine Besonderheit: Die Funktion zur Ausgabe heitßt nur „Echo“ und nicht „WScript.Echo“. Das folgende VBS-Skript gibt die Versionsinformation eines lokal installierten SQL Server aus:

        

  1. strSQLServer = „.“ ‚ hier Servernamen angeben; „.“ ist lokal
  2. strConn     = „Driver={SQL Server};SERVER=“ & strSQLServer
  3. on error resume next
  4. set objDB = CreateObject(„ADODB.Connection“)
  5. objDB.Open(strConn)
  6. if err.number <> 0 then
  7.     quitcode
  8. else
  9.     sqlvers
  10. end if
  11. sub sqlVers()
  12.     strSQL = „select v=@@version“
  13.     set objRS = objDB.Execute(strSQL)
  14.     if err.number <> 0 then
  15.         quitcode
  16.         exit sub
  17.     end if
  18.     strVer = objRS.Fields(„v“).value
  19.     if err.number <> 0 then
  20.         quitcode
  21.         exit sub
  22.     end if
  23.     if instr(strVer, „2005 – 9“) > 0 then
  24.      strSQL = „SELECT v= ‚SQL Server 2005 ‚ + cast(SERVERPROPERTY (‚productlevel‘)“ _
  25.                  & “ as varchar) + ‚, Version ‚ + cast(SERVERPROPERTY(‚productversion‘)“ _
  26.                  & “ as varchar) + ‚, ‚ + cast(SERVERPROPERTY (‚edition‘) as varchar)“
  27.      set objRS = objDB.Execute(strSQL)
  28.      strVer = objRS.Fields(„v“).value
  29.     elseif instr(strVer, „2000 – 8“) > 0 then
  30.      strSQL = „SELECT v= ‚SQL Server 2000 ‚ + cast(SERVERPROPERTY (‚productlevel‘)“ _
  31.                  & “ as varchar) + ‚, Version ‚ + cast(SERVERPROPERTY(‚productversion‘)“ _
  32.                  & “ as varchar) + ‚, ‚ + cast(SERVERPROPERTY (‚edition‘) as varchar)“
  33.      set objRS = objDB.Execute(strSQL)
  34.      strVer = objRS.Fields(„v“).value
  35.     elseif instr(strVer, „7.00.1063“) then strVer = „SQL Server 7.0 SP4“
  36.     elseif instr(strVer, „7.00.961“) then strVer = „SQL Server 7.0 SP3“
  37.     elseif instr(strVer, „7.00.842“) then strVer = „SQL Server 7.0 SP2“
  38.     elseif instr(strVer, „7.00.699“) then strVer = „SQL Server 7.0 SP1“
  39.     elseif instr(strVer, „7.00.623“) then strVer = „SQL Server 7.0 ohne SP“
  40.     end if
  41.     echo strVer
  42. end sub
  43. sub quitcode()
  44.     echo „(kein Wert ermittelt)“
  45. end sub

Ein ähnliches, wenn auch viel kürzeres Skript gibt die Versionsinfo für einen lokalen Exchange Server 2003 zurück:

  1. Set objNetwork = CreateObject(„WScript.Network“)
  2. strComputer = objNetwork.ComputerName
  3. On Error Resume Next
  4. Set objWMIService = GetObject(„winmgmts:\\“ & strComputer & „\root\MicrosoftExchangeV2“)
  5. If Err.Number = 0 Then
  6.     Set colItems = objWMIService.ExecQuery(„SELECT * FROM Exchange_Server „ _
  7.         & „WHERE Name='“ & strComputer & „‚“, „WQL“)
  8.     For Each objItem In colItems
  9.         Select Case objItem.Type
  10.             Case 0 strType = „Standard Edition“
  11.             Case 1 strType = „Enterprse Edition“
  12.             Case 2 strType = „Conferencing Edition“
  13.         End Select
  14.         strMessage = strType & „, „ & objItem.ExchangeVersion
  15.         if objItem.IsFrontEndServer then strMessage = strMessage & „, FrontEnd“
  16.     Next
  17. Else
  18.     strMessage = „Exchange 2003 nicht vorhanden“
  19. End If
  20. Echo strMessage
  21.  

Hier ein Skript, das den Namen des laufenden Betriebssystems ausgibt – interessant deshalb, weil diese Angabe auch die x64-Varianten und Windows 2003 R2 erkennbar macht:

  1. Set objWMIService = GetObject(„winmgmts:\\.\root\CIMV2“)
  2. Set colItems = objWMIService.ExecQuery(„SELECT * FROM Win32_OperatingSystem“)
  3. For Each objItem In colItems
  4. Echo Left(objItem.Name, InStr(objItem.Name, „|“)1)
  5. Next

Und schließlich ein Skript, das die Objektbeschreibung des Computerkontos aus Active Directory anzeigt:

        

  1. Set objADSysInf = CreateObject(„ADSystemInfo“)
  2. Set objComputer = GetObject(„LDAP://“ & objADSysInf.ComputerName)
  3. Echo objComputer.description

© 2005-2023 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!