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仅在包含特定字符串的文件夹名称中移动子目录中的项目