下面是一个样本PowerShell脚本:重定向标准输入(读主机)PowerShell脚本
$in = read-host -prompt "input"
write-host $in
下面是一个示例“的test.txt”文件:
hello
我们想传递管道从powershell输入。下面是一些我曾尝试:
.\test.ps1 < test.txt
.\test.ps1 < .\test.txt
.\test.ps1 | test.txt
.\test.ps1 | .\test.txt
test.txt | .\test.ps1
.\test.txt | .\test.ps1
get-content .\test.txt | .\test.ps1
即使只是试图呼应输入无法正常工作或:
echo hi | \.test.ps1
上述每个示例不产生错误总是提示用户,而不是接受的管道输入。
注意:我的PowerShell版本表说4.0.-1-1
感谢
编辑/结果:对于那些寻找解决的办法,你不能管输入到PowerShell脚本。你必须更新你的PS文件。请参阅下面的摘录。
所以人们必须编辑PS1文件来支持管道输入。有没有办法重定向标准输入?例如,在C#中,您可以简单地使用Console.ReadLine(),并且可以通过CMD管道连接到该控制台。您不会将任何参数传递给可执行文件,您将重定向输入。 – Peanut
@Peanut可能有一种方法来获得你所追求的,这超出了我的知识范围。 ['Read-Host'文档](https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.utility/read-host)指定它不接受来自管道的值。为了获得_functionality_,我会使用'if'语句。为了将输入重定向到PowerShell,我相信在脚本 – gms0ulman
中除了'Read-Host'外,还需要一些东西,谢谢您研究它。我没有看到巨大的注释,指出“您无法将输入传递到此cmdlet”。 – Peanut