After some more crunching on my VBscript, I think I finally have a working script that runs through a csv-list I point it to and walk onto each system (by ip-address only sadly) and query the os and the Service Pack that is installed. The CSV may look like this:
| 1 2 3 | Hostname;IP;Model;Description;OS;Service-Pack;BL;Priority epimetheus;10.0.0.2;VMware guest;File-Server hades;10.0.0.1;VMware guest;Core-Router | 
After saving that one, and running a cscript //NoLogo win_sp_level.vbs you should find a completed list like this:
| 1 2 3 | Hostname;IP;Model;Description;OS;Service-Pack;BL;Priority epimetheus;10.0.0.2;VMware guest;File-Server;Windows Server 2003 Standard x64 Edition; SP1;; hades;10.0.0.1;VMware guest;Core-Router;Windows Server 2003 Enterprise Edition; SP0;; | 
The final script looks like this:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | On Error Resume Next Set objFSO = CreateObject("Scripting.FileSystemOBject") If objFSO.FileExists("Rollout_SP2.csv") = 0 Then   CleanUp()   Wscript.Quit End If Set CSVin = objFSO.OpenTextFile("Rollout_SP2.csv", 1) CSVin_read = CSVin.ReadLine Set objFile = objFSO.CreateTextFile("Rollout_SP2_result.csv") Set objFile = nothing Set CSVout = objFSO.OpenTextFile("Rollout_SP2_result.csv", 8) CSVout.WriteLine("Hostname;IP;Model;Description;OS;Service-Pack;BL;Priority") Do While CSVin.AtEndofStream <> True   Dim os, servicepack   Dim user, password   os = nothing   servicepack = nothing   user = vars(1) & "chrischie"   password = "hah-this-password-is-easy"   current_line = CSVin.ReadLine   vars = Split(current_line, ";")   Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")   Set objSWbemServices = objSWbemLocator.ConnectServer _     (vars(1), "rootcimv2", user, password, "MS_409",, 128)   objSWbemServices.Security_.ImpersonationLevel = 3   Set colOperatingSystems = objSWbemServices.ExecQuery _     ("Select * from Win32_OperatingSystem")   ' The set returns an Err.Number of 91 on success   ' Don't ask me why though.   If Err.Number <> 91 Then     CSVout.WriteLine(vars(0) & ";" & vars(1) & ";" & vars(2) & ";" & vars(3) & ";NA;SP?;;")   Else     For Each objOperatingSystem in colOperatingSystems       os = objOperatingSystem.Caption       servicepack = objOperatingSystem.ServicePackMajorVersion     Next     CSVout.WriteLine(vars(0) & ";" & vars(1) & ";" & vars(2) & ";" & vars(3) _ 	                 & ";" & os  & "; SP" & servicepack & ";;")   End If Loop | 
The only thing I still need to improve is the error handling (as in notify when a system is being skipped due to RPC being unavailable).