Question

using psexec to run remote DOS commands

Asked by: Benjamin297

I am trying to use psexec to run remote DOS commands on a server. Unfortunately I am not permitted to copy the files I am running to the remote machine for security reasons. Therefore I have used the following command...

psexec cmd

This brings up a DOS window and if I type echo %COMPUTERNAME% then the remote machine name is correctly returned. This is fine, but when I type a batch file with the following...

psexec cmd
psexec echo %COMPUTERNAME%

Then the remote machine name is not returned, infact nothing is returned... Due to the fact I cannot remotely move files to the actual server I want to work on then Im assuming performing commands in this way is the only option available. However I cannot seem to execute multiple DOS commands. It is also necessary that I can read the output of the commands I use so that I can perform conditional processing.

If it helps I am able to use VBS scripts to perform these tasks if that provides the correct functionality... Ideally though a pure DOS solution would be great.

Thanks in advance...

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2007-06-23 at 08:33:59ID22653238
Tags

psexec

,

remote

,

dos

,

run

,

command

Topics

Windows Batch Scripting

,

VB Script

,

MS DOS

Participating Experts
4
Points
500
Comments
11

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. PsExec in Domain
    We use PsExec as a 3rd tool with our product to remote deploy software's over the network. The command we pass to PsExec psexec \\10.10.51.26 -u 10.10.51.26\test -p test -c -f -i -e test.exe We prepend the user name with the machine when the domain name in not provided. If...
  2. PSEXEC
    Can anyone tell me how can I list Directories and files on a remote computer using PSEXEC? I issue the following commands : PSEXEC \\remote_computer\ dir c:\ It returns with an error : "The system can not find the file specified" Dir is a DOS Shell command and b...
  3. Psexec command
    Hi, I want to know if psexec fails what will the things i need to check. Regards Sharath
  4. Using PSEXEC
    I'm trying to execute a script on a remote computer using psexec, but keep getting an error. psexec\\computername c:\file.vbs I get the error: The system cannot find the path specified. Anyone got a suggestion?
  5. PSEXEC
    Hi, I am trying to run a program in a remote PC from my program. I am using "psexec" to do it. he command is: "C:\Program Files\Supervisor\psexec.exe" \\OFFICE -d -e \\OFFICE\C\Temp2\Temp2.exe When I do it from a CMD window it works OK (it opens a dialo...
  6. PSEXEC with file (@list)
    Hi, I want to use PSEXEC with a file that has a list of computers. The problem is that each computer has a diffrent User-Name and password. Can it be done? What is the format of the file?

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: younghvPosted on 2007-06-23 at 08:48:18ID: 19348133

Hang on a minute - I posted something on this a few months ago.

Vic

 

by: younghvPosted on 2007-06-23 at 08:53:58ID: 19348160

Review this post and the comments from 'sirbounty' - he is a scripting genius.

There were several other posts at about that time for using 'PSEXEC' with different scripts, so let me know if you need more.

Vic

http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/Q_22397407.html

 

by: SteveGTRPosted on 2007-06-23 at 09:01:47ID: 19348218

You could do the following:

psexec cmd /c echo %computername%^&echo hello

 

by: SteveGTRPosted on 2007-06-23 at 09:09:27ID: 19348274

In fact you could escape the computername environment variable as well:

psexec cmd /c echo ^%computername^%^&echo hello

 

by: Benjamin297Posted on 2007-06-23 at 16:27:40ID: 19349362

Thanks for the help so far,

Could you also show me how to format the command for use on a computer with ip address of say '999.9.9.9', also the command I will be using will return a load of information which I will need to process before running further commands, so instead of (in the above example) echoing the computer name and then 'hello' I might want to retreive the computername, and then based on the result execute another command?? Is that possible?

 

by: RobSampsonPosted on 2007-06-23 at 17:14:55ID: 19349450

Is this script actually required to run *on* the remote PC, or is it supposed to run from *your* PC, based on just info about that computer?
I don't see why you want to remotely perform a task on a remote computer, based on it's computer name, when your pc should already know the name of that pc.
Anyway, you can just run the command remotely to an IP address by using the following.  By the way, I write most of my stuff in VBS, so put this text in a VBS file:
'=============
strComputer = InputBox("Please enter a computer name or IP Address:", "Remote Computer")
strPSExecPath = "\\server\share\psexec.exe" ' For PSExec 1.82
strCommand = "cmd /c """ & strPSExecPath & """ -accepteula -e -i \\" & strComputer & " cmd /c echo %computername% && echo hello"
Set objShell = CreateObject("WScript.Shell")
objShell.Run strCommand, 1, True
'==============

Now, if you want to do *other* stuff on that remote PC, like run multiple commands, you would be better off running another script (with PSExec), so that, more logically, you can just alter that other script with the assumption it will be run "locally", so you would do something like:
strCommand = "cmd /c """ & strPSExecPath & """ -accepteula -e -i \\" & strComputer & " cmd /c wscript.exe \\server\path\otherscript.vbs"

Bear in mind though, that through using PSExec, you are not running any process under the actual profile of a user logged in to that remote PC, so you cannot change "user related" settings.  You are actually running that process using your credentials that you used to run the script.

I hope that helps.  Also, just FYI, instead of having two separate scripts, I have written a script that calls itself from the remote machine, so you can keep all of the functionality to one script, to make things easier to follow.

Regards,

Rob.

 

by: RobSampsonPosted on 2007-06-23 at 18:17:27ID: 19349559

Here's the self-referencing script that I have written, which is run by you, you type in a remote computer name, and PSExec runs this script from the target computer.
You need to write your own "admin" commands into the last procedure:
'===============

Option Explicit

Dim objShell, objProcess, strUserName, strHostName, strCommand

Set objShell = CreateObject("Wscript.Shell")
Set objProcess = objShell.Environment("Process")

strUserName = objProcess("USERNAME")
strHostName = objProcess("COMPUTERNAME")

If WScript.Arguments.Count < 1 Then
      Call Normal_User_Commands
ElseIf WScript.Arguments(0) = "AsAdmin" Then
      Call Admin_User_Commands
Else
      MsgBox "Unknown Argument received"
End If

Sub Normal_User_Commands
    'MsgBox "Running as initiating user"
    strComputer = InputBox("Enter computer name to map a printer to:", "Enter Computer", "172.16.2.40")
    '******************************************************************************************
    ' This command assumes that PSExec.exe (available from Microsoft) is stored on the shared folder
    ' below.  It runs PSExec as the Admin user, on a remote machine, or the current machine if it is a
    ' logon script.  It re-runs this file again, this time passing the "AsAdmin" argument, so the script
    ' knows it has been run under an Admin account, and can safely execute the Admin_User_Commands Sub.
    ' NOTE: If the Admin is running this script from a mapped drive, the client must have the same drive mapped,
    ' because of the use of WScript.ScriptFullName below.  It is best to run this script from a UNC path,
    ' so the client machine can access the file via a UNC path and not rely on a mapped drive.
      strCommand = "cmd /c \\server\share\psexec_182.exe -accepteula -i -e \\" & strComputer & " WScript " & WScript.ScriptFullName & " AsAdmin"
      objShell.Run strCommand, 0, True
    ' NOTE: In the above two lines, you can change the cmd /c to cmd /k and the strCommand, 0, True to strCommand, 1, True
    ' if you wish to see some output for debugging / testing purposes.

End Sub

Sub Admin_User_Commands
      ' Now the script has detected that "AsAdmin" was passed to it, and will run these commands.
      ' Now running as Administrator on the target macchine
      ' MsgBox "Running as Admin"
        ' Now you can run as many commands as you want, which acts
        ' as if the script was run by the Administrator on the remote machine
End Sub
'==============

Regards,

Rob.

 

by: SteveGTRPosted on 2007-06-23 at 21:55:01ID: 19349989

Sure it possible. You have to be a little more specific in what your requirements are though. What exactly do you need?

 

by: Benjamin297Posted on 2007-06-24 at 02:39:52ID: 19350394

Ok, these are the specifics....

I need a script that I can run on computer 'A' which is capable of shutting down computer 'B'. Due to very very strict security I am unable to physically transfer a file to the remote machine 'B' and then run it using the psexec -c command.

Now I know that if I personally open up DOS from computer 'A' and type 'psxec \\B cmd.exe' then a command window will open, where I can then type a command like echo %COMPUTERNAME% and 'B' will be returned as the remote machine location all without physically transfering a file. Infact any commands I type in that window sequentially will act as if I were physically on the remote machine 'B'.

I am having trouble writing a DOS script to perform sequential statements in this way. When I write sequntial psexec statements in a DOS file they do not seem to work... I have no idea why, perhaps timing issues??? Also the script is a little more complex then just running shutdown.exe remotely... I need to perform a number of queries on the remote server in this way and process the information returned (all this needs to be done from machine 'A' without transferring files to machine 'B').

The machines I am shutting down will be using clusters (which is another new topic for me) so I need to query the cluster node setup for the machines, process this information locally and depending on the information returned perform additional psexec statements to change the clusters before the machine reboots.

The VBS Script from Rob looks good, ill have to wait until Monday to test it though... A pure DOS solution would be preferred if possible though.

 

by: RobSampsonPosted on 2007-06-24 at 03:37:11ID: 19350530

If my solution works for you, you can test some DOS commands in the Admin_User_Commands using the following few lines:
Set objShell = CreateObject("Wscript.Shell")
strCommand = "dir /s C:\ > ""C:\Spaced Folder\Files.txt"""
objShell.Run strCommand, 1, True
strCommand = "type ""c:\Spaced Folder\Files.txt"""

etc, etc.  In my example, for any file paths that have spaces in them, you need to enclose them in quotes in a DOS prompt, so in a VBS string, you type two double-quotes to represent one in the string.

If that happens to work for you, and you really want a DOS version, I'm sure someone like SteveGTR could emulate my functionality using a Batch file, but I'm not good enough with them, so I'll pass the buck there!

Regards,

Rob.

 

by: oBdAPosted on 2007-06-24 at 04:20:25ID: 19350646

There are several issues here that will exclude psexec as the tool of choice, at least with the restriction about copying files to the remote machine:
* Running psexec against a remote computer *will* already copy file(s) to this machine, namely the psexec.exe file which will be (temporarily) installed and run as a service on the remote machine; so by using this, you're already violating the rules imposed.
* Putting the commands you need into a batch or VBS file and then running it on the remote machine using psexec will require you to copy this file to the target machine as well, because you can't start it over the network -- unless you feel like using psexec's "-u <User>" and "-p <Password>" arguments, which is *far* more of a security risk than copying a file over, because the password will be transmitted in clear text.

Now, this restriction is actually rather silly -- if you have administrative permissions on the remote machine and are able to run all sorts of command, then it's definitely not a security risk to copy a file running all of these commands one after another to this machine; at least it's not more of a security risk than letting you run these commands from the command line.
That said, you can create a scheduled task on the remote machine to run the script for you. You can create this task to run under an account with domain admin credentials, so this task would be able to run a script from a remote location.
But creating and debugging a script that way will take, oh, I don't know, probably something like 10 times longer than necessary to develop and debug.
HOW TO: Use Schtasks.exe to Schedule Tasks in Windows Server 2003
http://support.microsoft.com/?kbid=814596

Now, that said, too, you can usually query pretty much everything remotely that needs to be queried, so it should be possible to create a script that you can run on Computer A that will run the status queries remotely against Computer B, do all the processing on Computer A, and then shutdown Computer B.
For a cluster, for example, this would be cluster.exe (http://technet2.microsoft.com/windowsserver/en/library/62513114-6281-4119-8a65-6463be5646a61033.mspx?mfr=true).

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...