basticn
Goto Top

User properties via textbox auslesen in AD

Hallo zusammen,

ich hoffe ihr könnt mir helfen.

Habe folgende Aufgabe bekommen:

Ich soll ein Powershell Script erstellen wo ich via Textbox eine UserID Abfrage in einer ActiveDirectory durchfühen kann:

Ich schaffe es aber nicht die Abfrage aus einer Textbox durchzuführen face-sad

Sondern nur mit der Variablen $Users werden ALLE user in der AD angezeigt face-sad

           # Load ActiveDirectory module
            Import-Module ActiveDirectory

            <#
---------------------------------------------------------------------------------------
   
powered by US

---------------------------------------------------------------------------------------
#>
 'Programm wird ausgeführt bitte warten bis Eingabe erscheint.'  

# Die ersten beiden Befehle holen sich die .NET-Erweiterungen (sog. Assemblies) für die grafische Gestaltung in den RAM.

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")   
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")   

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $x = $textBox.Text
    $x = $users
}

# GLID's auslesen  

$users = Get-ADUser -Filter * -Properties GivenName, Surname, Name, Created, Modified, CanonicalName, Enabled, LockedOut, LastLogonDate, PasswordLastSet, LastBadPasswordAttempt, PasswordNeverExpires, PasswordNotRequired, DisplayName, Description, Title, Office, OfficePhone, EmailAddress, HomeDirectory, HomeDrive, UserPrincipalName

Ich wende mich hier an die erfahrenen Admins die mir bei der Hürde helfen können.


VIELEN Dank für Eure HILFE!


viele Grüße

Basti

Content-Key: 585438

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

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

Member: emeriks
emeriks Jul 07, 2020 at 16:27:04 (UTC)
Goto Top
Hi,
ist das nicht das selbe Thema, wie Deine letzte Frage?

Hast Du den PowerShell Code aus Deiner letzten Frage denn überhaupt verstanden? Wenn nein - warum fängst Du dann jetzt schon wieder was neues an?

E.
Member: erikro
erikro Jul 07, 2020 at 18:12:59 (UTC)
Goto Top
Moin,

naja

get-aduser -filter *

macht was?

hth

Erik
Member: BastiCn
BastiCn Jul 08, 2020 at 05:01:41 (UTC)
Goto Top
Hallo emerkis,

ja, das Thema war ähnlich aber nicht gleich...

Ich habe ja das als gelößt markiert :D und ja das hab ich dann auch verstanden, das die User in dir ComboBox vorgeladen werden....

Ich suche hier nur Hilfe, wenn du mir nichts konstruktives zu dem Thema sagen kannst, dann lass es!

Hätte halt gerne eine TextBox anstatt eine ComboBox...

Werde es weiterhin versuchen und mein Wissen erweitern.

Aber Danke!
Member: emeriks
emeriks Jul 08, 2020 at 06:32:50 (UTC)
Goto Top
Zitat von @BastiCn:
Hätte halt gerne eine TextBox anstatt eine ComboBox...
Dann stelle die Frage doch bitte genau so! Ein Verweis auf die vorherige Frage und es wäre ein Klacks gewesen!

Dein o.g. Code macht rein gar nichts mit der Textbox. Und glaube mir: Es macht keinen Sinn, wenn Du nicht verstanden hast, wie das mit der Combobox in Deinem bisherigen Code funktioniert. Jedenfalls suggeriert mir der von Dir o.g. Code genau das.
Member: BastiCn
BastiCn Jul 08, 2020 at 06:44:06 (UTC)
Goto Top
guten Morgen emeriks,

das Script mit der ComboBox klappt ja auch.

Hatte mir nur gedacht, dass es "einfacher" wäre die User Abfrage via Textbox zu initialisieren.

Ich hab doch die Frage genau so gestellt face-sad

Hab PowerShell leider nie wirklich gelernt wie manch Andere, sondern nur autodidaktisch....

Das es für versierte PowerShell user mein Scrip "geschnipsel" keinen Sinn macht ist mir klar face-sad

Deswegen frage ich ja nach meinem Fehler face-sad
Member: emeriks
emeriks Jul 08, 2020 at 07:07:19 (UTC)
Goto Top
OK, wenn es ein bewusst gekürztes Schnipsel ist, dann trotzdem noch ein Hinweis:
  1. ggf. auf das Original verweisen zwecks besserem Verständnis
  2. im Schnipsel kennzeichnen, wenn man gekürzt hat, z.B. durch Kommentarzeilen oder durch sowas wie "..."

....    
    $x = $textBox.Text
    $x = $users
....
Du schreibst den Text der Textbox in Variable $x. Und dann überschreibst Du $x sofort wieder mit der Variable $users, welche aber erst später gefüllt wird.

....
$users = Get-ADUser -Filter * -Properties GivenName, Surname, Name, Created, Modified, CanonicalName, Enabled, LockedOut, LastLogonDate, PasswordLastSet, LastBadPasswordAttempt, PasswordNeverExpires, PasswordNotRequired, DisplayName, Description, Title, Office, OfficePhone, EmailAddress, HomeDirectory, HomeDrive, UserPrincipalName
....
Du benutzt in der Abfrage gar nicht den Text aus der Textbox sondern einfach den Universalfilter "*".

Mach mit: Was müsstest Du ändern?
Member: BastiCn
BastiCn Jul 08, 2020 at 07:16:50 (UTC)
Goto Top
Danke für den Hinweis, emeriks!

Also ich hab das jetzt wie folgt zusammen gestellt.

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$form = New-Object System.Windows.Forms.Form
$form.Text = '*'  
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'  

$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'Okay'  
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)

$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Exit'  
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)

$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Username?'  
$form.Controls.Add($label)

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)

$form.Topmost = $true

$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()

    $x = $textBox.Text
    $x = Get-ADUser $textBox -Properties * | FL GivenName, Surname, Name, Created, Modified, CanonicalName, Enabled, LockedOut, LastLogonDate, PasswordLastSet, LastBadPasswordAttempt, PasswordNeverExpires, PasswordNotRequired, DisplayName, Description, Title, Office, OfficePhone, EmailAddress, HomeDirectory, HomeDrive, UserPrincipalName | out-string

Ich bekomme aber leider folgende Fehlermeldung, die ich nicht richtig interpretieren kann:

Get-ADUser : Der Parameter "Identity" kann nicht gebunden werden. Der Wert "System.Windows.Forms.TextBox, Text: USERID vom Typ "System.Windows.Forms.TextBox" kann
nicht in den Typ "Microsoft.ActiveDirectory.Management.ADUser" konvertiert werden.

Danke für Eure Mithilfe!

viele Grüße
Member: emeriks
Solution emeriks Jul 08, 2020 at 07:22:36 (UTC)
Goto Top
OK, wir kommen näher.
Vergleiche Zeilen 41 und 42.
Member: BastiCn
BastiCn Jul 08, 2020 at 10:59:22 (UTC)
Goto Top
geschnipsel-----
    $x = $textBox.Text
    Get-ADUser $textBox.Text -Properties *
geschnipsel-----

Danke Dir emeriks!