Powershell在静态方法内调用表达式输出

Powershell在静态方法内调用表达式输出,powershell,Powershell,我正在尝试执行一个自动化脚本,根据不同的条件调用不同的命令(可执行文件、BAT或cmdlet)。这些命令输出几行日志和进度 我正在尝试使用类来提高代码的可重用性。但是,当从类方法内部调用这些命令时,我无法获得命令的输出 例如,使用此代码: Class SomeClass { static [void] CallSomeExe() { & "Path\To\SomeExe.exe" args } } `& "Path\To\SomeExe.

我正在尝试执行一个自动化脚本,根据不同的条件调用不同的命令(可执行文件、BAT或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
)并将其返回到主函数。然而,由于它通常是一个缓慢的过程,并且显示进度信息,我更愿意流式处理它,而不是在调用结束时等待所有的输出

我很困惑,因为它在函数中工作,但在类中不工作


当从静态方法调用时,有没有办法让它显示输出?

类在输出时遵循更传统的结构。您需要定义输出类型并显式返回

Class SomeClass
{
    static [string[]] CallSomeExe()
    {
        return & "Path\To\SomeExe.exe" args
    }
}

原始脚本中的
[void]
表示它不返回输出。

我相信这就是我提出的解决方案,并说它可以解决我的问题。因为如果我调用一个编译某些内容并写入自定义输出、警告或错误的命令,我希望看到实时输出。等待5或10分钟以查看完整输出,这不是我的案例的解决方案。