创建调用应用程序cmdlet的PowerShell脚本。然后,当cmdlet运行时,它会提示您进行响应,并且脚本将挂起。该cmdlet没有任何参数。有什么方法可以通过程序进行响应吗?我尝试了ECHO,但这不起作用。 script hanging
答案 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
对结果进行后处理,来近似通常的处理过程,但这是有限制的。