From 17d2dee899130c1546bad9568649b2ddebf4614d Mon Sep 17 00:00:00 2001 From: Christian Maintz <christianmaintz@t-online.de> Date: Thu, 16 Jul 2020 13:40:23 +0200 Subject: [PATCH] Add new file: Check-Invitations.ps1 --- Beispielprojekt/Check-Invitations | 86 +++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 Beispielprojekt/Check-Invitations diff --git a/Beispielprojekt/Check-Invitations b/Beispielprojekt/Check-Invitations new file mode 100644 index 0000000..6d529b3 --- /dev/null +++ b/Beispielprojekt/Check-Invitations @@ -0,0 +1,86 @@ +function Check-Invitations +{ + # Setzen der Parameter für die Funktionen + [CmdletBinding()] + param + ( + # Pfad zur Excel-Datei + $xlsxpath + ) + + # Importieren der Excel-Datei mit den Mailboxen + $File = Import-Excel -Path $xlsxpath + # Alt: $file = Import-CSV -Path "C:\Abschlussprojekt\Files\mai.rwth-aachen.de.csv" -Delimiter ";" + + # Importieren aller Mailboxen aus dem Mailsystem + $AllMbxsInMailsystem = $WS.GetMailboxList() | Select UPN,EMailaddress,GivenName,Sn,@{Name="QuotaInMB"; Expression = {$_.QuotaInB/1048576}},@{Name="TotalItemSizeInMB"; Expression = {$_.TotalItemsizeInB/1048576}},Mailboxtype + + # Importieren aller Invitations aus dem Mailsystem + $AllInvitations = $WS.GetInvitations() + + foreach($MbxinFile in $File) + { + if($MbxInFile.UPN -eq $null) + { + # Sucht nach dem jeweiligen Postfach im Mailsystem + $MbxInMailSystem = $AllMbxsInMailsystem | Where {$_.emailaddress -eq $MbxInFile.emailaddress} + + # Wenn das Postfach noch nicht existiert + if($MbxInMailSystem -eq $null) + { + # In allen vorhandenen Einladungen wird geprüft, ob das Postfach schon eingeladen wurde + $MbxInInvitations = $AllInvitations | Where {$_.EMailaddress -eq $MbxInFile.Emailaddress} + # Wenn kein Ergebnis zurückkommt, wird eine Einladung erstellt + if($MbxInInvitations -eq $null) + { + write-verbose "Das Postfach $($MbxInFile.Emailaddress) existiert noch nicht in der Domäne und wird nun eingeladen" + $quotaPools = $WS.GetQuotaPoolsForDomain($primaryDomain) + $QuotaPoolID = $quotapools[0].ID + $PrimaryEMailAddress = $MbxinFile.EMailaddress + $GivenName = $MbxinFile.GivenName + $Surname = $MbxinFile.Sn + $InitialQuotaINMB = $MbxinFile.InitialQuotaInMB + $Mailboxtype = 0 + + # QuotaPoolID,primaryEMailAddress,givenname,surname,quotaINMB,aliasadresses,Mailboxtype,deliverToMailboxAndForward,forwardingSmtpAddress,resourceOwner + $invitationResult = $WS.CreateMailaccountInvitation($quotaPools[0].ID, $PrimaryEMailAddress, $Surname, $GivenName, $InitialQuotaINMB, @(), $mailboxtype, $false, $null, $null) + } + # Wenn ein Ergebnis zurückkommt, kommt eine Statusmeldung der Einladung + else + { + write-verbose "Das Postfach $($MbxInFile.emailaddress) wurde am $(Get-Date $MbxInInvitations.Whencreated -Format "dd.MM.yyyy HH:mm") Uhr in die Domäne eingeladen, aber die Einladung wurde noch nicht angenommen (ActivationCode: $($MbxInInvitations.ActivationCode))" + #$MbxInFile.UPN = "TESTCODE@mai.rwth-aachen.de" + } + } + # Wenn das Postfach schon existiert, aber noch kein UPN in der Datei eingetragen ist. (Die Einladung wurde angenommen und die Datei wird nun bearbeitet) + else + { + write-verbose "Die Einladung für das Postfach $($MbxInFile.emailaddress) wurde nun angenommen. Excel-Datei wird nun mit dem UPN ergänzt" + + # Bearbeiten des Eintrags in der Variable zum späteren Exportieren + $MbxInFile.UPN = $MbxInMailSystem.UPN + # Setzen des Tags zum Überschreiben der Datei + $overwrite = 1 + } + } + # Wenn der UPN schon gesetzt ist + else + { + write-verbose "Der UPN des Accounts $($MbxInFile.Emailaddress) ist schon gesetzt und der Account existiert bereits in der Domäne." + } + } + + # Es wird geprüft, ob das Excelfile abgeändert wurde + if($overwrite -eq 1) + { + # Das abgeänderte Excelfile wird nun abgespeichert + # (da überschreiben nicht geht, wird das alte erst gelöscht und danach das neue erstellt) + write-verbose "Die Excel-Datei wird nun überschrieben mit den neuen Einträgen" + rm $xlsxpath + $File | Export-Excel -Path $xlsxpath -AutoFilter -AutoSize + } + else + { + write-verbose "Es mussten keine Änderungen am Excel-File vorgenommen werden. Excel File wird nicht überschrieben" + } +} #Ende der Funktion Check-Invitations \ No newline at end of file -- GitLab