【问题标题】:start remote process within the context在上下文中启动远程进程
【发布时间】:2011-09-04 22:13:57
【问题描述】:

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

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

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

有人知道如何实现吗?

【问题讨论】:

    标签: powershell remote-access


    【解决方案1】:

    使用内置的 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",这将产生相同的效果。
    • 此示例作为系统运行。要以登录用户身份运行,前提是您知道是谁使用/RU "DOMAIN\USER"。如果用户登录,这将在没有密码的情况下工作(/RP 选项) .
    • 您可以使用/Query /S COMPUTERNAME /TN "RemoteProcess" /V 查找当前状态,例如等待退出,然后读取退出代码。

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

    【讨论】:

    • tip - 在第一个命令中添加/F标志,以避免在有剩菜的情况下提示已经存在
    【解决方案2】:

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

    【讨论】:

    • 是的,感谢您的参考,对我有用的命令是:.\PsExec.exe \\$remoteMachine -u $username -p $password -i -d "notepad"
    猜你喜欢
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 2014-06-01
    • 2018-05-09
    • 2018-08-16
    • 1970-01-01
    相关资源
    最近更新 更多