Option Explicit
Const SCRIPT_NAME = «GetSP.vbs»

Main

? BEGIN COMMENT
? Выдать сообщение об использовании сценария
? END COMMENT
Sub Usage
WScript.Echo «Retrieves a computer?s description, operating system,» _
 & «and service pack.» & vbNewLine & vbNewLine & «Usage: « & _
 SCRIPT_NAME & « []» & vbNewLine & vbNewLine _
 & «If the computer name is not specified, uses the current computer.»
WScript.Quit
End Sub

? BEGIN COMMENT
? Завершить работу сценария с сообщением об ошибке.
? END COMMENT
Sub Die(ByVal strMessage, ByVal lngExitCode)
WScript.Echo strMessage
WScript.Quit lngExitCode
End Sub

? BEGIN CALLOUT A
Sub Main
Dim strComputer, objSystems, objSystem

? BEGIN COMMENT
? The Если в командной строке указана опция /?, показать сообщение об использовании
? Имя компьютера, если указано, является первым неспецифицированным аргументом в командной строке.
? END COMMENT
With WScript.Arguments
 If.Named.Exists(«?») Then Usage
 If.Unnamed.Count > 0 Then
 strComputer =.Unnamed(0)
 Else
? BEGIN COMMENT
 ? WMI использует в качестве имени локального компьютера символ точки.
? END COMMENT
 strComputer = «.»
 End If
End With

On Error Resume Next

? BEGIN COMMENT
? Получить коллекцию объектов класса Win32_OperatingSystem.
? END COMMENT
Set objSystems = GetObject(«WinMgmts:{impersonationlevel=impersonate}!//» _
 & strComputer & «/root/CIMV2»).InstancesOf(«Win32_OperatingSystem»)

If Err Then Die «Unable to connect to computer (« & CStr(Err) & «)», Err
On Error GoTo 0

For Each objSystem In objSystems
 WScript.Echo «Computer Name: « & objSystem.CSName & vbNewLine _
 & «Description: « & objSystem.Description & vbNewLine _
 & «OS: « & objSystem.Caption & vbNewLine _
 & «Service Pack: « & CStr(objSystem.ServicePackMajorVersion)
Next
End Sub
? END CALLOUT A