如何让PowerShell脚本回答用户输入的提示? [英] How to make a Powershell script answer a prompt for user input?

查看:0
本文介绍了如何让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的答案,要么无济于事:

推荐答案

  1. 请勿将$input用作变量名,因为这是PowerShell中的自动变量(请参见help about_Automatic_Variables)。

  2. 确定可执行文件是否可以接受命令行参数,而不是停止或提示输入。如果它可用,显然是首选的。

  3. 是否可以告诉PowerShell自动将输入发送到任意可执行文件取决于该可执行文件的设计。如果可执行文件允许您向其发送标准输入,则可以运行类似

    的代码
    "test" | myexecutable.exe
    
    在本例中,PowerShell将字符串test和返回作为标准输入提供给可执行文件。如果可执行文件接受标准输入,则这将起作用。

    如果可执行文件使用标准输入,则您必须执行一些不同的操作,如向窗口发送击键。我认为发送击键是最后的手段,也是一种不利于自动化的脆弱解决方案。

这篇关于如何让PowerShell脚本回答用户输入的提示?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆