我有一个相当冗长的Powershell脚本,我想从另一个脚本调用。目前,我正在使用Invoke-Expression进行此调用,并且运行良好:
$argumentList = @()
$argumentList += ("-oldaccount", ($oldDomain + "\" + $oldUname), "-newaccount", ($newDomain + "\" + $newUname))
$output = Invoke-Expression "C:\path\to\script.ps1 $argumentList"
我正在调用的脚本使用Write-Host将其输出行写入屏幕。我想在调用者脚本中捕获此输出,以便我可以将其放在日志文件中,理想情况下,我想在不修改我正在调用的脚本的情况下执行此操作。我在How to pipe output of Invoke-Expression to string?尝试了这个建议没有运气 - 当我在ISE中运行代码时,我只是将输出输出到屏幕并且变量保持为空。我是否需要做一些不同的事情,因为我正在调用另一个Powershell脚本而不是可执行文件?
答案 0 :(得分:0)
写主机不适合你。尝试在内部脚本中返回一个值,例如:
InnerScript.ps1可以是:
return "Test"
然后OuterScript.ps1应为:
$output = Invoke-Expression ".\InnerScript.ps1"
Write-Host($ output)应显示:
Test
根据您的具体情况调整此示例。希望它有所帮助。