【发布时间】:2019-02-26 18:13:13
【问题描述】:
这两个命令的根本区别是什么?
$myVar = & "notepad.exe"
和
& "notepad.exe" | Set-Variable "myVar"
对于第一个,命令立即返回,而无需等待 exe 终止,这不是我所期望的。
对于第二个(或任何其他带有管道的东西,例如| Out-File 或| Set-Content),该命令会正确等待 exe 将结果写入标准输出并终止。
【问题讨论】:
-
你确定吗?它是一个什么样的程序?在这两种情况下,Powershell 都应该等待 exe 完成。 (刚刚再次测试以确认)。你能举一个实际可验证的例子吗?
-
我的程序是 LabVIEW,但我观察到与例如 notepad.exe 相同(
$myVar = & notepad.exe立即返回,& notepad.exe | Set-Variable "myVar"仅在我关闭窗口时返回)。 -
到目前为止我只能说,不同的是,在第二个版本中,程序是挂在管道上的。这将给出相同的行为:
$myvar = & notepad.exe|%{$_}我很清楚为什么会这样。我认为实际的 UI 应用程序与控制台是不同的(比较 ping.exe:powershell 在两种情况下都等待) -
有关信息,我的程序是LabVIEW,它也是一个UI应用程序。
标签: powershell