Hallo,
Ich habe ein problem mit Try Catch es macht mir nie das was in Catch steht nur was in try steht (ich habe natürlich auch fehler eingebaut sodass eigentlich das kommen sollte was in Catch steht).
Was muss ich machen das es richtig funktioniert.
Lg
Script ohne Fehler:
try { # deklaration (bekannt machen) von einer Funktion Function NEWADUSER { param ( [string]$Vorname, [string]$Nachname, [string]$Gruppe, [string]$Password, [string]$Email, $PasswordNeverExpires, $CannotChangePassword ) $name = $Vorname + "." + $Nachname $displayname = $Vorname + " " + $Nachname $OUPath = "OU=Konten,OU=Test,DC=test,DC=local" $kuerzel = $Vorname[0] + $Nachname[0] $ConverToSecureString = $Password | ConvertTo-SecureString -AsPlainText -Force New-Aduser $name ` -AccountPassword $ConverToSecureString ` -DisplayName "$dispyname" ` -path $OUPath ` -EmailAddress $Email ` -Initials "$kuerzel" ` -givenname "$vorname"` -surname "$nachname"` -UserPrincipalName ($name +"@test.local") #Hier werden die einzelnen Flags definiert ob die Flags true oder fals sind steht in der CSV Datei. Set-ADAccountControl -Identity $name -PasswordNeverExpires $PasswordNeverExpires Set-ADAccountControl -Identity $name -CannotChangePassword $CannotChangePassword Set-ADAccountControl -Identity $name -Enabled $true #Hier wird überprüft ob die Gruppe die in der CSV Datei steht schon vorhand ist oder nicht, #Wenn Sie nicht vorhand ist wird die Gruppe erstellt. $groupcheck = Get-ADGroup -LDAPFilter "(sAMAccountName=$Gruppe)" If ($groupcheck -eq $null) { New-ADGroup -Name "$Gruppe" -GroupCategory Security -GroupScope Global -DisplayName "$Gruppe" -Path "OU=Groups,OU=Test,DC=test,DC=local" } else { #Hier wird der Benutzer der Gruppe hinzugefügt. Add-ADGroupMember -Identity "$Gruppe" -Members $name } $Antwort1 = New-Object PSObject $Antwort1 | Add-Member -MemberType NoteProperty -Name Name -value $Vorname $Antwort1 | Add-Member -MemberType NoteProperty -Name Nachname -value $Nachname $Antwort1 | Add-Member -MemberType NoteProperty -Name Status -value "Der Benutzer wurde erfolgreich erstellt." # ausgabe des Ergebniss # Write-Output $Antwort1 # oder # return $Antwort1 # oder $Antwort1 } $erfolg = "erfolgreich" write-host "erfolgreich" exit 0 } catch { remove-ADUser $name -Confirm:$false $keinerfolg = "Benutzer konnte nicht angelegt werden" Write-Host "Der Benutzer $name konnte nicht angelegt werden, weil: " $Error[0] exit 1 } finally{ # deklaration (bekannt machen) von einer Funktion Function CreateHTML { # erzeugen einer leeren ArrayList $AntwortListe = [System.Collections.ArrayList]@() $CSVDaten = Import-Csv -Path "C:\scripts\csv\mitarbeiter.csv" -Delimiter ";" | % {[Boolean]$_.PasswordNeverExpires = [System.Convert]::ToBoolean($_.PasswordNeverExpires); $_.CannotChangePassword = [boolean]::Parse($_.CannotChangePassword);$_ } foreach($Benutzer in $CSVDaten) { # nutzen der nun bekannte Funktion $Antwort = NEWADUSER -Vorname $Benutzer.Vorname -Nachname $Benutzer.Name -Gruppe $Benutzer.Gruppe -Password $Benutzer.Password -PasswordNeverExpires $Benutzer.PasswordNeverExpires -CannotChangePassword $Benutzer.CannotChangePassword # zufügen des ergebnisses zu der ArrayList $Antwortliste.add($Antwort) } $AntwortListe | ConvertTo-Html | Out-File "C:\scripts\test.html" } # nutzen der nun bekannte Funktion CreateHTML 'C:\scripts\test.html' & 'C:\Program Files (x86)\Internet Explorer\iexplore.exe' 'C:\scripts\test.html' }
csv:
Vorname;Name;Gruppe;Password;Email;CannotChangePassword;PasswordNeverExpires
test4;nachname;keineahnung;Abcd1234abcd;test.nachname@gmx.com;false;false