' Listing 12: The getOSVersion Function Private Function getOSVersion(ByVal strComputer) Dim objWMIService, colItems, objItem, strOSVer, strSP Set objWMIService = GetObject("winmgmts:\\"& strComputer & _ "\root\cimv2") Set colItems = _ objWMIService.ExecQuery("Select * from Win32_OperatingSystem") On Error Resume Next For Each objItem In colItems strOSVer = objItem.Caption strSP = "Service Pack " & objItem.ServicePackMajorVersion Select Case strOSVer Case "Microsoft Windows 2000 Server" getOSVersion = "Windows 2000 Server " & strSP Case "Microsoft Windows 2000 Advanced Server" getOSVersion = "Windows 2000 Advanced Server " & strSP Case "Microsoft(R) Windows(R) Server 2003, Enterprise Edition" getOSVersion = "Windows 2003 Enterprise Server " & strSP Case "Microsoft(R) Windows(R) Server 2003, Standard Edition" getOSVersion = "Windows 2003 Standard Server " & strSP Case "Microsoft(R) Windows(R) Server 2003, Datacenter Edition" getOSVersion = "Windows Server 2003, Datacenter Edition " & _ strSP Case "Microsoft(R) Windows(R) Server 2003, Datacenter " & _ "Edition for 64-Bit Itanium-based Systems" getOSVersion = "Windows Server 2003, 64-Bit Itanium " & _ "Datacenter Edition " & strSP Case "Microsoft(R) Windows(R) Server 2003, Enterprise " & _ "Edition for 64-Bit Itanium-based Systems" getOSVersion = "Windows Server 2003, 64-Bit Itanium " & _ "Enterprise Edition " & strSP Case "Microsoft(R) Windows(R) Server 2003 Enterprise x64 Edition" getOSVersion = "Windows Server 2003 Enterprise " & _ "x64 Edition " & strSP Case "Microsoft Windows XP Professional" getOSVersion = "Windows XP Professional " & strSP Case Else getOSVersion = "Unknown OS Type" End Select Next Err.Clear On Error Goto 0 Set objWMIService = Nothing: Set colItems = Nothing End Function