PowerShell Wert in Array finden
Hallo,
in meinem Projekt lese ich einen Eintrag aus einer Combobox aus. Dieser wird in eine Variable / Objekt $CB_Name geschrieben. Ziel ist es diesen Wert mit einem global definierten Array abzugleichen. Der Wert der Combobox stammt aus dem wieder abzugleichenden Array (Spalten = id, name), so dass es auf jeden Fall einen Treffer geben muss. Ich versuche das nun schon einige Zeit und will zur Kontrolle den Erfolg in einem Label ausgeben.
Bisher habe ich folgendes:
$CB_Name = $Combobox_Name.Text
$Label.Content = $Array.Contains($CB_Name)
Dieser Code liefert immer ein False zurück, was eigentlich nicht sein kann. True oder False wäre an dieser Stelle auch nicht der richtige Rückgabewert um mein Ziel zu erreichen, aber immerhin würde ich sehen, ob das Auffinden des Wertes funktioniert.
Probiert habe ich auch:
$Label.Content = $Array.id | where ($_.name -eq $CB_Name)
Diese Ausgabe bleibt ebenfalls leer. Mein Ziel soll es sein zu dem Namen den ich aus der Combobox erhalte, die entsprechende ID herauszufinden, damit ich diese im weitern Verlauf verwenden kann.
Gruß
derhoeppi
in meinem Projekt lese ich einen Eintrag aus einer Combobox aus. Dieser wird in eine Variable / Objekt $CB_Name geschrieben. Ziel ist es diesen Wert mit einem global definierten Array abzugleichen. Der Wert der Combobox stammt aus dem wieder abzugleichenden Array (Spalten = id, name), so dass es auf jeden Fall einen Treffer geben muss. Ich versuche das nun schon einige Zeit und will zur Kontrolle den Erfolg in einem Label ausgeben.
Bisher habe ich folgendes:
$CB_Name = $Combobox_Name.Text
$Label.Content = $Array.Contains($CB_Name)
Dieser Code liefert immer ein False zurück, was eigentlich nicht sein kann. True oder False wäre an dieser Stelle auch nicht der richtige Rückgabewert um mein Ziel zu erreichen, aber immerhin würde ich sehen, ob das Auffinden des Wertes funktioniert.
Probiert habe ich auch:
$Label.Content = $Array.id | where ($_.name -eq $CB_Name)
Diese Ausgabe bleibt ebenfalls leer. Mein Ziel soll es sein zu dem Namen den ich aus der Combobox erhalte, die entsprechende ID herauszufinden, damit ich diese im weitern Verlauf verwenden kann.
Gruß
derhoeppi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 267235
Url: https://administrator.de/forum/powershell-wert-in-array-finden-267235.html
Ausgedruckt am: 16.05.2025 um 20:05 Uhr
7 Kommentare
Neuester Kommentar

Fast richtig
, du hattest das Array auf die Eigenschaft ID begrenzt, wolltest aber die Spalte Name vergleichen, das kann ja nicht gehen...
Gruß jodel32
!edit! - Klammern korrigiert
$resultID = $Array | ?{$_.name -eq $CB_Name} | select -Expand ID
if($resultID){
# ID gefunden...
}Else{
# ID nicht gefunden
}
!edit! - Klammern korrigiert

Was steht denn überhaupt in der Variablen $CB_Name und welchen Typs ist diese, hat diese eventuell noch Eigenschaften oder ist ein Objekt ??
Lass dir mal den Typ der Variablen anzeigen
Und auch die Member
Du würdest uns es uns hier wesentlich einfacher machen wenn du uns mit deinem Code zeigst wie du die Variable mit ihrem Inhalt erzeugst ! Das oben geht nämlich einwandfrei wenn denn die Variablen den richtigen Inhalt haben...
Lass dir mal den Typ der Variablen anzeigen
$CB_Name.getType()
Und auch die Member
$CB_Name | gm
Du würdest uns es uns hier wesentlich einfacher machen wenn du uns mit deinem Code zeigst wie du die Variable mit ihrem Inhalt erzeugst ! Das oben geht nämlich einwandfrei wenn denn die Variablen den richtigen Inhalt haben...
der Beitrag ist zwar schon etwas älter, aber vllt. stolpert doch mal jemand hier vorbei. Hatte ein ähnliches Problem, deshalb:
die where Klausel soll das entsprechende Objekt filtern, also
$Array | where {$_.name -eq "$CB_Name"} # Anführungen wegen evtl. Leerzeichen im Namen, schadet zumindest nicht
Nun soll davon die ID zurückgegeben werden, also das Objekt in Klammern packen und das Element selektieren
$ID = ( $Array | where {$_.name -eq "$CB_Name"} ).id
Schöne Grüße
die where Klausel soll das entsprechende Objekt filtern, also
$Array | where {$_.name -eq "$CB_Name"} # Anführungen wegen evtl. Leerzeichen im Namen, schadet zumindest nicht
Nun soll davon die ID zurückgegeben werden, also das Objekt in Klammern packen und das Element selektieren
$ID = ( $Array | where {$_.name -eq "$CB_Name"} ).id
Schöne Grüße

Zitat von @derRobert:
$Array | where {$_.name -eq "$CB_Name"} # Anführungen wegen evtl. Leerzeichen im Namen, schadet zumindest nicht
Nun soll davon die ID zurückgegeben werden, also das Objekt in Klammern packen und das Element selektieren
$ID = ( $Array | where {$_.name -eq "$CB_Name"} ).id
Moin,$Array | where {$_.name -eq "$CB_Name"} # Anführungen wegen evtl. Leerzeichen im Namen, schadet zumindest nicht
Nun soll davon die ID zurückgegeben werden, also das Objekt in Klammern packen und das Element selektieren
$ID = ( $Array | where {$_.name -eq "$CB_Name"} ).id
das ist das selbe wie in meinem Post oben, nur auf eine andere Art.
select -Expand ID holt sich ebenfalls die ID.
Der entscheidende Unterschied zu meinem Code ist, dass es bei dir zu einer Exception kommt wenn kein Array-Element passt, weil dann der klammerausdruck $null ist und von $null gibt es keine Eigenschaften
Gruß jodel32