Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Well going all in: assigning all my 72 point as bounty to this question!

How to run a command line program on remote Windows computers with out installing additional software (aka ssh). All recommendations on the web/stackoverflow fail following basic needs:

  1. The remote program shall be able to access a network share (read/write)!
  2. The output of the program shall be captured (back to controlling computer)
  3. Automat-able to run from a script (i.e. python)

I have looked at following:

  1. WMI -- can run a program but it cannot access network shares and output is not visible (fire and pray method?)
  2. WinRM -- supposedly can access network shares but setup is beyond complicated (seems to require not self-signed certificates and entring password, which fails C)
  3. PsExec -- cannot run executable from network path

Environment: all Win 7, can run as local admin

share|improve this question

migrated from stackoverflow.com Mar 18 '13 at 1:31

This question came from our site for professional and enthusiast programmers.

1  
Seriously, this is a hard problem which has been solved pretty well by ssh authentication. I'd use that solution. –  Dirk Eddelbuettel Mar 17 '13 at 17:25
    
+1 for ssh. Is there any reason you wouldn't want to use ssh, besides having to install it? –  Xymostech Mar 17 '13 at 17:27
    
I wish this was a linux question -- it's really mesmerizing that Windows makes it so convoluted. A. requires install, B. from what I've seen all operations run under services user account vs running in context of the calling user (security issue, no?) –  okigan Mar 17 '13 at 17:28

3 Answers 3

I would recommend PowerShell remoting. But answer to question how? depends very much on environment (domain/ workgroup) and your rights (on server/ within domain).

That's one command in AD environment:

Set-ADComputer -TrustedForDelegation $true -Identity <your target server>

And later:

Invoke-Command -ComputerName <target server> -ScriptBlock { your command }

... but that will not work in workgroup environment, so I guess you need to be more specific here.

share|improve this answer
    
Tried calling "Set-ADComputer", per error message it needs to be called on main Active Directory system and by domain admin -- which is outside of my rights of Local Admin –  okigan Mar 19 '13 at 5:01
    
That's why answer to question at the beginning of my answer is crucial if you want to get answer that's applicable for your environment/ account/ rights. –  BartekB Mar 20 '13 at 7:04

The psexec tool, originally created by Sysinternals, but now a part of Microsoft Technet, should do what you need.

With it you can run any command on a remote Windows computer, including copying over any executable, running it, and returning the results. You don't have to install anything on the remote computer.

Of course you have to have administrative or equivalent rights on the target machine to perform execution. In essence, if you cannot remote desktop or login to the machine, you won't be able to use it. That's pretty obvious.

Here is the product page: http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

You can find many tutorials and guides on the Internet on how to use it.


I don't understand what you mean by "it cannot access the network".

Do the following:

  1. Write a script, a batch file, or an executable so that if you physically copy it to the target machine and double-click on it, it does everything you need (connects to the remote share and reads / writes data to it.) How to do that is beyond this question and actually depends on the technology you are going to use to write the script.
  2. Use psexec to run it on another target machine.

My understanding is that you are currently failing step 1, but the current question is about step 2.

share|improve this answer
    
ah, yes, I forgot to mention i tried that -- it cannot access to the network, can it? –  okigan Mar 17 '13 at 17:39
    
What do you mean it cannot access the network? You can use it to run any terminal command and launch any executable on the remote machine, including copying over and running any program you just wrote in C++, VBScript or whatever. Of course you can access the network from the target machine. –  Tobia Mar 17 '13 at 17:41
    
Intended to run executable itself from network: \\path.exe. This does not require copying when running even in Remote Desktop –  okigan Mar 17 '13 at 18:50
    
Your original question asks "The remote program shall be able to access a network share", not "The remote program shall reside on a network share". –  Tobia Mar 17 '13 at 18:58
    
good point, i'll update the title. Thanks –  okigan Mar 18 '13 at 1:18

Have you tried mapping the network share to a drive letter on the remote PC? PSExec would then be able to see the files in that share as local.

share|improve this answer
    
Yes, have tried that -- does not work: PsExec comes back with "The system cannot find the path specified." I have double checked the path, but running a local program ie. 'ipconfig' works... –  okigan Mar 18 '13 at 4:37

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.