获取 PSObject 数组大小或计数
Get PSObject array size or count
我创建了一个这样的数组:
$Array = @()
$Item = New-Object PSObject
$Item | Add-Member -Type NoteProperty -Name item1 -Value test
$Item | Add-Member -Type NoteProperty -Name item2 -Value test
$Array += $Item
现在我想添加一个检查以确定 $Item
是否为空,然后再将其添加到 $Array
。如何获取 $Item
的成员数?
我试过类似的东西:
$Item.count
$Item.length
@($Item).count
($Item | Measure).count
($Item | Get-Member).count
$Item.psobject.members.count
但是其中 none 给了我实际的会员数。
正确的方法是:
($Item|Get-Member -Type NoteProperty).count
您可以使用隐藏的 .PsObject.Properties
来检查
$Item.PSobject.Properties.Value.count
或
$Item.PSobject.Properties.Names.count
$Item = New-Object PSObject
$Item.Psobject.Properties.value.count
0
$Item | Add-Member -Type NoteProperty -Name item1 -Value test
$Item.Psobject.Properties.value.count
1
$Item | Add-Member -Type NoteProperty -Name item2 -Value test
$Item.Psobject.Properties.value.count
2
以下 Get_ItemCount
函数可以提供帮助:
Function Get_ItemCount {
$aux = $($item | Get-Member -MemberType NoteProperty)
if ( $aux -eq $null ) {
0
} elseif ( $aux -is [PSCustomObject] ) {
1
} else {
$aux.Count
}
}
$Item = New-Object PSObject
Get_ItemCount # 0
$Item | Add-Member -Type NoteProperty -Name item1 -Value test
Get_ItemCount # 1
$Item | Add-Member -Type NoteProperty -Name item2 -Value test
Get_ItemCount # 2
输出
PS D:\PShell> .\SO064810.ps1
0
1
2
PS D:\PShell>
我创建了一个这样的数组:
$Array = @()
$Item = New-Object PSObject
$Item | Add-Member -Type NoteProperty -Name item1 -Value test
$Item | Add-Member -Type NoteProperty -Name item2 -Value test
$Array += $Item
现在我想添加一个检查以确定 $Item
是否为空,然后再将其添加到 $Array
。如何获取 $Item
的成员数?
我试过类似的东西:
$Item.count
$Item.length
@($Item).count
($Item | Measure).count
($Item | Get-Member).count
$Item.psobject.members.count
但是其中 none 给了我实际的会员数。
正确的方法是:
($Item|Get-Member -Type NoteProperty).count
您可以使用隐藏的 .PsObject.Properties
来检查
$Item.PSobject.Properties.Value.count
或
$Item.PSobject.Properties.Names.count
$Item = New-Object PSObject
$Item.Psobject.Properties.value.count
0
$Item | Add-Member -Type NoteProperty -Name item1 -Value test
$Item.Psobject.Properties.value.count
1
$Item | Add-Member -Type NoteProperty -Name item2 -Value test
$Item.Psobject.Properties.value.count
2
以下 Get_ItemCount
函数可以提供帮助:
Function Get_ItemCount {
$aux = $($item | Get-Member -MemberType NoteProperty)
if ( $aux -eq $null ) {
0
} elseif ( $aux -is [PSCustomObject] ) {
1
} else {
$aux.Count
}
}
$Item = New-Object PSObject
Get_ItemCount # 0
$Item | Add-Member -Type NoteProperty -Name item1 -Value test
Get_ItemCount # 1
$Item | Add-Member -Type NoteProperty -Name item2 -Value test
Get_ItemCount # 2
输出
PS D:\PShell> .\SO064810.ps1
0
1
2
PS D:\PShell>