3

我创建一个这样的数组:

$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

但他们都没有给我实际的会员人数。

4

3 回答 3

6

您可以使用 hidden.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
于 2019-03-08T14:34:35.353 回答
1

正确的方法是:

($Item|Get-Member -Type NoteProperty).count
于 2019-03-08T14:02:19.877 回答
1

以下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> .\SO\55064810.ps1
0
1
2
PS D:\PShell>
于 2019-03-08T15:19:38.320 回答