如何在两个数组之间找到相同的对象

时间:2018-08-28 16:08:15

标签: arrays powershell compare

考虑以下数组:

$users = 'igor', 'max', 'andrew'
$server_admins = 'john', 'andrew', 'li', 'alex'

如果$users的任何成员位于$server_admins中,我需要一个警报 在上面的示例中,由于来自$users

的“ andrew”而成立

我应该使用Compare-object吗?或不 ?如果是,怎么办?

3 个答案:

答案 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"}