marabunta
Goto Top

Powershell Hashtable - Relativ sinnvoll eingesetzt?

Ich hab das mal geschrieben um für zukünftige Einsätze die Powershell Hastables einsetzen zu können.
Habt ihr da evtl. bessere Wege?
Dabei geht es nicht um Datenerfassung wie im Beispiel, sondern darum ob die Methode die Hashtable zu füllen gut ist oder nicht.
$users="Hans","Peter","Gustav"  
$Datenerfassung=@{Benutzer="$users";Password="Geben Sie Ihr Kennwort ein.";Username="Geben Sie Ihren Benutzernamen ein.";ID="Geben Sie Ihre ID ein."}  
foreach($user in $users){
$ID_User="ID_"+"$User"  
$Username_User="Username_"+"$User"  
$Password_User="Password_"+"$User"  
$Datenerfassung.$ID_User=Read-Host ""$Datenerfassung.ID  
$Datenerfassung.$Username_User=Read-Host ""$Datenerfassung.Username  
$Datenerfassung.$Password_User=Read-Host ""$Datenerfassung.Password  
}
$datenerfassung.getenumerator() |sort-object -Property key

Name                           Value
----                           -----
Benutzer                       Hans Peter Gustav                              
ID                             Geben Sie Ihre ID ein.
ID_Gustav                      IDvonGustav
ID_Hans                        IDvonHans
ID_Peter                       IDvonPeter
Password                       Geben Sie Ihr Kennwort ein.
Password_Gustav                PasswortvonGustav
Password_Hans                  PasswortvonHans
Password_Peter                 PasswortvonPeter
Username                       Geben Sie Ihren Benutzernamen ein.
Username_Gustav                BenutzernamevonGustav
Username_Hans                  BenutzernamevonHans
Username_Peter                 BenutzernamevonPeter

Content-Key: 260792

Url: https://administrator.de/contentid/260792

Printed on: April 19, 2024 at 04:04 o'clock

Member: colinardo
colinardo Jan 22, 2015 updated at 15:09:11 (UTC)
Goto Top
Hallo marabunta,
eher suboptimal... Wenn du flexibel bleiben willst mach das ganze doch mit einem PSObject, das kannst du später nach Bedarf auch um weitere Daten und Spalten erweitern. Hashtables sind eher nur was für einen Key mit einem Wert, mehr nicht.

Beispiel mit Custom Objects
# Array erstellen das unsere Objects(Zeilen) zusammenfasst
$allData = @()

# PSCustomObject dem Array hinzufügen / Kannst du natürlich auch mit einer Schleife nutzen
$allData += New-Object PSObject -Property @{Benutzer="BenutzerA";ID="ID_A";Password='Geheim'}  
$allData += New-Object PSObject -Property @{Benutzer="BenutzerB";ID="ID_B";Password='Geheim'}  

$allData
Der Vorteil mit einem Custom-Object ist z.B. das es sich sehr einfach z.B direkt an das CMDLet export-csv pipen lässt wenn man mal einen Export benötigt. Und nicht nur das, Objekte sind einfach besser zu handhaben und flexibel erweiterbar.

Hashtables haben auch Ihre Berechtigung, es kommt aber eben auf den Verwendungszweck an.

Grüße Uwe
Member: Marabunta
Marabunta Jan 22, 2015 updated at 15:19:44 (UTC)
Goto Top
Ich dachte schon mit Hashtables hätte ich in der Kategorie Array schon das mächtigste in PS gefunden.
Naja umso besser...thx
Member: colinardo
Solution colinardo Jan 22, 2015, updated at Jan 23, 2015 at 08:46:41 (UTC)
Goto Top
Zitat von @Marabunta:

Ich dachte schon mit Hashtables hätte ich in der Kategorie Array schon das mächtigste in PS gefunden.
Naja umso besser...thx
Schau dir mal das NET-Framework an, dann weist du was dir entgeht face-wink
Daraus lassen sich nämlich fast alle Klassen auch in Powershell nutzen....denn Powershell basiert auf .NET
.NET Framework-Klassenbibliothek