Как я могу найти одинаковые объекты между двумя массивами - PullRequest
0 голосов
/ 28 августа 2018

Рассмотрим следующие массивы:

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

Мне нужно уведомление, если какой-либо член $users находится в $server_admins В приведенном выше примере это будет верно из-за 'Эндрю' из $users

Должен ли я использовать Compare-object? Или нет ? Если да - как?

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Несколько правильных ответов на это. Некоторые из них проще и чище, чем другие. Все, что лучше всего работает с вашими данными.

$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 и предупредите. Вероятно, я бы выбрал последние варианты, поскольку они более лаконичны и так же просты для понимания.

0 голосов
/ 28 августа 2018

Чтобы выполнить тест с одной командой if:

$users = 'igor','max','andrew'
$server_admins = 'john','andrew','li','alex'
If ( @($users | Where-Object{$server_admins -contains $_ }).Length){"yes"}
0 голосов
/ 28 августа 2018

Вы можете просто сделать что-нибудь, используя -in или -contains, например:

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

$users | % {
    if($_ -in $server_admins)
    {
        'alert'
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...