在上下文中启动远程进程

时间:2011-05-30 16:02:23

标签: powershell remote-access

我想知道如何在用户上下文中远程启动进程,就像他启动它一样。让我解释。我知道如何远程启动进程,所以例如我想启动记事本:

Invoke-WmiMethod win32_process -name create -ComputerName $remoteMachine -ArgumentList "notepad" -credential (Get-Credential)

问题是它开始记事本“在后台”(不在用户上下文中),所以在这种情况下他不会看到打开的“记事本”对话框/进程(他会在进程列表中看到记事本在任务经理)。我希望他看到记事本窗口对话框。

有人知道如何实现这个目标吗?

2 个答案:

答案 0 :(得分:10)

使用内置的SchTasks.exe以支持的方式在远程系统上创建进程。它与内置的任务计划程序服务连接,不需要PsExec.exe。

在远程计算机上创建任务(在此示例中以SYSTEM身份运行):

schtasks.exe /create /F /S COMPUTERNAME /RU "NT AUTHORITY\SYSTEM" /RL HIGHEST /SC ONSTART /TN "RemoteProcess" /TR "program.exe \"argument 1\" \"argument 2\""

schtasks.exe /Run /S COMPUTERNAME /I /TN "RemoteProcess"

schtasks.exe /Delete /S COMPUTERNAME /TN "RemoteProcess"

注意:

  • 我们使用ONSTART作为计划,但随后我们手动启动流程并在计划触发之前将其删除。这实际上意味着“现在就做”。您还可以指定具有相同效果的/SC ONCE /SD "01/01/1980" /ST "00:00:00"
  • 此示例以System身份运行。要以登录用户身份运行,只要您知道使用/RU "DOMAIN\USER"的用户。如果用户已登录,则无需密码(/RP选项)即可使用
  • 您可以使用/Query /S COMPUTERNAME /TN "RemoteProcess" /V查找当前状态,例如等待退出,然后阅读退出代码。

您还可以使用任务计划程序脚本对象执行以上所有操作:

答案 1 :(得分:8)

您无法使用WMI或PowerSHell远程处理启动交互式进程。这是安全限制/功能。如果要启动远程交互式进程,则需要使用PSExec。