【发布时间】:2018-02-19 15:28:37
【问题描述】:
假设我有一个 PowerShell 数组 $Sessions = @(),我将用 PSCustomObjects 填充它。如何将自定义属性添加到数组本身?例如。所以我可以拥有内置的$Sessions.Count 和我想设置为活动会话数的$Sessions.Active。
我知道我可以向 PSCustomObjects 添加属性(以一种肮脏的方式)
$MyCustomObject = "" | Select-Object Machine, UserName, SessionTime
但尽管在数组上这样做不会导致属性被添加。
那么我怎样才能实现我的目标呢?有没有办法创建自定义数组?
【问题讨论】:
-
只用
Add-Member -InputObject $sessions ...?这就是它的目的 -
但请注意,附加到该数组 (
$sessions += ...) 将替换该数组,从而删除附加属性。更安全的方法是使用具有不同属性的数组和状态的自定义对象。话虽如此,根据您要使用它的目的,使用不同的列表变量$activeSessions/$inactiveSessions而不是向列表中添加属性或向个人添加Active属性可能更合适会话对象。 -
@Matt 如果您只想将 postet 作为答案...我实际上出于懒惰而滥用了
Select-Object,这使我无法解决问题。谢谢。 @AnsgarWiechers 感谢有关+=的提示,让我免于误拨Add-Member电话。 -
我忘了提到你所做的
Select是一种完全可以接受的创建空白石板对象的方法。在这方面每个人都有自己的。您的方法的唯一挫折在于它对于类型和复杂属性之类的东西有多基本。还是没有问题。
标签: arrays powershell properties pscustomobject