【问题标题】:How can I find the same objects between two arrays如何在两个数组之间找到相同的对象
【发布时间】:2019-02-03 08:11:05
【问题描述】:

考虑以下数组:

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

如果$users 的任何成员在$server_admins 中,我需要提醒 在上面的示例中,由于来自$users 的“andrew”,这将是正确的

我应该使用Compare-object吗?或不 ?如果是 - 如何?

【问题讨论】:

    标签: arrays powershell compare


    【解决方案1】:

    对此有几个正确答案。有些比其他的更简单、更干净。无论哪种方式最适合您的数据。

    $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 并发出警报。我可能会选择后者,因为它更简洁且易于理解。

    【讨论】:

      【解决方案2】:

      您可以使用-in-contains 做一些事情,例如:

      $users = 'igor','max','andrew'
      $server_admins = 'john','andrew','li','alex'
      
      $users | % {
          if($_ -in $server_admins)
          {
              'alert'
          }
      }
      

      【讨论】:

      • 有什么方法可以在过滤器中使用它?那么,如果任何用户在 $server_admins 数组中,则为 TRUE? filter FilterDN { if (here...)) { # if any user is in server admin,then.. } } Get-QADUser .... |过滤器DN
      • 不知道你的意思,也许像$users | ? {$_ -in $server_admins}?
      • 嗯,没有多行。我的意思是在 IF 表达式中使用它......所以,如果(服务器组中的任何用户){....}
      【解决方案3】:

      使用单个 if 命令进行测试:

      $users = 'igor','max','andrew'
      $server_admins = 'john','andrew','li','alex'
      If ( @($users | Where-Object{$server_admins -contains $_ }).Length){"yes"}
      

      【讨论】:

        猜你喜欢
        • 2016-12-28
        • 1970-01-01
        • 2011-05-28
        • 1970-01-01
        • 2019-11-10
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        相关资源
        最近更新 更多