Powershell HashTable und Listbox?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

...Ähm...

Listbox ist ne schlechte Idee eine Listbox zeigt einfach Text an...

Listview ist das was Du brauchst:

Demo.PS1

Add-Type -AssemblyName System.Windows.Forms


$sampleForm = New-Object System.Windows.Forms.Form
$sampleForm.Width = 500
$sampleForm.Height = 300


  # erzeuge Listview   !nicht Listbox!
$listView = New-Object System.Windows.Forms.ListView
  #settings
$listView.View = 'Details'
$listView.Width = 500
$listView.Height = 300
$listview.FullRowSelect = $True
$listview.GridLines = $True
  #erzeuge die passenden Spalten
$listView.Columns.Add('ID')
$listView.Columns.Add('ProfileName')
$listView.Columns.Add('Password')


  # ich bin ein Faulpelz,  das Herumgerötel mit [PSCustomObject]erspare  ich mir  einfach und  erzeuge   die Objekte  einfach mit Hilfe eines CSV
  #der Header tut  nichts anderes, als das Object zu defineren
$MyDataSheets = @'
ID,ProfileName,Password
1,SchinderHannes,1234
2,Mickymaus,Rumpelheinz
3,Suppehhuhn,Katzenpups
4,SchrubbMirDenRuecken,Seifenschaum
'@ | ConvertFrom-Csv


  # natürlich  steht es Dir frei   ein Objekt   vo hand  zu definieren und zur Liste  hinzuzfügen (aber  wer  will das schon wennman  mit einer  Zeile CSV ein ganzes Object  bastelt,
$MyDataSheets += [PSCustomObject]@{
    ID     = 7
    ProfileName = 'SelbstgestriktObject'
    Password    = 'Minipippi'
}
  #die  super kompatible Methode
$myHashtable= @{
    ID     = 99
    ProfileName = 'vomSimpleHashtable'
    Password    = 'kis<dsoeo'
} 
$MyDataSheets += New-Object -TypeName PSObject -Property $myHashtable


'
mal das Array of  Customobjects  anzeigen'
$MyDataSheets


  # Dene HashArray der Listview zuweisen
$MyDataSheets|%{
    $item = New-Object System.Windows.Forms.ListViewItem($_.ID)
      # Spalten belegen
    $item.SubItems.Add($_.ProfileName)
    $item.SubItems.Add($_.Password)
      # hinzufügen
    $listView.Items.Add($item)
}|out-null
  #jetzt, wo wir die Felder belegt haben passen wir  die Breite der Spalten automatisch an  https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.columnheaderautoresizestyle?view=netframework-4.7.2
$ListView.AutoResizeColumns(1)


$sampleForm.Controls.Add($listView)
[void] $sampleForm.ShowDialog()

...ich weiß ja nicht was Du vorhast und welche Programmierskills Du hast..., aber das ganze kannst Du viel "billiger" bekommen

@'
ID,ProfileName,Password
1,SchinderHannes,1234
2,Mickymaus,Rumpelheinz
3,Suppehhuhn,Katzenpups
4,SchrubbMirDenRuecken,Seifenschaum
'@ | ConvertFrom-Csv|Out-GridView -OutputMode single
Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
frage81273 
Fragesteller
 14.08.2020, 09:36

Auf das mit dem Listview wär ich wirklich nicht gekommen auf die schnelle, danke :) Bin eigentlich mehr beim Entwickeln von Android Apps. Aber weil ich gerade noch ein bisschen mit LDAP arbeiten muss, wollte ich mir die Arbeit erleichtern, mittels Powershell...

0
Erzesel  14.08.2020, 10:49
@frage81273
wollte ich mir die Arbeit erleichtern, mittels Powershell.

...😅komische Auffassung von Arbeitserleichterung...

...Um einen Nagel in die Wand zu kloppen baust Du eine gigantische Maschine... (das hat schon einen Touch von Rube-Goldberg , dabei hat obige Demo noch keinerlei Funktionalität als eine Tabelle anzuzeigen...)

...klar kann man Machen... aber Powershell ist eher ein Werkzeug mit dem man in einer Zeile etwas automatisch erledigen lässt und der Nutzer garnichts davon mitbekommt.

Wenn es sich als wirklich nötig erweist, mit dem Nutzer zu interagieren reicht ein ganz normaler Conslol-Input oder maximal ein ComObject . ...oder Gridview, um einen Datensatz auszuwählen.

Wenn Du einen halben Tag darüber Grübeln musst , wie man eine Tabelle anzeigt ...🤪🤪🤪 , ist das teuerste "Menü" aller Zeiten.

0