gpt4 book ai didi

powershell - 使用参数 ("By Reference"参数从 PowerShell 返回对象)?

转载 作者:行者123 更新时间:2023-12-04 11:15:20 24 4
gpt4 key购买 nike

我有一个 PowerShell (2.0) 脚本调用另一个。我不仅要接收主输出,还要接收一个可以单独使用的附加对象,例如在消息中显示摘要行。

让我们将 Test2.ps1 作为被调用的脚本:

param([String]$SummaryLine)
$Issues = "Potentially long list of issues"
$SummaryLine = "37 issues found"
$Issues

而 Test1.ps1 作为调用它的脚本:
$MainOutput = & ".\Test2.ps1" -SummaryLine $SummaryOutput
$MainOutput
$SummaryOutput

输出很简单:
Potentially long list of issues

尽管参数 $SummaryLine 由 Test2 填充,但 $SummaryOutput 在 Test1 中仍未定义。

在调用 Test2 之前定义 $SummaryOutput 没有帮助;它只是保留在调用 Test2 之前分配的值。

我已经尝试将 $SummaryOutput 和 $SummaryLine 设置为 [ref] 变量(显然可以用函数来做),但是在调用 Test2 后 $SummaryOutput.Value 属性为 $null。

在 PowerShell 中是否可以在参数中返回值?如果没有,有什么解决方法?在Test2中直接分配父级范围的变量?

最佳答案

Ref 应该有效,你没有说你尝试时发生了什么。下面是一个例子:

测试.ps1:

Param ([ref]$OptionalOutput)

"Standard output"
$OptionalOutput.Value = "Optional Output"

运行:
$x = ""
.\Test.ps1 ([ref]$x)
$x

这是您可能更喜欢的替代方案。

测试.ps1:
Param ($OptionalOutput)

"Standard output"
if ($OptionalOutput) {
$OptionalOutput | Add-Member NoteProperty Summary "Optional Output"
}

运行:
$x = New-Object PSObject
.\Test.ps1 $x
$x.Summary

关于powershell - 使用参数 ("By Reference"参数从 PowerShell 返回对象)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5175377/

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