2017-06-09 1 views
3

mache ich bin nicht sicher, was ich hier falsch mache:Powershell: wenn Einzelteile in array1 Artikel in array2 enthalten, was ich hier falsch

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

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

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

Es kommt immer als „nicht bestanden“, wenn ich, dass das laufen ganzes Stück Code

Es gibt mir "Bingo", wenn nUR 1 Artikel im $zvmtozvmconnection

Ie gefunden ich entfernen "ZVM0004" und nur "ZVM003" bleibt i "Bingo" erhalte

Ich habe auch getestet -match und das hat nicht funktioniert entweder

Bitte helfen

+0

Mögliche Duplikat [Ermitteln Sie, ob eine beliebige Zeichenfolge in einem Array existiert in der zweiten Array von Strings mit Powershell] (https://stackoverflow.com/questions/28822027/identify-if-any-string-in-one -array-exists-in-second-array-of-strings-with-power) – TessellatingHeckler

+0

'$ array = 4,5,6; 1,2, $ array, 3,4 -enthält $ array' -> '$ true'. Prüft, ob das Objekt auf der rechten Seite im Array auf der linken Seite ist. Wenn ein Array * das andere Array enthält *. (Durch Speicherreferenz, nicht durch übereinstimmende Inhaltswerte). – TessellatingHeckler

Antwort

3

-contains nicht so funktioniert. Es prüft, ob ein einzelnes Element in einem Array enthalten ist. -in ist das gleiche, mit der anderen Reihenfolge ($array -contains $item oder $item -in $array).

Sie sollten die Compare-Object Cmdlets für diesen Einsatz:

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

danke ... Ich denke, sie sollten die Notizen und Hilfe auf PowerShell ISE beheben, die besagt, dass es überprüft, ob Array 1 enthält mindestens eine der Elemente in Array 2 ... O gut .. seufz ... danke – AdilZ

+1

@ A.Zia interessant, wo hast du das gesehen? – briantist

+0

http://i.imgur.com/wnd47fq.png hier – AdilZ

2

andere Methode

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

if ($resul) 
{ 
    'bingo' 
} 
else 
{ 
    'fail' 
} 
0

Als Motto:

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

Und mit allen Fehlern in einem separaten Array.

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

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