Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

VB Script to run batch file on another machine

Posted on 2011-02-18
6
Medium Priority
?
638 Views
Last Modified: 2012-05-11
Hi experts,

I have a batch file on a server that I need to run from my machine. What code in VB script can I use on my machine to execute the batch file on the server ( \\servername\sharedfolder\batch.bat)? It would need to work the same way as if I was on the server and ran the batch file.

Thanks.
0
Comment
Question by:asmyatt
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
6 Comments
 
LVL 10

Expert Comment

by:answer_dude
ID: 34928194
Here are two options:  the short one will just run it with whatever local permissions you already have, the longer snippet will ask you for the ID/Password that you want to "run as"

dim objShell
set objShell=createobject("wscript.shell")
objShell.run "\\servername\sharedfolder\batch.bat"
set objShell=nothing

Open in new window

Option Explicit

Dim objShell, FSO, strBatchFile

Set objShell = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
strBatchFile = "\\servername\sharedfolder\batch.bat"
If FSO.FileExists(strBatchFile) Then
     objShell.ShellExecute "wscript.exe", _ 
        Chr(34) & strBatchFile & Chr(34), "", "runas", 1
Else
     MsgBox "Script file " & strBatchFile & " not found"
End If

Set objShell = Nothing

Open in new window

0
 
LVL 2

Author Comment

by:asmyatt
ID: 34928552
Are these trying to execute the batch file on the server?  It appears it's trying to run the batch file from the machine I'm runing the .vbs from.
0
 
LVL 10

Expert Comment

by:answer_dude
ID: 34929162
It's trying to run the batch file on the server from your machine.

The batch file on the server, if it make calls to environment variables, etc., would in fact pull those from your machine.

If you want the batch file to be unaware of your machine...  then you're out of my depth.  I did find this code that might work (see attached).

But I didn't write it -- I found it here:

http://motevich.blogspot.com/2007/11/execute-program-on-remote-computer.html

I modified it to reference your batch file.
Option Explicit

Dim strComputer, strCommand, objProcess, objWMIService, errReturn

strComputer = "servername"
strCommand = "\\servername\sharedfolder\batch.bat"

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objProcess = objWMIService.Get("Win32_Process")

errReturn = objProcess.Create(strCommand, null, null, intProcessID)

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

Set objWMIService = Nothing
Set objProcess = Nothing

Open in new window

0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 2

Author Comment

by:asmyatt
ID: 34929493
Ok, this code seems to work, but it's trying to run the batch file under my userid logged into the local machine. Is there a way to impersonate in the code a userid to use to run the batch file?
strCommand = "C:\crystal\test.bat"
strPath = "C:\temp"
strcomputer="servername"

process = "winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2"
msgbox process

Set objWMIService = GetObject(process)
Set objProcess = objWMIService.Get("Win32_Process")

errReturn = objProcess.Create(strCommand, strPath, Null, intProcessID)

If errReturn = 0 Then
      WScript.Echo "scan success: " & intProcessID
Else
      WScript.Echo "scan fail: " & errReturn
End If

Open in new window

0
 
LVL 10

Expert Comment

by:answer_dude
ID: 34929947
Not that I am aware; but if you are able to run the batch file from your computer as if you were logged into the other computer, wouldn't you want it under your ID?  Otherwise, you'd need to embed the other user IDs password into your script -- which would be risky.
0
 
LVL 10

Accepted Solution

by:
answer_dude earned 2000 total points
ID: 34930026
Actually -- after some poking around, I found something that might work... try this:
Option Explicit

Dim strComputer, strCommand, objProcess, objWMIService, errReturn, objWbemLocator

strComputer = "servername"
strCommand = "\\servername\sharedfolder\batch.bat"

strNamespace = "root\cimv2"
strUser = inputbox("username")
strPassword = inputbox("password")
Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objwbemLocator.ConnectServer _
(strComputer, strNamespace, strUser, strPassword)

'Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objProcess = objWMIService.Get("Win32_Process")

errReturn = objProcess.Create(strCommand, null, null, intProcessID)

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

Set objWMIService = Nothing
Set objProcess = Nothing

Open in new window

0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

Question has a verified solution.

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

When it comes to writing scripts for a Client/Server computing environment it is essential to consider some way of enabling the authentication functionality within a script. This sort of consideration mainly comes into the picture when we are dealin…
Deploying a Microsoft Access application in a Citrix environment is not difficult but takes a few steps. However, Citrix system people are often of little help, as they typically know next to nothing about Access. The script provided here will take …
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…
Suggested Courses

604 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