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.)
-
On Error Resume Next
-
-
Const wbemFlagReturnImmediately = &h10
-
Const wbemFlagForwardOnly = &h20
-
-
arrComputers = Array("DC1")
-
For Each strComputer In arrComputers
-
WScript.Echo
-
WScript.Echo "=========================================="
-
WScript.Echo "Computer: " & strComputer
-
WScript.Echo "=========================================="
-
-
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "rootCIMV2")
-
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", _
-
wbemFlagReturnImmediately + wbemFlagForwardOnly)
-
-
For Each objItem In colItems
-
WScript.Echo "Caption: " & objItem.Caption
-
WScript.Echo "InstallDate: " & WMIDateStringToDate(objItem.InstallDate)
-
WScript.Echo "LastBootUpTime: " & WMIDateStringToDate(objItem.LastBootUpTime)
-
WScript.Echo "Name: " & objItem.Name
-
WScript.Echo "OSLanguage: " & objItem.OSLanguage
-
WScript.Echo "OSProductSuite: " & objItem.OSProductSuite
-
WScript.Echo "OSType: " & objItem.OSType
-
WScript.Echo "OtherTypeDescription: " & objItem.OtherTypeDescription
-
WScript.Echo "Version: " & objItem.Version
-
WScript.Echo
-
Next
-
Next
-
-
-
Function WMIDateStringToDate(dtmDate)
-
WScript.Echo dtm:
-
WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _
-
Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _
-
& " " & Mid (dtmDate, 9, 2) & ":" & Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate,13, 2))
-
End Function
http://faq-o-matic.net/?p=633