hpops
asked on
Pass variable from Visual Basic .NET 2008 to VBScript
I am writing a Visual Basic 2008 .NET program with a Textbox that will contain a user entered IP Address or Hostname. I'd like to pass this value to a VBScript.
I've done this successfully with some other things in the past, however this particular VBScript has an "InputBox" function that I'd like to replace with something like C:\RestartService.vbs <Hostname>
Even after doing some extensive searching, I'm just not getting it on how to accomplish this. I'm completely stuck on how to get VBScript to accept a single command line variable and I will have issues with my Visual Basic .NET example posted below once the VBS items are working.
Thanks for any help you can provide
I realize the functionality of this VBScript is probably something I could do in Visual Basic, but I really like how it functions and don't know how to convert the code.
I've done this successfully with some other things in the past, however this particular VBScript has an "InputBox" function that I'd like to replace with something like C:\RestartService.vbs <Hostname>
Even after doing some extensive searching, I'm just not getting it on how to accomplish this. I'm completely stuck on how to get VBScript to accept a single command line variable and I will have issues with my Visual Basic .NET example posted below once the VBS items are working.
Thanks for any help you can provide
I realize the functionality of this VBScript is probably something I could do in Visual Basic, but I really like how it functions and don't know how to convert the code.
'Restart Service VBScript
strComputer = InputBox ("Enter IP Address or Computer Name" , "Restart the Automatic Updates Service")
RestartServices ("strComputer"), "wuauserv"
'RestartServices ".", "SQLSERVERAGENT,MSSQLSERVER"
Sub RestartServices(Computer, ServiceNames)
Dim ServiceName, Counter, aServiceNames
'Get the array of service names
aServiceNames = split(ServiceNames,",")
'loop services from beginning, stop them
For Each ServiceName In aServiceNames
StopService Computer, ServiceName, True
Next
'loop services from end, start them
For Counter = ubound(aServiceNames) To 0 Step -1
StartService Computer, aServiceNames(Counter), True
Next
End Sub
Sub StopService(Computer, ServiceName, Wait)
Dim cimv2, oService, Result
'Get the WMI administration object
Set cimv2 = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
'Get the service object
Set oService = cimv2.Get("Win32_Service.Name='" & ServiceName & "'")
'Check base properties
If Not oService.Started Then
' the service is Not started
wscript.echo "The service " & ServiceName & " is Not started"
exit Sub
End If
If Not oService.AcceptStop Then
' the service does Not accept stop command
wscript.echo "The service " & ServiceName & " does Not accept stop command"
exit Sub
End If
'wscript.echo oService.getobjecttext_
'Stop the service
Result = oService.StopService
If 0 <> Result Then
wscript.echo "Stop " & ServiceName & " error: " & Result
exit Sub
End If
Do While oService.Started And Wait
'get the current service state
Set oService = cimv2.Get("Win32_Service.Name='" & ServiceName & "'")
wscript.echo now, "StopService", ServiceName, oService.Started, _
oService.State, oService.Status
Wscript.Sleep 200
Loop
End Sub
Sub StartService(Computer, ServiceName, Wait)
Dim cimv2, oService, Result
'Get the WMI administration object
Set cimv2 = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
'Get the service object
Set oService = cimv2.Get("Win32_Service.Name='" & ServiceName & "'")
'Path = "winmgmts:{impersonationLevel=impersonate}!\\" & Computer & _
' "\root\cimv2:Win32_Service.Name='" & ServiceName & "'"
'Get the WMI administration object of the service
'Set oService = GetObject(Path)
'Check base properties
If oService.Started Then
' the service is Not started
wscript.echo "The service " & ServiceName & " is started."
exit Sub
End If
'Start the service
Result = oService.StartService
If 0 <> Result Then
wscript.echo "Start " & ServiceName & " error:" & Result
exit Sub
End If
Do While InStr(1,oService.State,"running",1) = 0 And Wait
'get the current service state
Set oService = cimv2.Get("Win32_Service.Name='" & ServiceName & "'")
wscript.echo now, "StartService", ServiceName, oService.Started, _
oService.State, oService.Status
Wscript.Sleep 200
Loop
End Sub
Visual Basic example code to pass variable
Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim arguments As String
arguments = "RestartService.vbs " & TextBox1.Text
Process.Start("wscript.exe", arguments)
End Sub
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thank you Rob. This is exactly what I needed.
No problem. I forgot to mention, if you want the VB.NET code to work, use this declaration:
Imports System.ServiceProcess
Regards,
Rob.
Imports System.ServiceProcess
Regards,
Rob.
More information: http://technet.microsoft.com/en-us/library/ee156618.aspx