From 787f65ba3d87fdbb4926b3eee496885f084848ac Mon Sep 17 00:00:00 2001 From: Christian Maintz <christianmaintz@t-online.de> Date: Thu, 16 Jul 2020 13:45:24 +0200 Subject: [PATCH] Add new file: Check-Mailinglists.ps1 --- Beispielprojekt/Check-Mailinglists.ps1 | 65 ++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Beispielprojekt/Check-Mailinglists.ps1 diff --git a/Beispielprojekt/Check-Mailinglists.ps1 b/Beispielprojekt/Check-Mailinglists.ps1 new file mode 100644 index 0000000..d0e1daf --- /dev/null +++ b/Beispielprojekt/Check-Mailinglists.ps1 @@ -0,0 +1,65 @@ +function Check-Mailinglists +{ + [CmdletBinding()] + param + ( + # Pfad zur Excel-Datei + $xlsxpath + ) + + # Importieren der Excel-Datei mit den Mailboxen + $File = Import-Excel -Path $xlsxpath + + # Importieren aller Postfächer aus dem Mailsystem + $AllMbxsInMailsystem = $WS.GetMailboxlist() + + # Importieren aller Mailinglisten aus dem Mailsystem + $AllMailingLists = $WS.getMailLists() + write-verbose "Es gibt folgende Mailinglists:" + + # Aufzählen aller Mailinglists untereinander (bei Write-Verbose "$AllMailingLists.Emailaddress" wäre die Anzeige nebeneinander, was nicht gut aussieht) + foreach($Mailinglist in $AllMailinglists) + { + write-verbose "$($Mailinglist.Emailaddress)" + } + + # ForEach-Schleife für die Überprüfung + foreach($MailingList in $AllMailinglists) + { + # Ausgabe für Verbose + write-verbose "`n --Die Mailingliste $($Mailinglist.emailaddress) wird nun überprüft" + + # Holen der gewünschten Subscriber der Mailingliste aus der Excel-Datei + $SupposedMembers = $File | Where {$_.UPN -ne $null -and $_.Mailinglists -like "*$($Mailinglist.EMailaddress)*"} + + # Holen der aktuellen Mitglieder der Mailingliste + $CurrentMembers = $WS.GetUsersInMaillist($Mailinglist.EMailAddress) + + foreach($SupposedMember in $SupposedMembers) + { + # Wenn der gewünschte Member in der Mailingliste enthalten ist, ist alles ok. + if($Currentmembers.Emailaddress -contains $SupposedMember.Emailaddress) + { + write-verbose "$($SupposedMember.Emailaddress) ist schon in der Mailingliste $($Mailinglist.Emailaddress) und auch ein gewünschter Member. Alles korrekt" + } + # Wenn der gewünschte Member noch KEIN Mitglied der Mailingliste ist, wird er hinzugefügt + elseif($CurrentMembers.Emailaddress -notcontains $SupposedMember.Emailaddress) + { + write-host "$($SupposedMember.Emailaddress) ist ein gewünschter Member der Mailingliste $($Mailinglist.Emailaddress), ist aber noch kein Mitglied. Wird nun hinzugefügt" -foreground yellow + $WS.AddMailboxToMaillist($Mailinglist.Emailaddress,$SupposedMember.UPN) + #$WebserviceConnection.addMailboxToMaillist($distributionlist, $mailbox.upn) + } + } + + # Testen in die andere Richtung nach nicht gewünschten Einträgen + foreach($CurrentMember in $CurrentMembers) + { + # Wenn der aktuelle Member NICHT in den gewünschten Membern vorhanden ist, wird er entfernt + if($SupposedMembers.Emailaddress -notcontains $CurrentMember.Emailaddress) + { + write-host "$($CurrentMember.Emailaddress) ist schon in der Mailingliste $($Mailinglist.Emailaddress), ist aber KEIN gewünschter Member. Wird nun entfernt" -foreground yellow + $ws.RemoveMailboxFromMaillist($Mailinglist.Emailaddress,$Currentmember.UPN) + } + } + } +} #Ende der Funktion Check-Mailinglists \ No newline at end of file -- GitLab