gpt4 book ai didi

arrays - PowerShell替换数组中的值

转载 作者:行者123 更新时间:2023-12-03 00:56:22 24 4
gpt4 key购买 nike

我在PowerShell中是一个非常新的人,我需要一些支持如何替换数组中的值。请看我的例子:

[array[]]$nodes = @()
[array[]]$nodes = get-NcNode | select-object -property Node, @{Label = "slot"; expression = {@("a")*4}}

$nodes
Node slot
---- ----
nn01 {a,a,a,a}
nn02 {a,a,a,a}
nn03 {a,a,a,a}
nn04 {a,a,a,a}

$nodes[0].slot[0]
a

$nodes[0].slot[0] = "b" #I try to replace a with b
$nodes[0].slot[0]
a #It didn’t work

$nodes[0].slot.SetValue("b",0) #I try to replace a with b
$nodes[0].slot[0]
a #It didn’t work

$nodes[0] | Add-Member -MemberType NoteProperty -Name slot[0] -Value "b" -Force
$nodes[0]
Node slot slot[0]
---- ---- -------
nn01 {a,a,a,a} b #That’s not what I wanted

最佳答案

如果您确实需要一个数组数组(类型[array[]]),则可以按以下方法解决您的问题:

$nodes[0][0].slot[0] = "b" 
也就是说,每个 $nodes元素本身就是一个数组,而您填充 $nodes的方式(由 [pscustomobject]管道输出的每个 get-NcNode | select-object ...实例都变成了自己的 $nodes元素),但每个元素都是一个单元素子数组-因此需要额外的 [0]索引访问。[1]

但是,在您的情况下,听起来像一个常规数组( [array],实际上与 [object[]]相同)就足够了,其中每个元素都包含一个(单个,标量的) [pscustomobject]:
# Type constraint [array] creates a regular [object[]] array.
[array] $nodes = get-NcNode | select-object -property Node, @{Label = "slot"; expression = {@("a")*4}}
像这样定义 $nodes,您的原始代码应该可以使用。

[1]获得值-而不是设置-多亏了PowerShell的 member enumeration功能,您无需附加索引就可以摆脱困境。

关于arrays - PowerShell替换数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62873789/

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