如何让PowerShell脚本回答用户输入的提示? [英] How to make a Powershell script answer a prompt for user input?
本文介绍了如何让PowerShell脚本回答用户输入的提示?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个PowerShell脚本,它需要执行一个命令行可执行文件,该命令行可执行文件提示用户输入(没有命令行参数)。大概是这样的:
# promptsForInput.ps1
$someInput = Read-Host "Gimme some input"
# do something with $someInput
实际的可执行文件是编译后的二进制文件,我无法对其进行修改,但此示例脚本出于本问题的目的进行了修改。我的PowerShell脚本调用可执行文件:
# myScript.ps1
.promptsForInput.ps1
在运行时,系统提示我输入以下内容:
> .myScript.ps1
Gimme some input:
我需要能够在没有用户干预的情况下填写输入请求。当promptsForInput.ps1
提示用户输入时,我需要myScript.ps1
输入所需的值并继续执行脚本。
SO上的类似问题要么有特定于特定EXE的答案,要么无济于事:
- How to fill the prompt in powershell script
- Powershell: Uninstall Software that has prompts for user input
- How to "answer" a console input prompt in PowerShell (in the code)
- How to write to user input in powershell
推荐答案
请勿将
$input
用作变量名,因为这是PowerShell中的自动变量(请参见help about_Automatic_Variables
)。确定可执行文件是否可以接受命令行参数,而不是停止或提示输入。如果它可用,显然是首选的。
是否可以告诉PowerShell自动将输入发送到任意可执行文件取决于该可执行文件的设计。如果可执行文件允许您向其发送标准输入,则可以运行类似
的代码
在本例中,PowerShell将字符串"test" | myexecutable.exe
test
和返回作为标准输入提供给可执行文件。如果可执行文件接受标准输入,则这将起作用。如果可执行文件不使用标准输入,则您必须执行一些不同的操作,如向窗口发送击键。我认为发送击键是最后的手段,也是一种不利于自动化的脆弱解决方案。
这篇关于如何让PowerShell脚本回答用户输入的提示?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文