Solved

Run VBScript Remotely

Posted on 2010-09-16
8
1,572 Views
Last Modified: 2012-08-13
I have a vbscript that I run on my computer. This script checks to see if another script resides on a server. If not it will copy the script to the server at C:\. Once the script is there it should initiate the script to run on the remote server. I do have admin rights on my computer and the server. I have verified that the script works while logged onto the server and ran locally. I am using windows XP and the servers are 2003 and 2008.

Everytime I run it I get the attached error message.

Error: Catastrophic failure
Code: 8000FFFF
Source: (null)

Has anyone been able to run a script on a remote computer?

Thanks,
Function RunRemoteScript(strVBScript, strComputer)
  Set objWshController = CreateObject("WshController")
  'Wscript.ConnectObject objWshController,"WshController_"
  strRunScript = "\\" & strComputer & "\C$\ApplyUpdates2.vbs"
  Set objRemoteScript = objWshController.CreateScript(strRunScript, strComputer)
  objRemoteScript.Execute
  While objRemoteScript.Status <> 2
   WScript.Sleep 100
  WEnd
End Function

Open in new window

error.JPG
0
Comment
Question by:MountyTech
  • 3
  • 2
  • 2
  • +1
8 Comments
 
LVL 3

Assisted Solution

by:Zach2001
Zach2001 earned 25 total points
ID: 33696826
I have ran scripts on remote machines, using PS tools:

http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
0
 
LVL 65

Expert Comment

by:RobSampson
ID: 33697408
Hi, another method (that I've admittedly never had success with), is to use the Create method of the Win32_Process class.

Note that to run VBScripts, you might need to include wscript.exe in the command, so I have included a commented out line that has that.  Try both.

Regards,

Rob.
Sub RunRemoteScript(strVBScript, strComputer)
	On Error Resume Next
	Set objProcess = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2:Win32_Process")
	intResult = objProcess.Create (strVBScript, Null, Null, lngProcessID)
	'intResult = objProcess.Create ("wscript.exe " & strVBScript, Null, Null, lngProcessID)
	If Err.Number <> 0 Then
		WScript.Echo "Error 0x" & Hex(Err.Number) & ": " & Err.Description
		Err.Clear
	Else
		WScript.Echo "Process created with ID of " & lngProcessID
	End If
	On Error GoTo 0
End Sub

Open in new window

0
 

Author Comment

by:MountyTech
ID: 33700514
Zach,
I was trying to stay away from pstools. I am going to run the script against a list servers. Pstools will popup a cmd screen for each one. The servers are listed in a text file.

Rob,
I tried your suggestions with no success as well.



0
Is Your AD Toolbox Looking More Like a Toybox?

Managing Active Directory can get complicated.  Often, the native tools for managing AD are just not up to the task.  The largest Active Directory installations in the world have relied on one tool to manage their day-to-day administration tasks: Hyena. Start your trial today.

 
LVL 3

Expert Comment

by:Zach2001
ID: 33700553
it's a bit dirty, but why not try the AT command ?
0
 
LVL 2

Expert Comment

by:Procastin8or
ID: 33701938
Found this here:  http://motevich.blogspot.com/2007/11/execute-program-on-remote-computer.html
After being modified to fit it should work.
strComputer = "."
strCommand = "notepad.exe"

Const INTERVAL = "n"
Const MINUTES = 1

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objScheduledJob = objWMIService.Get("Win32_ScheduledJob")
Set objSWbemDateTime = CreateObject("WbemScripting.SWbemDateTime")

objSWbemDateTime.SetVarDate(DateAdd(INTERVAL, MINUTES, Now()))
errReturn = objScheduledJob.Create(strCommand, objSWbemDateTime.Value, False, 0, 0, True, intJobID)

If errReturn = 0 Then
Wscript.Echo "notepad.exe was started with a process ID: " & intJobID
Else
Wscript.Echo "notepad.exe could not be started due to error: " & errReturn
End If

Open in new window

0
 

Author Comment

by:MountyTech
ID: 33704464
Procastin8or,
I tried the code you listed. It works great on my 2008 boxes. On the 2003 boxes I get permission errors. This is due to that the scheduled script is writing to a log on a remote share. Since the job is scheduled it must not maintain my credentials.
0
 

Author Comment

by:MountyTech
ID: 33704473
Sorry, I left out that the remote share is accessed through a unc path.
0
 
LVL 65

Accepted Solution

by:
RobSampson earned 100 total points
ID: 33706239
You can use PSExec without showing the command prompt for each server, if you process each server individually in the script (by looping through a text file of server names).  Try the code below if you're interested.

Set your username to run the program with, and it will prompt you for your password.

Regards,

Rob.
strComputers = "\\server\share\computers.txt"
strVBScript = "\\server\share\scriptname.vbs"
strPSExec = "\\server\shares\psexec.exe"
strUsername = "domain\username"
strPassword = InputBox("Enter the password for " & strUsername & ":")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Const intForReading = 1
Set objShell = CreateObject("WScript.Shell")
Set objComputers = objFSO.OpenTextFile(strComputers, intForReading, False)
While Not objComputers.AtEndOfStream
	strServer = objComputers.ReadLine
	If Ping(strServer) = True Then
		strCommand = "cmd /c " & objFSO.GetFile(strPSExec).ShortPath & " -accepteula -e -u " & strUsername & " -p " & strPassword & " \\" & strServer & " wscript.exe " & objFSO.GetFile(strVBScript).ShortPath
		intReturn = objShell.Run(strCommand, 0, True)
		If intReturn = 0 Then
			WScript.Echo "Script ran on " & strServer
		Else
			WScript.Echo "Script did not run on " & strServer
		End If
	Else
		WScript.Echo strServer & " is offline."
	End If
Wend
objComputers.Close

Function Ping(strComputer)
	Dim objShell, boolCode
	Set objShell = CreateObject("WScript.Shell")
	boolCode = objShell.Run("Ping -n 1 -w 300 " & strComputer, 0, True)
	If boolCode = 0 Then
		Ping = True
	Else
		Ping = False
	End If
End Function

Open in new window

0

Featured Post

Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Learn about cloud computing and its benefits for small business owners.
When you see single cell contains number and text, and you have to get any date out of it seems like cracking our heads.
This tutorial will walk an individual through locating and launching the BEUtility application to properly change the service account username and\or password in situation where it may be necessary or where the password has been inadvertently change…
This tutorial will walk an individual through the steps necessary to install and configure the Windows Server Backup Utility. Directly connect an external storage device such as a USB drive, or CD\DVD burner: If the device is a USB drive, ensure i…

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question