PowerShell - 输出到不起作用的变量

JNK*_*JNK 2 powershell

我正在编写一个相当冗长的PowerShell脚本来执行许多功能.在大多数情况下,一切都进展顺利.

但是,我在脚本的所有级别运行的另一个函数是一个非常详细的日志.我将发布命令行部分作为示例(简化):

    $Batch = $RunMe[1]
    $ResultCode = (Invoke-Expression $Batch -ErrorAction Stop)
    $ResultCode
Run Code Online (Sandbox Code Playgroud)

我的预期结果是:

Return Code 0

然后我会记录它.相反,我得到的是:

C:\batchfiles\batchfile.bat argument

这是我Invoke-Expression用来执行的命令.

一些快速解释变量:

$RunMe 是一个存储命令的数组(0是"Batch"或"Proc",1是要运行的命令)

$Batch 是在编写的代码中创建的(这是对它的第一个引用)

$CurrFileToExec是当前正在处理的文件(脚本一次在文件夹上运行).我正在使用它来替换我从SQL获得的命令行的字符串.

我无法$ResultCode传递命令的正确输出.它只是$Batch再次传递命令行函数().

正如我所说,实际的功能部分工作得很好,但我无法将返回代码传递给我的日志文件.

x0n*_*x0n 5

如果我可以假设$ batch包含外部可执行文件,则返回代码将位于自动变量$ LASTEXITCODE中 - invoke-expression的返回包含由外部应用程序写入STDOUT和STDERR的内容,或者由PowerShell输出或错误流写入脚本的内容.如果你调用了它,它将不包含可执行文件的dos样式返回码.