Tipp des Tages: Hashtable-Property in Key-Value-Paare auflösen

Dieser Tipp klingt eventuell etwas speziell, ist aber für die Weiterverarbeitung bestimmter Rückgaben enorm praktisch. Einige Rückgaben von PowerShell-Commands bestehen aus einer einzigen Hashtable, erscheinen aber bei der Ausgabe wie viele Werte, da die Key-Value-Paare bei der Ausgabe automatisch aufgelöst werden.

Konkretes Beispiel: Auflisten der Umgebungsvariablen über [Environment]::GetEnvironmentVariables().

Auch wenn die Ausgabe nach vielen Werten aussieht, besteht sie nur aus einer Hashtable. Ein Sortieren nach dem Namen der Umgebungsvariablen ist daher nicht möglich.

Abhilfe schafft die universelle GetEnumerator()-Methode, welche die Elemente der Hashtable zurückgibt, und die einfach nur an die Ausgabe gehängt werden muss.

[Environment]::GetEnvironmentVariables().GetEnumerator() | Sort-Object Name

Ein Sortieren nach den Namen der Umgebungsvariablen ist damit möglich.

Ebenfalls sehr praktisch, das Auflisten aller dynamischen Parameter eines Cmdlets:

(Get-Command -Name Get-Content).Parameters.GetEnumerator() | Where-Object { $_.Value.IsDynmic}

Ohne GetEnumerator() wäre das deutlich aufwändiger, da man zuerst alle Keys durchlaufen müsste, um dann in der Wiederholung über den Key den Wert abzurufen. Dafür braucht man Zeit, Ausdauer und gute Nerven. Dank GetEnumerator() wird die Weiterverarbeitung sperriger Rückgaben powershell-typisch und damit einfach und konsistent.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.