为什么我不能将所有输出重定向到变量?

时间:2014-12-24 19:12:36

标签: visual-studio powershell io-redirection

所以我对powershell redirection的理解是*>&1应该将所有内容重定向到输出流。

在应用了Entity Framework迁移的任何项目上,从visual studio包管理器终端尝试以下操作。

$m = (Get-Migrations *>&1)

运行后,所有迁移都会打印到窗口,但$m仍为$null

是什么给出的?我做重定向错了吗?

编辑:似乎我可能不是,这应该有效。 Here is the code for Get-Migrations

1 个答案:

答案 0 :(得分:2)

[console]::WriteLine正在使用的Get-MigrationsWrite-Host基本相同,因此它只打印输出,不会像{{1}那样通过管道发送任何内容确实。

我找到了一个名为Lincoln Atkinson的开发人员,他在http://latkin.org/blog/2012/04/25/how-to-capture-or-redirect-write-host-output-in-powershell/

上实施了一个使用Write-Output代理的解决方案

我已经测试了他的功能,似乎需要一些工作,当我通过Write-Host标志时它才对我有用。它也仅适用于-Quiet,因此将其更新为与Write-Host一起使用将是您从此获得回家的任务....

同样看起来虽然WriteLine可能有帮助(同时还有慷慨的输出解析),如果它基于Start-Transcript,但由于某种原因似乎无法捕获Write-Host。 / p>