Listing 1: RunProgram.vbs's Main Subroutine

Sub Main()
  Dim Args
  Dim Command, StartIn, Computer, UserName, Password
  Dim Wait, Elapsed
  Dim ShowWindow, Result
  Dim StartTime, EndTime
  Dim Output, TimeInfo
  Dim WMIRun

  Set Args = WScript.Arguments

  ' If there are no unnamed arguments, or if the /? argument
  ' is present, show the usage message
  If (Args.Unnamed.Count = 0) Or Args.Named.Exists("?") Then _
    ShowUsage

  ' BEGIN CALLOUT A
  Command = Unescape(Args.Unnamed(0))
  ' END CALLOUT A

  StartIn = Args.Named("startin")

  ShowWindow = Args.Named("window")
  If Not IsNumeric(ShowWindow) Then ShowUsage
  If (ShowWindow < 0) Or (ShowWindow > 65535) Then ShowUsage

  Computer = Args.Named("computer")
  UserName = Args.Named("username")
  Password = Args.Named("password")

  Wait = Args.Named.Exists("wait")
  Elapsed = Args.Named.Exists("elapsed")

  ' Create instance of class
  ' BEGIN CALLOUT B
  Set WMIRun = New WMIExec
  ' END CALLOUT B

  Result = WMIRun.ConnectServer(Computer, UserName, Password)
  If Result <> 0 Then
    WScript.Echo "Error 0x" & Hex(Result) & " connecting to '" _
      & Computer & "'"
    WScript.Quit Result
  End If

  If Elapsed Then StartTime = Now()

  Result = WMIRun.RunProgram(Command, StartIn, ShowWindow)
  If Result <> 0 Then
    WScript.Echo "Error 0x" & Hex(Result) & " starting '" _
      & Command & "'"
    WScript.Quit Result
  End If

  ' Output initial status message
  WScript.Echo WMIRun.Status

  If Wait Then
    ' Suspend script while process is running
    Do While WMIRun.ProcessExists()
      WScript.Sleep PROCESS_CHECK_INTERVAL
    Loop
    If Elapsed Then
      EndTime = Now()
      TimeInfo = "Started: " & CStr(StartTime) & vbNewLine _
        & "Ended: " & CStr(EndTime) & vbNewLine _
        & "Elapsed: " & GetElapsed(DateDiff("s", StartTime, EndTime))
      ' Output full status if running from wscript.exe
      If ScriptHost() = "wscript.exe" Then
        Output = WMIRun.Status & vbNewLine & TimeInfo
      Else
        Output = TimeInfo
      End If
      WScript.Echo Output
    End If
  End If
End Sub