von postNils Kaczenski post11. Januar 2007, 16:08 Uhr
post Kategorie: Scripting, VBScript, Windows Server 2003

Es ist nicht ganz leicht, im Rahmen einer Dokumentation im Netzwerk die Server zu identifizieren, die mit Windows Server 2003 R2 betrieben werden. Es liegt zwar nahe, die Einträge des Active Directory zu prüfen, aber dort wird kein Unterschied sichtbar zwischen einem Server mit SP1 und einem mit R2 (was ja technisch auch dieselbe Grundlage ist).

Wie so oft, bietet auch hier WMI die Lösung: Dessen Klasse "Win32_OperatingSystem" bietet im Attribut "OtherTypeDescription" die gesuchte Information.

Hier ein Skript-Fragment (erzeugt mit Scriptomatic 2.0), das die benötigte Abfrage ausführt. Um die Daten für das ganze Netzwerk oder einen Teil davon zu sammeln, lassen sich mehrere Techniken anwenden, die ich in einem Artikel für heise Netze (kostenlos verfügbar) zusammengefasst habe.

(Dank an Thomas M. Hess für den Hinweis in der Newsgroup.)

  1. On Error Resume Next
  2.  
  3. Const wbemFlagReturnImmediately = &h10
  4. Const wbemFlagForwardOnly = &h20
  5.  
  6. arrComputers = Array("DC1")
  7. For Each strComputer In arrComputers
  8.    WScript.Echo
  9.    WScript.Echo "=========================================="
  10.    WScript.Echo "Computer: " & strComputer
  11.    WScript.Echo "=========================================="
  12.  
  13.    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "rootCIMV2")
  14.    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", _
  15.                                           wbemFlagReturnImmediately + wbemFlagForwardOnly)
  16.  
  17.    For Each objItem In colItems
  18.       WScript.Echo "Caption: " & objItem.Caption
  19.       WScript.Echo "InstallDate: " & WMIDateStringToDate(objItem.InstallDate)
  20.       WScript.Echo "LastBootUpTime: " & WMIDateStringToDate(objItem.LastBootUpTime)
  21.       WScript.Echo "Name: " & objItem.Name
  22.       WScript.Echo "OSLanguage: " & objItem.OSLanguage
  23.       WScript.Echo "OSProductSuite: " & objItem.OSProductSuite
  24.       WScript.Echo "OSType: " & objItem.OSType
  25.       WScript.Echo "OtherTypeDescription: " & objItem.OtherTypeDescription
  26.       WScript.Echo "Version: " & objItem.Version
  27.       WScript.Echo
  28.    Next
  29. Next
  30.  
  31.  
  32. Function WMIDateStringToDate(dtmDate)
  33. WScript.Echo dtm:
  34.     WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _
  35.     Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _
  36.     & " " & Mid (dtmDate, 9, 2) & ":" & Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate,13, 2))
  37. End Function