我正在编写一个相当冗长的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再次传递命令行函数().
正如我所说,实际的功能部分工作得很好,但我无法将返回代码传递给我的日志文件.
如果我可以假设$ batch包含外部可执行文件,则返回代码将位于自动变量$ LASTEXITCODE中 - invoke-expression的返回包含由外部应用程序写入STDOUT和STDERR的内容,或者由PowerShell输出或错误流写入脚本的内容.如果你调用了它,它将不包含可执行文件的dos样式返回码.
| 归档时间: |
|
| 查看次数: |
2784 次 |
| 最近记录: |