Ich schreibe gerade an einem PowerShell Script um Benutzer Daten anzulegen und ändern zu können.
Das Anzeigen vorhandener Benutzer klappt auch super, nur wenn der Benutzer in der AD nicht gefunden wurde und in eine andere Funktion springt habe ich ein Problem.
Wie gehe ich vor:
Es wird ein Formular aufgerufen:
Hier gebe ich den Anmeldenamen ein. Beim Verlassen des Feldes wird der Benutzer in der AD gesucht.
$handler_TB_Anmeldename_Leave= { Try { #Fehler abfangen, wenn der Anmeldename nicht gefunden wird. $Script:GetADUserResult = Get-ADUser -Identity $TB_Anmeldename.Text -Properties Title,Initials,telephoneNumber,otherTelephone,mobile,otherMobile,mail,description,physicalDeliveryOfficeName,EmployeeID,EmployeeNumber,extensionAttribute1,msTSProfilePath,distinguishedName -errorvariable myerrorvariable } Catch [Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException] { # Bei nicht gefundenem Anmeldenamen wird zur Eingabe gesprungen Write-Host "Benutzer wird angelegt" $SetADUser = @() Set-WLUserEingabe return; } Catch { Write-Host "Es ist ein unbekannter Fehler aufgetreten!"+$Error[0] break } Finally { Write-Host "Finally und dann nix" } Write-Host "Benutzer anzeigen" # Wenn der Benutzer vorhanden ist und kein Fehler aufgetreten ist, werden die Attribute angezeigt. If (!$myerrorvariable) { Get-WLUserDaten } }
Sollte der Benutzer vorhanden sein, dann werden die Attribute, soweit in der AD gepflegt, angezeigt.
Ist der Benutzer nicht vorhanden, dann wird die Funktion Set-WLUserEingabe gesprungen.
In dieser Funktion sollen die Attribute eingetragen werden, bis ein bestimmtes Ereignis eintritt, z.B. klicken auf einen Button Speichern. Zur Zeit soll die Eingabe solange aktiv bleiben, bis das Feld Kartennummer einen bestimmten Wert hat.
function Set-WLUserEingabe() { $TB_UserPrincipalName.Focus() Do { $SetADUser.Anmeldename = $TB_Anmeldename.Text $TB_UserPrincipalName.Text = $TB_Anmeldename.Text+"@WL.ADS" $SetADUser.UserPrincipalName = $TB_UserPrincipalName.Text $SetADUser.Title = $TB_Titel.Text $SetADUser.GivenName = $TB_Vorname.Text $SetADUser.Surname = $TB_Nachname.Text $SetADUser.Initials = $TB_Initalen.Text $SetADUser.telephoneNumber = $TB_TelefonNr.Text $SetADUser.otherTelephone = $TB_TelefonKurzw.Text $SetADUser.mobile = $TB_HandyNr.Text $SetADUser.otherMobile = $TB_HandyKruzw.Text $TB_EMailAdresse.Text = $TB_Vorname.Text+"."+$TB_Nachname.Text+"@westlotto.com" $SetADUser.mail = $TB_EMailAdresse.Text $SetADUser.physicalDeliveryOfficeName = $TB_Dienstort.Text $SetADUser.description = $TB_Beschreibung.Text $SetADUser.EmployeeNumber = $TB_MitarbeiterNr.Text $SetADUser.EmployeeID = $TB_Kartennr.Text Write-Host $SetADUser.Anmeldename }until($TB_Kartennr.Text -eq "Schluss") }
Leider hängt sich das Script in der Do-Until Schleife auf bzw. das Script wird nicht bedienbar! Weiß einer Rat? Oder wo habe ich einen Denk Fehler?
Gruß
Dirk