我在一个函数中有一个数组对象变量作为[ref] $InsertColHeadName = @(),然后使用param ([ref] $InsertColHeadName)调用另一个函数。然后,在被调用的函数中,我尝试引用param ([ref] $InsertColHeadName) += expression中的参数集。该表达式返回一个字符串。我在该行中放置了一个断点,并尝试使用单引号将字符串强制为例如:([ref] $InsertColHeadName) += 'xyz';

我尝试使用Google搜索,但似乎找不到合适的解决方案。

我收到以下错误:

方法调用失败,因为[System.Management.Automation.PSReference`1
[[System.Management.Automation.PSReference`1
[[System.Management.Automation.PSReference`1
[[System.Object [],mscorlib,版本= 4.0.0.0,文化=中性,
PublicKeyToken = b77a5c561934e089]],System.Management.Automation,版本= 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35]],System.Management.Automation,
版本= 3.0.0.0,文化=中立,PublicKeyToken = 31bf3856ad364e35]]]不
包含一个名为“op_Addition”的方法。
在第1行:char:1
+([ref] $ InsertColHeadName)+ ='部门编号';
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo:InvalidOperation:(op_Addition:String)[],RuntimeException
+ FullyQualifiedErrorId:MethodNotFound

最佳答案

在函数内部,InsertColHeadName已经是一个引用。向其添加[ref]会创建该引用的引用。

而是尝试:

$InsertColHeadName.Value += expression

这是一个例子:
function AddMe([ref]$array)
{
    $array.value += 40
}

$x = @(1..10)

Write-Host Before Calling AddMe $x
AddMe ([ref]$x)
Write-Host After Calling AddMe $x

输出:
Before Calling AddMe 1 2 3 4 5 6 7 8 9 10
After Calling AddMe 1 2 3 4 5 6 7 8 9 10 40

关于powershell - 设置通过引用传递的数组变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39353277/

10-13 07:49