我知道自定义对象是这样创建的:
$obj=new-object psobject然后我知道你可以像这样添加成员(和值):
$obj | Add-Member noteproperty name Jeff现在的问题是,如何填充对象,添加和删除值的“行”?
我发现的唯一方法是创建一个数组,然后在其中推送对象,如下所示:
$array = @()
$array+=new-object PSObject -Property @{Name="Jeff"}
$array+=new-object PSObject -Property @{Name="Joe"}
$array+=new-object PSObject -Property @{Name="John"}等等。
有没有一种直接的方法来“递增”对象中成员的值?
$obj+=(Name=John) 不起作用。
谢谢
发布于 2012-09-04 21:21:33
在上面的例子中,我相信你最终得到的是一个System.Management.Automation.PSCustomObject,而不是一个数组。当我构建包含自定义对象的报表时,我使用类似于您正在做的事情。但是,如果您真的只是用它来存储一个属性,那么它可能有些夸张。你可以这样做:
$names += "John"
$names += "Fred"如果你真的想在整个脚本中向对象添加新的注释属性,我就是这样做的。请记住,PowerShell不喜欢添加同名的注释属性,因此,如果这样做,您只需使用=设置该属性
下面是我所做的一个例子:
$params += @{Name = $_.Name}
$params += @{Calculation = $someCalculatedValue}
$collection += New-Object -Type PSObject -Property $params发布于 2018-08-24 09:08:39
这是一个非常晚的回复,但我希望它能帮助需要计算对象的人。
让我们从想要统计的用户列表开始。
> $users = 1..10 | % {New-object psobject -Property @{ Name = "User $_"; Age = $_ } }
> $users
Age Name
--- ----
1 User 1
2 User 2
3 User 3
4 User 4
5 User 5
6 User 6
7 User 7
8 User 8
9 User 9
10 User 10要对它们进行计数,请将它们放入计数器的哈希表中
> # Create hash table
> $counter = @{}
> # Assign users as keys in the table
> $users | % { $counter.Add($_, 0) }
> $counter
Name Value
---- -----
@{Age=4; Name=User 4} 0
@{Age=1; Name=User 1} 0
@{Age=3; Name=User 3} 0
@{Age=5; Name=User 5} 0
@{Age=10; Name=User 10} 0
@{Age=9; Name=User 9} 0
@{Age=8; Name=User 8} 0
@{Age=7; Name=User 7} 0
@{Age=6; Name=User 6} 0
@{Age=2; Name=User 2} 0然后,无论何时在脚本中遇到用户,都可以递增计数器。例如,将“用户1”递增两次,“用户4”递增一次
> $counter[$users[0]] += 1
> $counter[$users[0]] += 1
> $counter[$users[3]] += 1
> $counter
Name Value
---- -----
@{Age=4; Name=User 4} 1
@{Age=1; Name=User 1} 2
@{Age=3; Name=User 3} 0
@{Age=5; Name=User 5} 0
@{Age=10; Name=User 10} 0
@{Age=9; Name=User 9} 0
@{Age=8; Name=User 8} 0
@{Age=7; Name=User 7} 0
@{Age=6; Name=User 6} 0
@{Age=2; Name=User 2} 0https://stackoverflow.com/questions/12263938
复制相似问题