2015-06-19 9 views
5

Devo determinare se un array di PsCustomObject s contiene un elemento con la proprietà Title corrispondente a un valore. Ho bisogno di un valore booleano da utilizzare con asserzioni Pester:Determinare se la matrice di PsCustomObjects contiene un'istanza con un valore di proprietà

$Items -<function> $Name | Should Be $True 

Assumendo:

[email protected]() 
$Items+=[PsCustomObject]@{Title='foo';Url='http://f.io'} 
$Items+=[PsCustomObject]@{Title='bar';Url='http://b.io'} 

Contains non funziona:

PS> $Items -contains 'foo' 
False 

Match restituisce l'istanza di corrispondenza, ma non un booleano:

PS> $Items -match 'foo' 

Title Url                   
----- ---                   
foo http://f.io 

Suppongo che potrei:

($Items -Match $Name).Count | Should Be 1 

C'è una soluzione migliore?

+3

'foo'' $ Items.Title -contains' – PetSerAl

+0

Ugh. Certo che era * quello * semplice ... – craig

+3

@craig per la corrispondenza: '[bool] ($ Items -match 'foo')' –

risposta

7

Dai commenti:

$Items.Title -contains 'foo' 
+0

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post. –

+0

Secondo i primi due commenti, questa era la risposta alla domanda. Dal momento che i commentatori originali non l'hanno aggiunto come risposta in due mesi, ho aggiunto la risposta del commentatore in modo che la domanda smetta di essere "senza risposta" – Eris

+0

Abbastanza giusta, mia cattiva. @PetSerAl dovrebbe essere quello per aggiungere la risposta. –

Problemi correlati