PowerShell使exes命令无效?

PowerShell使exes命令无效?,powershell,command,return,exe,Powershell,Command,Return,Exe,我错误地使用了下面的PowerShell构造来捕获标准输出: $output = devenv.exe ..... 或者,如果我将exe作为函数参数调用: obj.LogOutput((devenv.exe ...)) 执行这两个命令中的任何一个之后,在同一命令窗口中执行的所有未来命令都不会执行任何操作。例如,如果我运行devenv、echo或xcopy,它们会立即返回而不执行。如果运行“devenv/?”则不会生成任何输出。如果我关闭命令窗口并启动一个新窗口,一切都会恢复正常。我能够再

我错误地使用了下面的PowerShell构造来捕获标准输出:

 $output = devenv.exe .....
或者,如果我将exe作为函数参数调用:

 obj.LogOutput((devenv.exe ...))
执行这两个命令中的任何一个之后,在同一命令窗口中执行的所有未来命令都不会执行任何操作。例如,如果我运行devenv、echo或xcopy,它们会立即返回而不执行。如果运行“devenv/?”则不会生成任何输出。如果我关闭命令窗口并启动一个新窗口,一切都会恢复正常。我能够再次执行这些命令

有什么好处?我知道语法不正确,但PowerShell从未在语法上出错。相反,在执行后续EXE时,它会自动失败(顺便说一句,PowerShell命令继续工作)。那我的语法出了问题怎么办?我这样问主要是因为我再次看到这种行为,但我可以在我的脚本中找到上述任何构造

更新:我最好的猜测是这个结构:

$o = new-object psobject
$o | add-member -force -memberType ScriptMethod -name Test -value { param($t) $t > c:\temp\output.txt" }
$o.Test((xcopy /?))
这与我的原始脚本中导致问题的代码行非常相似,但这段独立代码不会重现问题。在任何情况下,我都不会想到任何语法会导致所有的EXE无法操作。


显然,将数组传递到写入主机会破坏未来的命令输入。

如果按Ctrl+C会发生什么情况?一旦可以更好地复制,您应该在connect.microsoft.com for PowerShell上提交一个错误。我可以用一个文件复制此错误,但不能用其他几个文件。因此,我尝试了第一个文件的副本,删除了大部分内容,但没有出现问题。所以我认为它与某些内容有关,而不仅仅是一个数组。我可以说问题文件没有任何引用。