Benutzer mit den meisten Antworten
Script zur Erstellung von Exchange- und Active Directory-Usern

Frage
-
Hallo liebe Community,
ich habe die Aufgabe, ein Script zu erstellen, dass das Erstellen eines Users in der Domäne also im Acitve Directory (Windows Server 2008 R2) und gleichzeitig ein Postfach für den User auf dem Exchange Server 2007 (Windows Server 2008) vereinfacht. Bisher wurde zunächst das Postfach erstellt und die Daten dazu abgefragt. Danach wurde das Active Directory aufgerufen und weitere Eigenschaften des Users eingetragen.
Bisher habe ich versucht, das Script mit der ExchangeVerwaltungsShell auf dem Exchange Server zu schreiben soweit es geht, dann die nötigen Variablen auf den Domain Controller zu exportieren und dort die restlichen Einstellungen mit der ActiveRolesManagementShell auszuführen. Allerdings erscheint mir dieses Vorgehen unnötig kompliziert. Auch auf dem Exchange Server 2007 - Server existiert ein Active Directory, allerdings ist die ActiveRolesManagementShell nicht mit Windows Server 2008 kompatibel (sondern nur mit WServer 2k8 R2). Gibt es eine andere Möglichkeit das Active Directory zu manipulieren und wo erlerne ich sie zum Beispiel? Ist mein Ansatz für das Script überhaupt richtig, oder habe ich einen Denkfehler gemacht?
Neugierigst und mit freundlichen Grüßen
B_inside
/B_out
Antworten
-
Ok ich habe einen anderen Weg gefunden. Die Lösung sieht in etwa so aus:
# Script zur Erstellung eines neuen Exchange- und Active Directory Users # Features: # Neue Mailbox für einen User # Unterscheidung zwischen Mitarbeiter und Praktikant # Unterscheindung zwischen den Standorten und Abteilungen # Automatische Eingabe von Organisationseinheit, Vorname, Nachname, Loginname, Password, Alias, E-mailadressen, # Office, Company, Manager, Member of, Adresse, PLZ, Wohnort, diverse Telefonnummern Do { $MAAbfrage = read-host ' Wählen Sie eine Berechtigungsstufe! 1 --> Mitarbeiter 2 --> Praktikant Eingabe: ' switch ($MAAbfrage) { "1" {$MALevel = 'Mitarbeiter'; } "2" {$MALevel = 'Praktikant'; } default {"Bitte nur 1 für 'Mitarbeiter' oder 2 für 'Praktikant' wählen!"} } } Until ($MAAbfrage -le "2") $Vorname = read-host ' Vorname eingeben! Eingabe: ' $Nachname = read-host ' Nachname eingeben! Eingabe: ' $Strasse = Read-Host ' Adresse eingeben! Eingabe: ' $PLZ = Read-Host ' Postleitzahl eingeben! Eingabe: ' $City = Read-Host ' Wohnort eingeben! Eingabe: ' $Phone = Read-Host ' Nummer im Firmennetz eingeben: Eingabe: ' $HomePhone = Read-Host ' Private Festnetznummer eingeben: Eingabe: ' $Mobil = Read-Host ' Private Handynummer eingeben: Eingabe: ' $Name = $Vorname + ' ' + $Nachname #$Name hat damit das Format "Vorname Nachname" Do { $OrtAbfrage = read-host ' Standort bestimmen: 1 --> Berlin 2 --> Hamburg Eingabe: ' switch ($OrtAbfrage) { "1" {$Ort = 'Berlin' ; If ($MALevel -eq "Praktikant") {$OUStandort = 'Berlin/Praktikanten'} Else {Do {$AbtAbfrage = read-host ' Welche Abteilung? 1 --> IT 2 --> Praktikanten 3 --> Verwaltung Eingabe: ' switch ($AbtAbfrage) { "1" {$OUStandort = 'Berlin/IT'} "2" {$OUStandort = 'Berlin/Praktikanten'} "3" {$OUStandort = 'Berlin/Verwaltung'} default {"Bitte eine verfügbare Abteilung wählen!"} } } Until ($AbtAbfrage -le "3") } } "2" {$Ort = 'Hamburg'; If ($MALevel -eq "Praktikant") {$OUStandort = 'Hamburg/Praktikanten'} Else {Do {$AbtAbfrage = read-host ' Welche Abteilung? 1 --> IT 2 --> Praktikanten 3 --> Verwaltung Eingabe: ' switch ($AbtAbfrage) { "1" {$OUStandort = 'Hamburg/IT'} "2" {$OUStandort = 'Hamburg/Praktikanten'} "3" {$OUStandort = 'Hamburg/Verwaltung'} default {"Bitte eine verfügbare Abteilung wählen!"} } } Until ($AbtAbfrage -le "3") } } default {"Bitte nur einen der Standorte Berlin oder Hamburg wählen!"} } } Until ($OrtAbfrage -le "2") $Organisationseinheit = "bsp.musterfirma.de/$OUStandort" $Alias = $Nachname.tolower() $Passwort = read-host ' Passwort eingeben! Eingabe: ' -AsSecureString $Domaene = '@musterfirma.de' $Punktname = $Vorname.tolower() + '.' + $Alias #Hat die Form "max.mustermann". $Loginname = $Vorname.tolower()[0] + $Alias #Hat die Form "mmustermann". $UPN = $Loginname + $Domaene #Hat die Form "mmustermann@musterfirma.de Do { $ManAbfrage = read-host ' Wählen Sie den Vorgesetzten! 1 --> John 2 --> Jack 3 --> James Eingabe: ' switch ($ManAbfrage) { "1" {$Manager = 'John Smith'; } "2" {$Manager = 'Jack Jackson'; } "3" {$Manager = 'James Deen'; } default {"Drücken sie eine der Tasten 1 bis 3!"} } } Until ($ManAbfrage -le "3") $mailboxdatabase = get-mailboxdatabase #Gilt nur, wenn es in der Firma nur eine MBDB gibt. #Bei mehreren MBDBs muss natürlich die richtige angegeben werden. #User-Mailbox anlegen und erste Daten befüllen. New-Mailbox -database $mailboxdatabase -name $Name -Password $Passwort -UserPrincipalName $UPN -Alias $Alias -Displayname $Name -Firstname $Vorname -Lastname $Nachname -OrganizationalUnit $Organisationseinheit -ResetPasswordonnextlogon $false #Restliche Daten einfüllen. Set-User -identity $Name -company "Musterfirma GmbH" -Office $Ort -Manager $Manager -City $City -HomePhone $HomePhone -MobilPhone $Mobil -Phone $Phone -PostalCode $PLZ -StreetAddress $Strasse $Mailbox = get-mailbox -identity $Name if ($MALevel -eq 'Mitarbeiter') #Hier bekommen Mitarbeiter ggü. Praktikanten {$Mailbox.emailaddresses.add("smtp:$Punktname$Domaene")} #die E-Mail-Adr.: max.mustermann@musterfirma.de else {} $Mailbox.emailaddresses.add("smtp:$Loginname$Domaene") Set-Mailbox -Instance $Mailbox if ($MALevel -eq 'Mitarbeiter') {Add-DistributionGroupMember -Identity "Mitarbeiter" -Member $Name} #Mitarbeiter werden hier vorab der AD-Gruppe 'Mitarbeiter' hinzugefügt, else {Add-DistributionGroupMember -Identity "Praktikanten" -Member $Name} #Praktikanten der Gruppe Praktikanten. if ($AbtAbfrage -eq "2") {Add-DistributionGroupMember -Identity "IT" -Member $Name} #Egal ob Praktikant oder Mitarbeiter, alle aus der IT-Abteilung else {} #kommen in die IT-Gruppe
- Als Antwort markiert B_inside Dienstag, 27. Juli 2010 08:35
Alle Antworten
-
Hallo,
gib mal in der EMS "get-user" ein. Damit kommst Du an das AD Objekt über die EMS. Theoretisch könntest Du auch über das .Net Framework gehen.
ACHTUNG UNGETESTET!
$user = get-user hugo $ad = new-object System.DirectoryServices.DirectoryEntry LDAP://deindac.deinedom.de/($user.distinguishedname) $ad = $ad.psbase $ad.invokeset("description","Deine Beschreibung") $ad.commitchanges() $ad.close()
Damit kommst Du auch an alle Eigenschaften ran.
Viele Grüße
Frank
-- Frank Röder MVP Directory Services blog.iteach-online.de -- -
Hallo Frank,
erstmal vielen Dank für deine Antwort. Grundsätzlich scheint das mein Problem zu lösen. Das man so einfach mit get-user auch ans AD rankommt konnte ich mir nicht vorstellen. PowerShell hat mich schon mehrfach mit seiner Einfachheit überrascht. =)
Dein Script stockt bei mir allerdings in der 2. Zeile und die erschließt sich mir auch nicht ganz. Ich lade in die Variable $ad ein neues Objekt, das woher kommt? System.DirectoryServices.DirectoryEntry soll eine Verbindung zum Active Directory anlegen. Allerdings erhalte ich bei
$ad = new-object System.DirectoryServices.DirectoryEntry LDAP://deindac.deinedom.de/($user.distinguishedname)
die fehlermeldung
New-Objetct: A parameter cannot be found that matches parameter name 'CN=Max Mustermann,OU=Technik,DC=bsp,DC=example,DC=de'.
Der User existiert bereits. Was genau findet er dort nicht?
-
Ok ich habe einen anderen Weg gefunden. Die Lösung sieht in etwa so aus:
# Script zur Erstellung eines neuen Exchange- und Active Directory Users # Features: # Neue Mailbox für einen User # Unterscheidung zwischen Mitarbeiter und Praktikant # Unterscheindung zwischen den Standorten und Abteilungen # Automatische Eingabe von Organisationseinheit, Vorname, Nachname, Loginname, Password, Alias, E-mailadressen, # Office, Company, Manager, Member of, Adresse, PLZ, Wohnort, diverse Telefonnummern Do { $MAAbfrage = read-host ' Wählen Sie eine Berechtigungsstufe! 1 --> Mitarbeiter 2 --> Praktikant Eingabe: ' switch ($MAAbfrage) { "1" {$MALevel = 'Mitarbeiter'; } "2" {$MALevel = 'Praktikant'; } default {"Bitte nur 1 für 'Mitarbeiter' oder 2 für 'Praktikant' wählen!"} } } Until ($MAAbfrage -le "2") $Vorname = read-host ' Vorname eingeben! Eingabe: ' $Nachname = read-host ' Nachname eingeben! Eingabe: ' $Strasse = Read-Host ' Adresse eingeben! Eingabe: ' $PLZ = Read-Host ' Postleitzahl eingeben! Eingabe: ' $City = Read-Host ' Wohnort eingeben! Eingabe: ' $Phone = Read-Host ' Nummer im Firmennetz eingeben: Eingabe: ' $HomePhone = Read-Host ' Private Festnetznummer eingeben: Eingabe: ' $Mobil = Read-Host ' Private Handynummer eingeben: Eingabe: ' $Name = $Vorname + ' ' + $Nachname #$Name hat damit das Format "Vorname Nachname" Do { $OrtAbfrage = read-host ' Standort bestimmen: 1 --> Berlin 2 --> Hamburg Eingabe: ' switch ($OrtAbfrage) { "1" {$Ort = 'Berlin' ; If ($MALevel -eq "Praktikant") {$OUStandort = 'Berlin/Praktikanten'} Else {Do {$AbtAbfrage = read-host ' Welche Abteilung? 1 --> IT 2 --> Praktikanten 3 --> Verwaltung Eingabe: ' switch ($AbtAbfrage) { "1" {$OUStandort = 'Berlin/IT'} "2" {$OUStandort = 'Berlin/Praktikanten'} "3" {$OUStandort = 'Berlin/Verwaltung'} default {"Bitte eine verfügbare Abteilung wählen!"} } } Until ($AbtAbfrage -le "3") } } "2" {$Ort = 'Hamburg'; If ($MALevel -eq "Praktikant") {$OUStandort = 'Hamburg/Praktikanten'} Else {Do {$AbtAbfrage = read-host ' Welche Abteilung? 1 --> IT 2 --> Praktikanten 3 --> Verwaltung Eingabe: ' switch ($AbtAbfrage) { "1" {$OUStandort = 'Hamburg/IT'} "2" {$OUStandort = 'Hamburg/Praktikanten'} "3" {$OUStandort = 'Hamburg/Verwaltung'} default {"Bitte eine verfügbare Abteilung wählen!"} } } Until ($AbtAbfrage -le "3") } } default {"Bitte nur einen der Standorte Berlin oder Hamburg wählen!"} } } Until ($OrtAbfrage -le "2") $Organisationseinheit = "bsp.musterfirma.de/$OUStandort" $Alias = $Nachname.tolower() $Passwort = read-host ' Passwort eingeben! Eingabe: ' -AsSecureString $Domaene = '@musterfirma.de' $Punktname = $Vorname.tolower() + '.' + $Alias #Hat die Form "max.mustermann". $Loginname = $Vorname.tolower()[0] + $Alias #Hat die Form "mmustermann". $UPN = $Loginname + $Domaene #Hat die Form "mmustermann@musterfirma.de Do { $ManAbfrage = read-host ' Wählen Sie den Vorgesetzten! 1 --> John 2 --> Jack 3 --> James Eingabe: ' switch ($ManAbfrage) { "1" {$Manager = 'John Smith'; } "2" {$Manager = 'Jack Jackson'; } "3" {$Manager = 'James Deen'; } default {"Drücken sie eine der Tasten 1 bis 3!"} } } Until ($ManAbfrage -le "3") $mailboxdatabase = get-mailboxdatabase #Gilt nur, wenn es in der Firma nur eine MBDB gibt. #Bei mehreren MBDBs muss natürlich die richtige angegeben werden. #User-Mailbox anlegen und erste Daten befüllen. New-Mailbox -database $mailboxdatabase -name $Name -Password $Passwort -UserPrincipalName $UPN -Alias $Alias -Displayname $Name -Firstname $Vorname -Lastname $Nachname -OrganizationalUnit $Organisationseinheit -ResetPasswordonnextlogon $false #Restliche Daten einfüllen. Set-User -identity $Name -company "Musterfirma GmbH" -Office $Ort -Manager $Manager -City $City -HomePhone $HomePhone -MobilPhone $Mobil -Phone $Phone -PostalCode $PLZ -StreetAddress $Strasse $Mailbox = get-mailbox -identity $Name if ($MALevel -eq 'Mitarbeiter') #Hier bekommen Mitarbeiter ggü. Praktikanten {$Mailbox.emailaddresses.add("smtp:$Punktname$Domaene")} #die E-Mail-Adr.: max.mustermann@musterfirma.de else {} $Mailbox.emailaddresses.add("smtp:$Loginname$Domaene") Set-Mailbox -Instance $Mailbox if ($MALevel -eq 'Mitarbeiter') {Add-DistributionGroupMember -Identity "Mitarbeiter" -Member $Name} #Mitarbeiter werden hier vorab der AD-Gruppe 'Mitarbeiter' hinzugefügt, else {Add-DistributionGroupMember -Identity "Praktikanten" -Member $Name} #Praktikanten der Gruppe Praktikanten. if ($AbtAbfrage -eq "2") {Add-DistributionGroupMember -Identity "IT" -Member $Name} #Egal ob Praktikant oder Mitarbeiter, alle aus der IT-Abteilung else {} #kommen in die IT-Gruppe
- Als Antwort markiert B_inside Dienstag, 27. Juli 2010 08:35