You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell:Script2如何自动响应Script1的Read-Host输入请求?

问题分析与解决方案

错误原因

你的Script2是按顺序执行的:先运行./Script1.ps1,此时PowerShell会阻塞在Script1的Read-Host命令,等待用户手动输入。只有当你手动完成输入、Script1执行结束后,才会继续执行后面的SendKeys代码——这就是为什么SendKeys总是在手动输入后才触发的核心问题。

解决方案

方法1:管道传递输入(推荐,稳定可靠)

利用PowerShell的管道特性,直接给Script1的Read-Host传递输入内容,不需要模拟按键:

# 传递空字符串,等价于直接按回车
"" | ./Script1.ps1

# 如果需要输入指定内容(比如"myPassword"),改成:
# "myPassword" | ./Script1.ps1

方法2:后台启动Script1+模拟按键

如果必须用SendKeys的方式,需要让Script1在后台独立进程运行,避免阻塞Script2的执行:

# 启动新的PowerShell进程运行Script1
Start-Process powershell.exe -ArgumentList "-File ./Script1.ps1"
# 等待窗口初始化(时间可根据实际情况调整)
Start-Sleep -Seconds 2

$wshell = New-Object -ComObject wscript.shell
# 激活目标窗口(通过标题匹配)
$wshell.AppActivate('bullshit')
# 发送回车(或指定内容+回车)
$wshell.SendKeys('{ENTER}')
# 若要输入内容:$wshell.SendKeys('myPassword{ENTER}')

注意:方法2依赖窗口激活和延迟等待,稳定性不如方法1,如果窗口标题冲突、延迟时间不足,都可能导致失效。

内容的提问来源于stack exchange,提问作者Blu3Rat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:45:13