考虑以下数组:
$users = 'igor', 'max', 'andrew'
$server_admins = 'john', 'andrew', 'li', 'alex'
如果$users
的任何成员位于$server_admins
中,我需要一个警报
在上面的示例中,由于来自$users
我应该使用Compare-object
吗?或不 ?如果是,怎么办?
答案 0 :(得分:3)
对此有几个正确答案。有些比其他的更简单,更干净。无论哪种方式最适合您的数据。
$users = 'igor','max','andrew'
$server_admins = 'john','andrew','li','alex'
# Using Compare-Object
Compare-Object $users -DifferenceObject $server_admins -IncludeEqual | Where sideindicator -eq "==" | Select-Object -ExpandProperty InputObject
# Using -contains and where
$users | Where-Object{$server_admins -contains $_}
将其中任何一个插入Foreach-Object
并发出警报。我可能会选择后者,因为它更简洁且易于理解。
答案 1 :(得分:2)
您可以使用-in
或-contains
做某事,例如:
$users = 'igor','max','andrew'
$server_admins = 'john','andrew','li','alex'
$users | % {
if($_ -in $server_admins)
{
'alert'
}
}
答案 2 :(得分:0)
要使用单个if命令进行测试:
$users = 'igor','max','andrew'
$server_admins = 'john','andrew','li','alex'
If ( @($users | Where-Object{$server_admins -contains $_ }).Length){"yes"}