PowerShell Daten aus Array mit Daten aus Hashtable verknüpfen
Hallo,
ich habe ein Array mit Informationen. In diesem Array gibt es einen nummerischen Wert. Weil ich mit dem nummerischen Wert nichts anfangen kann, habe ich eine Hashtable aufgebaut, die als Translator dienen soll. Quasi 1 steht für Test und 2 für Produktiv. In Array steht aber nur 1 oder 2. In einem Output möchte ich aber den Inhalt des Array erhalten bei dem 1 und 2 durch Test und Produktiv ersetzt wird. Gerne kann das ganze auch in ein neues Array / Hashtable geschrieben werden.
Bisher habe ich nur den Fall gehabt, dass ich aus dem Array einen Wert genommen habe, diesen mit dem Wert in der Hashtable vergleiche und den dazugehörigen Content aus der Hashtabelle in eine neue Variable schreibe. Für den jetzigen Fall habe ich jedoch noch keinen so richtigen Ansatz.
Sollte ich das Array durchitterieren und alle Werte in ein neues Array schreiben oder gibt es einen Einzeiler, der mir den Content vom Array und dem Hashtable Wert ausgibt?
ich habe ein Array mit Informationen. In diesem Array gibt es einen nummerischen Wert. Weil ich mit dem nummerischen Wert nichts anfangen kann, habe ich eine Hashtable aufgebaut, die als Translator dienen soll. Quasi 1 steht für Test und 2 für Produktiv. In Array steht aber nur 1 oder 2. In einem Output möchte ich aber den Inhalt des Array erhalten bei dem 1 und 2 durch Test und Produktiv ersetzt wird. Gerne kann das ganze auch in ein neues Array / Hashtable geschrieben werden.
Bisher habe ich nur den Fall gehabt, dass ich aus dem Array einen Wert genommen habe, diesen mit dem Wert in der Hashtable vergleiche und den dazugehörigen Content aus der Hashtabelle in eine neue Variable schreibe. Für den jetzigen Fall habe ich jedoch noch keinen so richtigen Ansatz.
Sollte ich das Array durchitterieren und alle Werte in ein neues Array schreiben oder gibt es einen Einzeiler, der mir den Content vom Array und dem Hashtable Wert ausgibt?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 309688
Url: https://administrator.de/contentid/309688
Ausgedruckt am: 05.11.2024 um 04:11 Uhr
2 Kommentare
Neuester Kommentar
$array = @()
$ht = @{1="Test";2="Produktiv"}
$array += New-Object PSObject -Property @{Mode=1;Column2="BlaBla"}
$array += New-Object PSObject -Property @{Mode=2;Column2="BlaBla2"}
$array | select @{n="Mode";e={$ht[$_.Mode]}},Column2
$array = @()
$ht = @{1="Test";2="Produktiv"}
$array += New-Object PSObject -Property @{Mode=1;Column2="BlaBla"}
$array += New-Object PSObject -Property @{Mode=2;Column2="BlaBla2"}
$array | %{$_.Mode = $ht[$_.Mode]}
$array
Hallo derhoeppi,
so wie @129813 schreibt kann man es machen. Üblicherweise macht man sowas über Enumerations (enums) weil objektorientierter und wandelt dann gleich die entsprechende Spalte in diesen Enum um dann hat man immer beides verfügbar:
Enums lassen sich dann z.B. so ansprechen:
Diese lassen sich auch direkt in Vergleichen verwenden (im Hintergrund wird der INT-Wert verglichen)
Will man den entsprechenden Wert eines enums (hier INT-Wert) direkt anzeigen lassen:
Hier noch was zum lesen über enums:
http://social.technet.microsoft.com/wiki/contents/articles/26436.how-to ...
Grüße Uwe
so wie @129813 schreibt kann man es machen. Üblicherweise macht man sowas über Enumerations (enums) weil objektorientierter und wandelt dann gleich die entsprechende Spalte in diesen Enum um dann hat man immer beides verfügbar:
Add-Type -TypeDefinition 'public enum mode{Test=1,Produktiv=2};'
# demo object erstellen
$array = @()
$array += New-Object PSObject -Property @{Mode=1;Column2="BlaBla"}
$array += New-Object PSObject -Property @{Mode=2;Column2="BlaBla2"}
# spalte 'mode' in passende Enums umwandeln
$array | %{$_.Mode = [mode]$_.Mode}
[mode]::Test
[mode]::Produktiv
if ($var -eq [mode]::Produktiv){ #........ }
[mode]::Produktiv.value__
# oder
[int][mode]::Produktiv
http://social.technet.microsoft.com/wiki/contents/articles/26436.how-to ...
Grüße Uwe