gpt4 book ai didi

powershell - 如何在 Powershell 脚本中捕获返回值

转载 作者:行者123 更新时间:2023-12-02 23:39:24 25 4
gpt4 key购买 nike

我有一个 powershell 脚本 (.ps1),它执行其他具有返回值的 Powershell 脚本

我使用以下命令调用脚本:

$result = Invoke-Expression -Command ".\check.ps1 $fileCommon"

Write-Output $result

输出仅是具有其他脚本的Write-Ouput,但不是返回值$true$false

如何捕获其他脚本的返回值?

最佳答案

PowerShell 中 return 语句后面的表达式的计算方式与其他表达式一样。如果它产生输出,则将其写入标准输出。您的 $result 接收脚本写入 stdout 的所有内容。如果不止一件事被写入标准输出,您将在一个数组中获取这些内容。

例如,如果您的 check.ps1 如下所示:

Write-Output "$args[0]"
return $false

你用它来调用它

$result = &".\check.ps1" xxx

那么$result将是一个大小为2的对象数组,值为“xxx”(字符串)和“False”( bool )。

如果您无法更改脚本,以便仅将返回值写入标准输出(这将是最干净的方法),您可以忽略除最后一个值之外的所有内容:

$result = &".\check.ps1" xxx | select -Last 1

现在 $result 将仅包含“False”作为 bool 值。

如果您可以更改脚本,另一个选择是传递变量名称并在脚本中设置它。

调用:

&".\check.ps1" $fileCommon "result"
if ($result) {
# Do things
}

脚本:

param($file,$parentvariable)
# Do things
Set-Variable -Name $parentvariable -Value $false -Scope 1

-Scope 1 引用父(调用者)范围,因此您可以从调用代码中读取它。

关于powershell - 如何在 Powershell 脚本中捕获返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50578510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com