wise 0 Geschrieben 30. August 2018 Melden Teilen Geschrieben 30. August 2018 Hallo, ich möchte in einen Exchange Server 2010 zahlreiche Email Kontakte einbringen. Wie kann ich z.B. über die Management Shell eine CSV Datei abarbeiten und daraus die AD-Objekte nebst Exchange Kontakte anlegen? Falls es möglich wäre, diese über die CSV Datei auch noch einer oder mehrerer Verteilergruppen zu zuweisen (diese kann ich natürlich zuvor selbst per Hand anlegen), wäre das super. Ich würde mich sehr über eine Hilfe freuen - sonst muss ich die alle per Hand anlegen :( LG Wise Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 30. August 2018 Melden Teilen Geschrieben 30. August 2018 Das kannst du alles mit Powershell umsetzen. Wo steckst du denn fest? Hast du Powershell Grundkenntnisse? https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-powershell-1.0/ee176874(v=technet.10) https://docs.microsoft.com/en-us/powershell/module/exchange/users-and-groups/new-mailcontact?view=exchange-ps https://docs.microsoft.com/en-us/powershell/module/exchange/users-and-groups/new-distributiongroup?view=exchange-ps https://docs.microsoft.com/en-us/powershell/module/exchange/users-and-groups/add-distributiongroupmember?view=exchange-ps 1 Zitieren Link zu diesem Kommentar
wise 0 Geschrieben 30. August 2018 Autor Melden Teilen Geschrieben 30. August 2018 (bearbeitet) Ich hab mit der Powershell Erfahrung nur bei wirklich einfachen Befehlen; Also eher nur rudimentär. Ich weiß auch, dass man Verkettungen herstellen kann und habe (durch Hilfen aus verschiedenen Beiträgen) zum Beispiel folgende zwei Ansätze für mein Problem gefunden: (Import-CSV 'c:\datei.csv' -Delimiter ";") | %{ New-MailContact -Name $_.Name -ExternalEmailaddress $_.Email } Quelle: https://www.administrator.de/forum/exchange-2013-kontakte-csv-importieren-326974.html bzw. Import-Csv C:\datei.csv|%{New-MailContact -Name $_.Name -DisplayName $_.Name -ExternalEmailAddress $_.ExternalEmailAddress -FirstName $_.FirstName -LastName $_.LastName} Quelle: https://support.office.com/de-de/article/massenimport-von-externen-kontakten-in-exchange-online-bed936bc-0969-4a6d-a7a5-66305c14e958#step1 Ich möchte so wenig wie möglich Verwaltungsaufwand haben, weshalb mir die Mailadresse einfach als Anzeigename genügt. Meine Liste sieht nun also wie folgt aus: Email,Gruppe1,Gruppe2 Mueller@mail.de,Verteiler1, Maier@mail.de,,Verteiler2 Schulze@mail.de,Verteiler1,Verteiler2 Meine Tabelle hat also für jede mögliche Verteilergruppe, in welcher die Kontakte eingetragen werden sollen, eine eigene Spalte. Ich weiß nicht, wie es sinnvoll anzugeben wäre: Eine Spalte und "wie auch immer getrennt" die Verteilergruppen - das wäre kein Problem, die Liste dahingehend umzubauen - oder quasi diese Felder einfach hintereinander irgendwo anzugeben und bei Bedarf ist das Feld halt leer und daher findet keine Eintragung statt... Ich bräuchte also noch einen Parameter "Mitglied in Gruppe" für den New-MailContact Befehl, den ich dann entsprechend mit den Spalten fülle. Ich denke also, es müsste irgendwas sein wie: Import-Csv C:\datei.csv|%{New-MailContact -Name $_.Email -DisplayName $_.Email -OrganizationalUnit OU=ExterneKontakte,DC=domain,DC=de -ExternalEmailaddress $_.Email -Group $_.Gruppe1,$_.Gruppe2} Mein erstes Problem ist hier die Angabe mit der OU: Die Argumenttransformation für den Parameter "OrganizationalUnit" kann nicht verarbeitet werden. Der Wert "System.Collections.ArrayList" vom Typ "Sys tem.Collections.ArrayList" kann nicht in den Typ "Microsoft.Exchange.Configuration.Tasks.OrganizationalUnitIdParameter" konvertiert werden. + CategoryInfo : InvalidData: (:) [New-MailContact], ParameterBindin...mationException + FullyQualifiedErrorId : ParameterArgumentTransformationError,New-MailContact Mein zweites Problem ist die Angabe der Gruppen: Wie es mir nach deinem Link scheint, gibt es diesen Schalter so nicht. Demzufolge müsste ich das wohl wie hier beschrieben verketten: Add-DistributionGroupMember -Identity "Staff" -Member "JohnEvans@contoso.com" Aber da weiß ich nun nicht, wie ich das in den obigen Befehl einbaue. Evtl. würde folgendes funktionieren? Import-Csv C:\datei.csv|%{New-MailContact -Name $_.Email -DisplayName $_.Email -OrganizationalUnit OU=ExterneKontakte,DC=domain,DC=de -ExternalEmailaddress $_.Email; Add-DistributionGroupMember -Identity $_.Gruppe1 -Member $_.Email; Add-DistributionGroupMember -Identity $_.Gruppe2 -Member $_.Email} Aber DIESE Art von Verkettung sieht irgendwie falsch aus :( Danke erstmal für deine Hilfe. Kannst du mir hierbei noch auf die Sprünge helfen? bearbeitet 31. August 2018 von wise Fehler bei den Befehlen mit dem Parameter -OrganizationalUnit (Reihenfolge der Werte geändert) und Fehler bei zweitem Problem (Gruppen Namen standen noch hinter dem new-mailcontact Befehl) Zitieren Link zu diesem Kommentar
wise 0 Geschrieben 31. August 2018 Autor Melden Teilen Geschrieben 31. August 2018 (bearbeitet) Mein erstes Problem hab ich grad selbst behoben: Da fehlten einfach nur die Anführungszeichen. Beim zweiten Problem hab ich immerhin einen Workaround: Es darf keine leere Spalte geben, da alle nachfolgenden Spalten auf Grund des dann folgenden Fehlers nicht mehr bearebitet werden, weshalb leider mein bisheriger Ansatz so nicht funktioniert. Ich muss die Tabelle also dahingehend umbauen, dass ich für jede Gruppe eine Spalte an den Kontakt anhänge. Damit kann ich leben, aber es macht die Liste unübersichtlicher. Ich vermute ich müsste vorher immer eine Prüfung einbauen: Import-Csv C:\datei.csv|%{New-MailContact -Name $_.Email -DisplayName $_.Email -OrganizationalUnit OU=ExterneKontakte,DC=domain,DC=de -ExternalEmailaddress $_.Email; WENN(%_.Gruppe1 gesetzt, dann ´Add-DistributionGroupMember -Identity $_.Gruppe1 -Member $_.Email´); WENN(%_.Gruppe1 gesetzt, dann ´Add-DistributionGroupMember -Identity $_.Gruppe2 -Member $_.Email´)} Aber da weiß ich nicht, wie ich so Prüfungen richtig einbaue. Außerdem denke ich gibt es vielleicht schönere Lösungen :) bearbeitet 31. August 2018 von wise Lösung zu zweitem Problem weiter bearbeitet Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 31. August 2018 Melden Teilen Geschrieben 31. August 2018 Evtl. ist das zweite ein Timing Problem. Versuche mal folgendes: Import-Csv C:\datei.csv|%{New-MailContact -Name $_.Email -DisplayName $_.Email -OrganizationalUnit "OU=ExterneKontakte,DC=domain,DC=de" -ExternalEmailaddress $_.Email ;start-sleep 5; Add-DistributionGroupMember -Identity $_.Gruppe1 -Member $_.Email; Add-DistributionGroupMember -Identity $_.Gruppe2 -Member $_.Email} 1 Zitieren Link zu diesem Kommentar
wise 0 Geschrieben 31. August 2018 Autor Melden Teilen Geschrieben 31. August 2018 Danke. Unsere Beiträge haben sich ein bisschen überschnitten :) Wie oben geschrieben liegt mein Problem darin, dass nicht jeder Kontakt in jeder Gruppe sein soll. Verbunden mit dem Aufbau meiner Liste kommts dabei zu diesem Problem. Ich denke ich werde die Liste entsprechend anpassen. Fürs Filtern war mein Aufbau zwar einfacher, aber man kann sich umgewöhnen. Solltest du trotzdem noch eine schöne Lösung für meine bisherige Liste haben, würde mich das aber trotzdem noch interessieren. Vielen Dank jedenfalls für deine Hilfe. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 31. August 2018 Melden Teilen Geschrieben 31. August 2018 Ich habe das für einen ähnlichen Zweck anderst gebaut. Eine Liste mit Objekten und eine mit Gruppenmitglidschaften: gruppe1;user1 gruppe1;user2 gruppe2;user2 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.