2017-08-10 143 views
0

RDP运行本地程序有没有办法通过RDP运行本地程序 类似的东西:C#中通过使用PSEXEC

Process p = new Process(); 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardOutput = true; 
p.StartInfo.RedirectStandardError = true; 
p.StartInfo.RedirectStandardInput = true; 
p.StartInfo.FileName = @"G:\PSTools\PsExec.exe"; 
p.StartInfo.Arguments = @"\\tsclient calc.exe"; 
p.Start(); 
string output = p.StandardOutput.ReadToEnd(); 
string errormessage = p.StandardError.ReadToEnd(); 
p.WaitForExit(); 

在这种情况下,我得到:

的句柄无效。连接到软件tsclient ......无法访问软件tsclient

感谢

+0

请更具体地说明你想做什么。现在我将它理解为“我想从本地机器上的远程机器运行程序”。你确定这是你想说的吗? – Nico

+0

你正试图在远程机器上运行某些东西,那么为什么要通过RDP? psexec正是为你做的。如果“tsclient”是远程计算机的名称,那么这将起作用。另外删除cmd.exe,只需直接调用calc.exe(或任何你想要的程序),否则它将无法工作。也许你需要完整的路径名称到你的.exe –

回答

0

最后,我们有PowerShell远程处理。 使用WMI的前两种方法取决于计算机上启用的远程DCOM。这个 可能会也可能不会成为问题,但有时会带来安全风险。 您还可以通过Invoke-Command cmdlet 使用PowerShell远程启动远程计算机上的流程以及通过WSMAN, 这是一个更新,更安全的协议。

为此,我们将结合使用两个cmdlet:Invoke-Command至 使我们能够在远程计算机上运行命令并启动进程以实际执行该进程。

Invoke-Command –ComputerName MEMBERSRV1 –ScriptBlock {Start-Process notepad.exe} 

here

采取同样这是一个SO帖子完全相同的问题:SO

你并不需要运行RDP刚刚启动远程过程。对于远程命令执行有多种图书馆和协议。 我建议阅读链接的SO以获取有关如何执行psExec调用的更多信息。