自动执行PowerShell响应以提示

时间:2018-11-16 02:36:26

标签: powershell

创建调用应用程序cmdlet的PowerShell脚本。然后,当cmdlet运行时,它会提示您进行响应,并且脚本将挂起。该cmdlet没有任何参数。有什么方法可以通过程序进行响应吗?我尝试了ECHO,但这不起作用。 script hanging

1 个答案:

答案 0 :(得分:3)

获取PowerShell脚本的唯一方法,该脚本通过主机(通常是通过Read-Host)来请求输入,以便管道而不是从键盘读取输入 用于作为外部 PowerShell实例运行脚本。

一个简单的例子:

# Does NOT work: pipeline input is IGNORED and Read-Host "hangs", i.e.,
# it waits for interactive input.
'y' | & { Read-Host "Y/N?" }


# OK: By launching the command via a new PowerShell instance,
#     Read-Host reads from the pipeline (stdin).
#     To run a script file externally, use -file instead of -command.
'y' | powershell -noprofile -command 'Read-Host "Y/N?"'

注意:通过外部PowerShell实例运行脚本/命令需要付出一定的代价:

  • 就性能而言,创建新的PowerShell流程成本很高。

  • 默认情况下,
  • 新实例的输出将为文本(字符串),而不是 objects

    • 您可以通过将-OutputFormat xml传递给外部实例并通过Import-CliXml对结果进行后处理,来近似通常的处理过程,但这是有限制的。