asg*_*ant 6 powershell command-prompt
我有一个 Powershell 脚本,它需要执行一个命令行可执行文件来提示用户输入(没有命令行参数)。像这样的东西:
# promptsForInput.ps1
$someInput = Read-Host "Gimme some input"
# do something with $someInput
Run Code Online (Sandbox Code Playgroud)
实际的可执行文件是一个编译后的二进制文件,我无法修改,但是这个示例脚本是为了这个问题。我的 Powershell 脚本调用可执行文件:
# myScript.ps1
.\promptsForInput.ps1
Run Code Online (Sandbox Code Playgroud)
在运行时,我被提示输入一些东西:
> .\myScript.ps1
Gimme some input:
Run Code Online (Sandbox Code Playgroud)
我需要能够在没有用户干预的情况下填写该输入请求。当promptsForInput.ps1提示用户输入时,我需要myScript.ps1输入所需的值并继续执行脚本。
关于 SO 的类似问题要么有特定于特定 exe 的答案,要么没有帮助:
不要$input用作变量的名称,因为它是 PowerShell 中的自动变量(请参阅 参考资料help about_Automatic_Variables)。
确定可执行文件是否可以接受命令行参数而不是停止或提示输入。如果可用,这显然是首选。
您是否可以告诉 PowerShell 自动将输入发送到任意可执行文件取决于该可执行文件的设计。如果可执行文件允许您向其发送标准输入,您可以运行类似
"test" | myexecutable.exe
Run Code Online (Sandbox Code Playgroud)
在此示例中,PowerShell 将提供字符串test和返回值作为可执行文件的标准输入。如果可执行文件接受标准输入,那么这将起作用。
如果可执行文件并没有使用标准输入,那么你将不得不做这样发送键击到窗口不同的东西。我认为发送击键是最后的手段,也是一种不适合自动化的脆弱解决方案。