Benutzer mit den meisten Antworten
Gridview -passthru soll einen String in einem Textfeld in einer GUI einfügen.

Frage
-
Moin, ich versuche in meiner GUI durch eine out -GridView -passthru Eingabe ein Textfeld zu aktualisieren
Das ist mein Code
$buttonAccName.Location = '10, 175' $buttonAccName.Name = "labelAccname" $buttonAccName.Size = '100, 23' $buttonAccName.TabIndex = 11 $buttonAccName.Text = "SendAsPrivilege" $buttonAccName.TextAlign = 'MiddleLeft' $buttonAccName.Add_Click({ $sauser = Get-ADUser -Filter * |Out-GridView -Passthru $Porn = "hub" }) if($Porn -eq "hub") { $sausanzahl = $sauser.count $sausi = $sausanzahl -1 if ($sausanzahl = 1) { $Laccname = Get-ADUser $sauser | Select-Object -ExpandProperty sAMAccountname if ($saustext -notcontains "@") { $saustext = "@" + $Laccname } else { $saustext = $saustext + " @" + $Laccname } } else { for ($n=0; $n -le $sausi ; $n++) { $Laccname = Get-ADUser $sauser[$n] | Select-Object -ExpandProperty sAMAccountname if ($n=0) { if($saustext -notcontains "@") { $saustext = "@"+$Laccname } else { $saustext = $saustext + " @" + $Laccname } } else { $saustext = $saustext + " @" + $Laccname } } } } # txtAccName $txtAccName.Anchor = 'Top, Left, Right' $txtAccName.Location = '118, 175' $txtAccName.Name = "txtAccName" $txtAccName.Size = '173, 20' $txtAccName.TabIndex = 12 $txtAccName.Text = "$saustext
- Bearbeitet nu11ahnung Dienstag, 2. Oktober 2018 14:36
Antworten
-
Abgesehen davon, daß der Code so ohne Einrückungen nahezu unverständlich ist und die Variablennamen für mich auch keinen Sinn ergeben: Was genau ist jetzt Dein Problem?
Ich würde das ja so lösen, daß ich ne Inputbox bereitstelle, in die ein Suchstring "MaxMuster*" eingegeben werden kann. Den verfüttere ich an Get-ADUser.
Warum zerstörst Du mit dem Select immer die eigentlichen Objekte und machst Strings daraus? Das macht man eigentlich erst dann, wenn man wirklich einen String braucht.
Und über Arrays/Collections bessern nicht mit for($n++) iterieren, sondern mit Foreach. Das erspart Dir dann auch $sausanzahl und $sausi. Das Ergebnis steckst Du in ein Array, das Du _ganz zum Schluß_ mit " " joinen kannst.
Der Schnipsel hier ersetzt quasi Deinen ganzen Schleifencode in der Mitte:
$sausarray = @() Foreach ($sauser in $sausers) { $sausarray += ( '@{0}' -f $sauser.SamAccountName ) } $saustext = $sausarray -join " "
Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq
- Als Antwort markiert Denniver ReiningMVP, Moderator Sonntag, 7. Oktober 2018 12:27
Alle Antworten
-
Noch mal zur Erläuterung: Ich habe gerade ein funktionierendes Skript zum Erstellen von ADUsern. Für ein bestimmtes Feature kann man in das Textfeld User eingeben, mit denen der erstellte User verknüpft ist (in der Form ('@sAMAccountname @sAMAccountname2'). Ich will jetzt noch ein Feature einbauen, dass man diese User nicht per Hand eintragen muss (aber kann) und User auch über
Get-ADUser -Filter * |Out-GridView -Passthru
hinzufügen kann und diese auch im entsprechenden Textfeld angezeigt werden
-
Abgesehen davon, daß der Code so ohne Einrückungen nahezu unverständlich ist und die Variablennamen für mich auch keinen Sinn ergeben: Was genau ist jetzt Dein Problem?
Ich würde das ja so lösen, daß ich ne Inputbox bereitstelle, in die ein Suchstring "MaxMuster*" eingegeben werden kann. Den verfüttere ich an Get-ADUser.
Warum zerstörst Du mit dem Select immer die eigentlichen Objekte und machst Strings daraus? Das macht man eigentlich erst dann, wenn man wirklich einen String braucht.
Und über Arrays/Collections bessern nicht mit for($n++) iterieren, sondern mit Foreach. Das erspart Dir dann auch $sausanzahl und $sausi. Das Ergebnis steckst Du in ein Array, das Du _ganz zum Schluß_ mit " " joinen kannst.
Der Schnipsel hier ersetzt quasi Deinen ganzen Schleifencode in der Mitte:
$sausarray = @() Foreach ($sauser in $sausers) { $sausarray += ( '@{0}' -f $sauser.SamAccountName ) } $saustext = $sausarray -join " "
Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq
- Als Antwort markiert Denniver ReiningMVP, Moderator Sonntag, 7. Oktober 2018 12:27