Если у вас есть массивы:
$requiredFruit= @("apple","pear","nectarine","grape")
$someFruit= @("apple","banana","pear","nectarine","orange","grape")
$moreFruit= @("apple","banana","nectarine","grape")
Вы можете получить логический результат с помощью:
'Check $someFruit for $requiredFruit'
-not @($requiredFruit| where {$someFruit -notcontains $_}).Count
'Check $moreFruit for $requiredFruit'
-not @($requiredFruit| where {$moreFruit -notcontains $_}).Count
Использование счетчика массива защищает от одного несоответствующего значения, которое оценивается как False. Например:
# Incorrect result
-not (0| where {(1,2) -notcontains $_})
# Correct result
-not @(0| where {(1,2) -notcontains $_}).Count
В PowerShell v3 вы можете использовать select -first 1
для остановки конвейера при обнаружении первого несоответствия (в v2 select -first 1
пропускается только один объект, но предыдущие элементы конвейера продолжают обрабатываться).
-not @($requiredFruit| where {$moreFruit -notcontains $_}| select -first 1).Count