我是PowerShell的新手,想要做一些测试。例如,此命令成功等待用户输入:
powershell -command "Read-Host Test"
但是,如果我将“Read-Host Test”传递给PowerShell,则不会等待任何输入。以下是它在shell中的外观:
PS F:\> powershell -command "Read-Host Test"
Test: some input
some input
PS F:\> "Read-Host Test" | powershell -command -
Test:
PS F:\>
有人知道为什么两个命令都有区别吗?
答案 0 :(得分:0)
试试这个
powershell -command "cat test.txt" | powershell -noexit -command -
执行指定的命令(和任何参数),就像它们一样 在Windows PowerShell命令提示符下键入,然后退出,除非 指定了NoExit。 Command的值可以是" - ",一个字符串。或者a 脚本块。
答案 1 :(得分:0)
嗯,cat是Get-Content的别名,所以我猜你在你运行的文件夹中有一个名为test.txt的文件。这是一种非常奇怪的做事方式,我不确定你希望做什么。
至于差异,我可以看到的主要区别在于,您正在直接运行命令,因此它将在与当前会话相同的命名空间中运行。对于另一个,看起来你正在尝试运行一个脚本,有点,并且不是点源,所以它将在受保护的命名空间中运行,这会给你一个不同的结果。