在上下文中启动远程进程

发布于 2024-11-10 15:37:56 字数 340 浏览 3 评论 0原文

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

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

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

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

I am wondering how to start process remotely within the users context like he started it. Let me explain. I know how to start process remotely, so for example I want to start notepad:

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

the problem is that it starts notepad "in the backround" (not in the users context), so in this case he won't see opened "notepad" dialog/process (he will see notepad just in the list of processes in task manager). I want him to see notepad window dialog.

Does anybody know how to achieve that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

画中仙 2024-11-17 15:37:56

使用内置 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 查找当前状态,例如等待退出,然后读取退出代码。

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

Use built-in SchTasks.exe for a supported way to create processes on a remote system. This interfaces with the built-in Task Scheduler service and does not require PsExec.exe.

To create a task on a remote machine (in this example running as 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"

Notes:

  • We use ONSTART as the schedule, but then we start the process manually and delete it before the schedule is fired. This effectively means "just do it now". You could also specify /SC ONCE /SD "01/01/1980" /ST "00:00:00" which would have the same effect.
  • This example is running as System. To run as the logged-in user, provided you know who that is use /RU "DOMAIN\USER". This will work without a password (/RP option) if the user is logged in
    .
  • You can use /Query /S COMPUTERNAME /TN "RemoteProcess" /V to find the current status e.g. to wait for exit and then read the exit code.

You can also do all the above with script using the Task Scheduler Scripting Objects:

自由如风 2024-11-17 15:37:56

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

You cannot start interactive processes using WMI or PowerSHell remoting. This is a security limitation/feature. You need to use PSExec if you want to start remote interactive processes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文