Powershell:如果array1中的项目包含array2中的项目,我在这里做错了啥

Posted

技术标签:

【中文标题】Powershell:如果array1中的项目包含array2中的项目,我在这里做错了啥【英文标题】:Powershell: if items in array1 contain items in array2, what am I doing wrong herePowershell:如果array1中的项目包含array2中的项目,我在这里做错了什么 【发布时间】:2017-11-11 22:03:10 【问题描述】:

我不确定我在这里做错了什么:

    $ZertoGenericAlert =  "VRA0030"
    $ZvmToVraConnection = "ZVM0002"
    $ZvmToZvmConnection = "ZVM0003", "ZVM0004"

  $thoseerrors = "ZVM0002", "VPG0006", "VPG0004" , "ZVM0003", "ZVM0004"

  if ($thoseerrors -contains $ZvmToZvmConnection) Echo "bingo" Else Echo "fail"

当我运行整段代码时,它总是“失败”

当在$zvmtozvmconnection 中找到只有一项时,它给了我“宾果游戏”

即我删除“ZVM0004”,只剩下“ZVM003”我得到“Bingo”

我还测试了-match,但也没有用

请帮忙

【问题讨论】:

Identify if any string in one array exists in second array of strings with PowerShell的可能重复 $array = 4,5,6; 1,2,$array,3,4 -contains $array -> $true。 If 测试右边的对象是否在左边的数组中。如果一个数组包含另一个数组。 (通过内存引用,而不是通过匹配内容值)。 【参考方案1】:

-contains 不能这样工作。它检查单个项目是否包含在数组中。 -in 同理,其他顺序($array -contains $item$item -in $array)。

您应该为此使用Compare-Object cmdlet:

if ((Compare-Object -ReferenceObject $thoseerrors -DifferenceObject $ZvmToZvmConnection -ExcludeDifferent -IncludeEqual)) 
    'bingo'
 else 
    'fail'

【讨论】:

谢谢...我想他们应该修复有关 Powershell ISE 的注释和帮助,其中指出它检查数组 1 是否包含数组 2 中的至少一个项目...好吧..叹息...谢谢你 @A.Zia 很有趣,你在哪里看到的? @A.Zia 文字是正确的,不是你所描述的。文本说该项目必须与数组中的至少一个值完全匹配,考虑像$a = 1,2,3,3 这样的数组,在这种情况下$a -contains 3 为真,即使$a 包含3 不止一次。 我明白了,所以我误解了描述【参考方案2】:

其他方法

$resul=$ZvmToZvmConnection | where $_ -in $thoseerrors | select -First 1

if ($resul) 

    'bingo'
 
else 

    'fail'

【讨论】:

【参考方案3】:

作为一个班轮:

if($thoseerrors | ? $ZvmToZvmConnection -contains $_) Echo "bingo" Else Echo "fail"

所有错误都在一个单独的数组中。

# Existing errors stored in $errors
$errors = $thoseerrors | Where $ZvmToZvmConnection -contains $_

# Check if the $errors array contains elements
if($errors)Echo "bingo" Else Echo "fail"

【讨论】:

以上是关于Powershell:如果array1中的项目包含array2中的项目,我在这里做错了啥的主要内容,如果未能解决你的问题,请参考以下文章

我需要检查 Array1 中的 CHAR 是不是包含我的 Array2 中的一些 CHAR,但我不能将 Contains 用于 CHAR... 如何解决? [关闭]

Powershell仅在包含特定字符串的文件夹名称中移动子目录中的项目

如何用Excel求两列数据之间的相关程度?

PowerShell 如果下一行包含“此字符串”,则输出当前行和下 3 行,否则仅输出当前行

PowerShell 变量包含特定数字

使用 Powershell 中的 Stack,如何传递包含空格的测试参数?