1

我有一个相当长的 Powershell 脚本,我想从另一个脚本中调用它。目前,我正在使用 Invoke-Expression 进行此调用,并且效果很好:

    $argumentList = @()
    $argumentList += ("-oldaccount", ($oldDomain + "\" + $oldUname), "-newaccount", ($newDomain + "\" + $newUname))

    $output = Invoke-Expression "C:\path\to\script.ps1 $argumentList"

我正在调用的脚本使用 Write-Host 将其输出行写入屏幕。我想在调用者脚本中捕获这个输出,这样我就可以把它放在一个日志文件中,理想情况下我想在不修改我正在调用的脚本的情况下这样做。我已经尝试过如何将 Invoke-Expression 的输出通过管道传输到字符串中的建议?没有运气 - 当我在 ISE 中运行代码时,我只是将输出显示到屏幕上并且变量保持为空。我是否需要做一些不同的事情,因为我正在调用另一个 Powershell 脚本而不是可执行文件?

4

1 回答 1

1

Write-Host 不适合您。尝试在您的内部脚本中返回一个值,例如:

InnerScript.ps1 可能是:

return "Test"

然后 OuterScript.ps1 应该是:

$output = Invoke-Expression ".\InnerScript.ps1"

Write-Host($output) 应该显示:

Test

使此示例适应您的特定场景。希望能帮助到你。

于 2014-10-26T18:55:19.323 回答