首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >new-object psobject add value

new-object psobject add value
EN

Stack Overflow用户
提问于 2012-09-04 20:55:17
回答 2查看 9K关注 0票数 1

我知道自定义对象是这样创建的:

代码语言:javascript
复制
$obj=new-object psobject

然后我知道你可以像这样添加成员(和值):

代码语言:javascript
复制
$obj | Add-Member noteproperty name Jeff

现在的问题是,如何填充对象,添加和删除值的“行”?

我发现的唯一方法是创建一个数组,然后在其中推送对象,如下所示:

代码语言:javascript
复制
$array = @()
$array+=new-object PSObject -Property @{Name="Jeff"}
$array+=new-object PSObject -Property @{Name="Joe"}
$array+=new-object PSObject -Property @{Name="John"}

等等。

有没有一种直接的方法来“递增”对象中成员的值?

代码语言:javascript
复制
$obj+=(Name=John) 

不起作用。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-04 21:21:33

在上面的例子中,我相信你最终得到的是一个System.Management.Automation.PSCustomObject,而不是一个数组。当我构建包含自定义对象的报表时,我使用类似于您正在做的事情。但是,如果您真的只是用它来存储一个属性,那么它可能有些夸张。你可以这样做:

代码语言:javascript
复制
$names += "John"
$names += "Fred"

如果你真的想在整个脚本中向对象添加新的注释属性,我就是这样做的。请记住,PowerShell不喜欢添加同名的注释属性,因此,如果这样做,您只需使用=设置该属性

下面是我所做的一个例子:

代码语言:javascript
复制
$params += @{Name = $_.Name}
$params += @{Calculation = $someCalculatedValue}
$collection += New-Object -Type PSObject -Property $params
票数 0
EN

Stack Overflow用户

发布于 2018-08-24 09:08:39

这是一个非常晚的回复,但我希望它能帮助需要计算对象的人。

让我们从想要统计的用户列表开始。

代码语言:javascript
复制
> $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

要对它们进行计数,请将它们放入计数器的哈希表中

代码语言:javascript
复制
 > # 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”递增一次

代码语言:javascript
复制
> $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}          0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12263938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档