如何在Powershell中更改PSCustomObject的数组
我可以修改PSCustomObject属性,该属性类似于数组:如何在Powershell中更改PSCustomObject的数组,powershell,Powershell,我可以修改PSCustomObject属性,该属性类似于数组: $a.b.c += "new item" 有可能用函数来做吗?我的意思是将$a.b.c传递给函数并修改它。似乎这不是小事(如果可能的话):我尝试了[ref],但没有成功。对我来说,唯一有效的方法是返回新值并赋值,但这涉及函数调用两侧的$a.b.c表达式,这会使行变长。我也试过: function AddItem { Param( $Obj, $Value, [switch]$Uniq )
$a.b.c += "new item"
有可能用函数来做吗?我的意思是将$a.b.c
传递给函数并修改它。似乎这不是小事(如果可能的话):我尝试了[ref]
,但没有成功。对我来说,唯一有效的方法是返回新值并赋值,但这涉及函数调用两侧的$a.b.c
表达式,这会使行变长。我也试过:
function AddItem {
Param(
$Obj,
$Value,
[switch]$Uniq
)
$MutObj = [System.Collections.ArrayList]$Obj
$MutObj.Add($Value) > $null
}
但这也不起作用,似乎
$a.b.c+=x
实际上是更改$a.b对象的属性“c”
,我在函数范围中没有$a.b
。即使在功能上和身体上进行了适当的修改,它也可以实现吗?我想你要问的是为什么物体在功能上没有变化
Powershell将函数变量作为值进行处理,这意味着它将创建另一个与传入的变量完全相同的变量,并在函数范围内对其进行更改。您要做的是通过引用来实现这一点,这意味着它将与传递到函数中的相同对象发生冲突。这是通过将[Ref]类型添加到传入参数的值中来完成的。在本例中,魔法在这里处理Additem-Object([ref]$JSON)-Value“TEST”
全文
function AddItem {
Param(
$Object,
$Value,
[switch]$Uniq
)
$Object.Value += $Value
}
$JSON = '[["aaa", "bbb"], ["ccc", "ddd"]]' | ConvertFrom-Json
Additem -Object ([ref]$JSON) -Value "TEST"
"0 : $($JSON[0])"
"0 : $($JSON[1])"
"0 : $($JSON[2])"
我想你要问的是为什么这个对象在函数中没有变化 Powershell将函数变量作为值进行处理,这意味着它将创建另一个与传入的变量完全相同的变量,并在函数范围内对其进行更改。您要做的是通过引用来实现这一点,这意味着它将与传递到函数中的相同对象发生冲突。这是通过将[Ref]类型添加到传入参数的值中来完成的。在本例中,魔法在这里处理
Additem-Object([ref]$JSON)-Value“TEST”
全文
function AddItem {
Param(
$Object,
$Value,
[switch]$Uniq
)
$Object.Value += $Value
}
$JSON = '[["aaa", "bbb"], ["ccc", "ddd"]]' | ConvertFrom-Json
Additem -Object ([ref]$JSON) -Value "TEST"
"0 : $($JSON[0])"
"0 : $($JSON[1])"
"0 : $($JSON[2])"
你能告诉我PS自定义对象看起来像什么吗?它的解码JSON文件。我在类似于
[[“aaa”、“bbb”]、[“ccc”、“ddd”]
的属性上测试了此函数。像AddItem$a.b.c 1
一样调用它,其中$a.b.c
就是那些数组。我的意思是,你能发布使PSCUSTOMObject
的代码吗?这是代码函数Read Cfg{$js=Get Content-Raw-Path$args[0]从Json返回ConvertFrom-InputObject$js}
此函数返回带有a.b.c
属性的PSCustomObject,我使用该属性测试该函数。此函数看起来像一个。请后退一步,描述您试图解决的实际问题,而不是您认为的解决方案。您能告诉我PS自定义对象与解码的JSON文件是什么样的吗。我在类似于[[“aaa”、“bbb”]、[“ccc”、“ddd”]
的属性上测试了此函数。像AddItem$a.b.c 1
一样调用它,其中$a.b.c
就是那些数组。我的意思是,你能发布使PSCUSTOMObject
的代码吗?这是代码函数Read Cfg{$js=Get Content-Raw-Path$args[0]从Json返回ConvertFrom-InputObject$js}
此函数返回带有a.b.c
属性的PSCustomObject,我使用该属性测试该函数。此函数看起来像一个。请退后一步,描述您试图解决的实际问题,而不是您认为的解决方案。