如何在PowerShell中向活动窗口发送按键?VMware脚本故障排查
解决PowerShell打开应用后无法发送按键的问题
你的问题核心出在Start-Process的-Wait参数上:这个参数会让PowerShell脚本一直阻塞到VMware客户端完全关闭,才会继续执行后面的发送按键代码——这就导致发送按键的逻辑根本没机会在应用运行时执行,自然没效果。而你单独运行发送代码时,应用已经处于运行状态,所以能正常工作。
修改后的脚本示例
# 打开VMware客户端,去掉-Wait参数,让脚本继续执行后续代码 Start-Process -FilePath "C:\Program Files\VMware\VMware Horizon View Client\vmware-view.exe" -WindowStyle Normal # 等待应用加载完成(时间可根据实际启动速度调整) Sleep 5 $wshell = New-Object -ComObject wscript.shell # 更精准匹配窗口标题,避免激活错误(可根据实际窗口标题调整) if ($wshell.AppActivate('VMware Horizon View Client')) { Sleep 1 $wshell.SendKeys('~') Sleep 3 $wshell.SendKeys('username') Sleep 2 $wshell.SendKeys('{TAB}') Sleep 1 $wshell.SendKeys('password') } else { Write-Host "无法激活VMware窗口,请检查窗口标题是否正确" }
额外注意事项
- 调整
Sleep的时间:不同机器上应用启动速度不同,需要确保等待足够时间让界面完全加载,再发送按键。 - 确认窗口标题:
AppActivate的参数要和VMware客户端实际的窗口标题完全匹配(可以用任务管理器查看窗口名称),避免激活失败。 - 权限问题:如果脚本需要管理员权限运行,确保启动PowerShell时选择“以管理员身份运行”。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

