gpt4 book ai didi

.net - PowerShell 添加成员到数组项

转载 作者:行者123 更新时间:2023-12-05 00:08:26 25 4
gpt4 key购买 nike

我正在尝试对数组中的所有项目使用 PowerShell Add-Member cmd,然后访问我稍后添加的成员,但它没有显示。

您可以在以下代码的输出中看到 NoteProperty 似乎存在于 foreach 语句的范围内,但它不存在于该范围之外的同一对象上。

任何方式让这个脚本显示 isPrime在两次调用 Get-Member 时?

$p = @(1)
$p[0] | %{ add-member -inputobject $_ -membertype noteproperty -name isPrime -value $true; $_ | gm }
$p[0] | gm

输出
   TypeName: System.Int32

Name MemberType
---- ----------
CompareTo Method
Equals Method
GetHashCode Method
GetType Method
GetTypeCode Method
ToString Method
isPrime NoteProperty


CompareTo Method
Equals Method
GetHashCode Method
GetType Method
GetTypeCode Method
ToString Method

最佳答案

您遇到的问题是 1,一个整数,是 .NET 中的值类型,当它被传递时,它被复制(按值传递)。因此,您成功修改了 1 的副本,但未修改数组中的原始副本。如果将 1 装箱(或强制转换)为对象(引用类型),则可以看到这一点,例如:

$p = @([psobject]1)
$p[0] | %{ add-member NoteProperty isPrime $true; $_ | gm }
$p[0] | gm

OP (spoon16) 答案

这就是我的脚本中的代码最终看起来的样子。如果可以优化,请随时编辑。
$p = @() #declare array
2..$n | %{ $p += [psobject] $_ } #initialize
$p | add-member -membertype noteproperty -name isPrime -value $true

关于.net - PowerShell 添加成员到数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1382492/

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