1. Sie haben keine Formular- / Auslöseereignisse in Ihrem Code.
Ein Formular ist nur ein Container, der Elemente enthält, bis Sie den Code dahinter hinzufügen, damit er etwas ausführt. Sie müssen über ein korrektes GUI-Objekt verfügen, an das das Ergebnis gesendet werden soll.
Ich bin nicht sicher, ob Sie dies im ISE oder VSCode oder Notepad oder was auch immer von Hand tun, aber dies ist ein guter erster Versuch. Was Sie jedoch zeigen, scheint darauf hinzudeuten, dass Sie mit der GUI-Entwicklung / allgemeinen App-Entwicklung nicht wirklich auf dem Laufenden sind, da das, was Sie tun, nicht nur für PowerShell einzigartig ist, sondern für jeden App-Entwicklungsclient oder das Web.
Verbringen Sie also einige Zeit damit, die allgemeine WPF / Winforms-Entwicklung zu studieren und zu überprüfen.
Für Ihren Anwendungsfall benötigen Sie:
- Definieren Sie das Listen-GUI-Objekt (mehrzeilig, ListBox, ListView, Datagrid), in dem die Ergebnisse gespeichert werden sollen (durch das Kombinieren von Combox-Feldern werden Elemente bei Ereignisaktionen hinzugefügt und entfernt).
- Definieren Sie, was diese Liste ist (Textdateien, Db-Read usw.).
- Lesen Sie aus der Liste beim Klicken, Ändern oder einem anderen Formularereignis das GUI-Listenobjekt
Es gibt viele Beispiele dafür auf dieser Website und im gesamten Web.
Hier ein gutes Video zur GUI-Entwicklung mit PowerShell:
Powershell füllt die Combobox basierend auf dem ausgewählten Element in einer anderen Combobox auf
Aus der obigen Diskussion (nicht etwas, das Sie einfach in Ihren Code einfügen sollten, ohne zu verstehen, was und warum):
Use a ComboBox.SelectionChangeCommitted Event: "Occurs when the user changes the selected item and that change is displayed in the ComboBox" $combobox2_SelectionChangeCommitted={ $Mailboxes = Get-Mailbox -OrganizationalUnit $ClientSelected foreach ($mailbox in $Mailboxes) { $CurrentMailbox = " ()" -f $mailbox.Name, $mailbox.Alias Load-ComboBox $combobox2 $CurrentMailbox -Append } } Use a button: $button1_Click={ $Mailboxes = Get-Mailbox -OrganizationalUnit $ClientSelected foreach ($mailbox in $Mailboxes) { $CurrentMailbox = " ()" -f $mailbox.Name, $mailbox.Alias Load-ComboBox $combobox2 $CurrentMailbox -Append } }
Zuletzt mit diesem…
Write-Host "ComboBox = " $liste1.DisplayMember Write-Host "ComboBox = " $liste2.selectedvalue
… Würde man nicht tun, weil die Konsole nicht geöffnet wird, um diese Ergebnisse zu sehen, und Write-Host sollte vermieden werden, außer wenn nur Konsolen-Text-Kolorierungen von anderen Konsolen-Formatierungsszenarien verwendet werden. Außerdem wird der Anzeigepuffer geleert, sodass dies nicht möglich ist zu etwas anderem geschickt werden. Außerdem haben Sie an keiner Stelle des Formulars ein GUI-Objekt mit dem Namen "ComboBox", sodass es für Ihren Anwendungsfall keinen Zweck erfüllt.