【发布时间】:2017-08-04 22:06:53
【问题描述】:
我正在尝试编写一个自动化脚本,根据不同的条件调用不同的命令(可执行文件、bats 或 cmdlet)。这些命令输出几行日志和进度。
我正在尝试使用类来提高代码的可重用性。但是,从类方法内部调用这些命令时,我无法获得命令的输出。
例如,使用以下代码:
Class SomeClass
{
static [void] CallSomeExe()
{
& "Path\To\SomeExe.exe" args
}
}
`& "Path\To\SomeExe.exe" args` # Shows command output in shell
`[Utils]::CallSomeExe()` # Doesn't show any output in shell
如果我在主函数中直接调用命令(& "Path\To\SomeExe.exe" args),则 exe 的输出将显示在 shell 中,但如果我在主函数([Utils]::CallSomeExe())中调用静态方法,则不会有任何输出显示。
显示日志的解决方案是捕获调用结果($out = & "Path\To\SomeExe.exe" args)并将其返回给主函数。但是,通常它是一个缓慢的过程并显示进度信息,我更愿意将其流式传输,而不是在调用结束时等待所有输出。
我很困惑,因为这在函数内部有效,但在类内部无效。
有没有办法让它在从静态方法调用时显示输出?
【问题讨论】:
标签: powershell