确定PSCustomObject的数组是否包含具有属性值的实例

cra*_*aig 13 powershell powershell-3.0 pester

我需要确定一个PSCustomObjects 数组是否包含一个Title属性与值匹配的项.我需要一个布尔值来与Pester断言一起使用:

$Items -<function> $Name | Should Be $True
Run Code Online (Sandbox Code Playgroud)

假设:

$Items = @()
$Items += [PsCustomObject]@{Title='foo';Url='http://f.io'}
$Items += [PsCustomObject]@{Title='bar';Url='http://b.io'}
Run Code Online (Sandbox Code Playgroud)

Contains 不起作用:

PS> $Items -contains 'foo'
False
Run Code Online (Sandbox Code Playgroud)

Match 返回匹配的实例,但它不是布尔值:

PS> $Items -match 'foo'

Title  Url
-----  ---
foo    http://f.io
Run Code Online (Sandbox Code Playgroud)

我想我可以:

($Items -Match $Name).Count | Should Be 1
Run Code Online (Sandbox Code Playgroud)

有更好的选择吗?

Eri*_*ris 19

使用:

$Items.Title -contains 'foo'
Run Code Online (Sandbox Code Playgroud)

  • 根据前两个评论,这就是问题的答案。由于原始评论者在两个月内未将其添加为答案,因此我添加了评论者的答案,因此该问题将不再“未回答” (2认同)