代码之家  ›  专栏  ›  技术社区  ›  JNK

PowerShell-输出到不工作的变量

  •  2
  • JNK  · 技术社区  · 14 年前

    我正在编写一个相当长的PowerShell脚本来执行许多功能。大部分情况下,一切都很顺利。

    然而,

        $Batch = $RunMe[1]
        $ResultCode = (Invoke-Expression $Batch -ErrorAction Stop)
        $ResultCode
    

    我的预期结果是:

    Return Code 0

    C:\batchfiles\batchfile.bat argument

    这是我使用的命令 Invoke-Expression

    快速解释变量:

    $RunMe 是存储命令的数组(0是“批处理”或“Proc”,1是要运行的命令)

    $Batch

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

    我找不到 $ResultCode $批处理 )又来了。

    2 回复  |  直到 14 年前
        1
  •  5
  •   x0n    14 年前

    如果可以假设$batch包含外部可执行文件,则返回代码将位于自动变量$LASTEXITCODE中-invoke expression的返回由外部应用程序写入STDOUT和STDERR的内容或由脚本写入powershell输出或错误流的内容组成。它将不包含可执行文件的dos风格的返回代码,如果您调用了一个。

        2
  •  4
  •   JNK    14 年前

    解决方法是修改我的 $Batch 要添加的变量 cmd /c Invoke-Expression 以及输出参数的作用域。我添加了一行:

    $Batch = "cmd /c " + $Batch

    然后又跑了,然后 $ResultCode