远程调用时,Powershell SendKeys访问被拒绝

时间:2017-04-09 14:13:27

标签: c# powershell remote-access sendkeys sendinput

我正在测试一个程序,它监听远程计算机上的按键操作,所以我需要以某种方式生成它们,最好只使用powershell核心。

当我尝试通过invoke-command在远程计算机上使用SendKeys时,我收到了拒绝访问(win32异常或dotnet方法异常),即使凭据管理员权限提供给脚本,并且它在本地工作正常。

我正在以这种方式运行许多脚本,并且这个脚本是唯一失败的脚本(并且它在所有操作系统上都以相同的方式失败)

e.g。

{{1}}

SendInput看起来可能是一个很有前途的替代品,但我找不到一个适合我的例子。

2 个答案:

答案 0 :(得分:2)

原来问题是由于无法访问Windows用户会话。

我通过在远程计算机上创建计划任务并且调用powershell脚本来解决它。这样脚本就可以在用户会话中运行。

否则它似乎在一个无法调用键盘和鼠标API的gui-less会话中运行。

答案 1 :(得分:0)

我在通过远程会话发送键盘键时遇到类似的问题。 为了克服这个问题,我使用了PSexec工具。 https://docs.microsoft.com/en-us/sysinternals/downloads/psexec 将要执行的脚本复制到远程计算机,然后使用PsExec工具从远程计算机运行脚本。

这是语法。我正在使用PsExec工具从另一台Windows计算机运行位于远程主机C驱动器中的脚本“ testscript.ps1”。

PsExec.exe \\ RemoteHostName -u Domain \ UserName -p -i Powershell -noExit -Command“&Invoke-Command -ScriptBlock {C:\ testscript.ps1; stop-Process $ PID}