Run VBScript Remotely

Posted on 2010-09-16
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?

Function RunRemoteScript(strVBScript, strComputer)

  Set objWshController = CreateObject("WshController")

  'Wscript.ConnectObject objWshController,"WshController_"

  strRunScript = "\\" & strComputer & "\C$\ApplyUpdates2.vbs"

  Set objRemoteScript = objWshController.CreateScript(strRunScript, strComputer)


  While objRemoteScript.Status <> 2

   WScript.Sleep 100


End Function

Open in new window

Question by:MountyTech
  • 3
  • 2
  • 2
  • +1

Assisted Solution

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

Expert Comment

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.


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



		WScript.Echo "Process created with ID of " & lngProcessID

	End If

	On Error GoTo 0

End Sub

Open in new window


Author Comment

ID: 33700514
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.

I tried your suggestions with no success as well.


Expert Comment

ID: 33700553
it's a bit dirty, but why not try the AT command ?
Backup Your Microsoft Windows Server®

Backup all your Microsoft Windows Server – on-premises, in remote locations, in private and hybrid clouds. Your entire Windows Server will be backed up in one easy step with patented, block-level disk imaging. We achieve RTOs (recovery time objectives) as low as 15 seconds.


Expert Comment

ID: 33701938
Found this here:
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
Wscript.Echo "notepad.exe could not be started due to error: " & errReturn
End If

Open in new window


Author Comment

ID: 33704464
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.

Author Comment

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

Accepted Solution

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.


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


			WScript.Echo "Script did not run on " & strServer

		End If


		WScript.Echo strServer & " is offline."

	End If



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


		Ping = False

	End If

End Function

Open in new window


Featured Post

Don't lose your head updating email signatures!

Do your end users still have the wrong email signature? Do email signature updates bore you or fill you with a sense of dread? You can make this a whole lot easier on yourself by trusting an Exclaimer email signature management solution. Over 50 million users should you!

Question has a verified solution.

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

Scenario:  You do full backups to a internal hard drive in either product (SBS or Server 2008).  All goes well for a very long time.  One day, backups begin to fail with a message that the disk is full.  Your disk contains many, many more backups th…
Possible fixes for Windows 7 and Windows Server 2008 updating problem. Solutions mentioned are from Microsoft themselves. I started a case with them from our Microsoft Silver Partner option to open a case and get direct support from Microsoft. If s…
This tutorial will walk an individual through the steps necessary to join and promote the first Windows Server 2012 domain controller into an Active Directory environment running on Windows Server 2008. Determine the location of the FSMO roles by lo…
This tutorial will walk an individual through the process of transferring the five major, necessary Active Directory Roles, commonly referred to as the FSMO roles to another domain controller. Log onto the new domain controller with a user account t…

911 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

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now