pile of printing papers

Exchange Postfächer mit Daten füllen

Legt man ein Testpostfach an, möchte man dies auch mit Daten füllen um bestimmte Szenarien zu testen, beispielsweise Migrationsgeschwindigkeiten. In diesem Post zeige ich ein kleines Script, welches einem diese Arbeit abnimmt. Alles was Sie noch brauchen, ist ein Ordner mit Dateien (auf der Festplatte) und ein Limit, wie groß das Postfach werden soll.

[CmdletBinding()]
param( 
 [Parameter(Mandatory=$true)][String]$Recipient, 
 [Parameter(Mandatory=$true)][Int32]$SizeInMB, 
 [Parameter(Mandatory=$true)][String]$FilesFolder, 
 [Parameter(Mandatory=$true)][String]$O365Sender
)
$ErrorActionPreference = 'SilentlyContinue'

[Double]$totalsize = 0
[Double]$attsize = 0
$pw = Read-Host ("Please enter the password for " + $O365Sender) -AsSecureString | ConvertFrom-Securestring
$creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $O365Sender, ($pw | ConvertTo-SecureString)
#$files = Get-ChildItem -Path $FilesFolder -Exclude "*.mp4" -Recurse
$files = Get-ChildItem -Path $FilesFolder -include "*.pptx" -Recurse
$mailcount = 1
while ($totalsize -lt $SizeInMB)
{ 
 $attachment = $files[(Get-Random -Minimum 0 -Maximum ($files.Count - 1))].FullName 
 $attsize = ((Get-Item $attachment).Length / 1000000) 
 $totalsize += $attsize 
 Write-Host ("Sending mail number " + $mailcount.ToString() + "; total size: " + $totalsize.ToString()) 
 Send-MailMessage -From $O365Sender -to $Recipient -Attachments $attachment -SmtpServer smtp.office365.com -Credential $creds -UseSsl -Subject ("Mail number " + $mailcount.ToString() + " via PowerShell script") -port 587 -body "<br><h1>Hallo</h1><br><br>Dies ist eine automatische Mail<br><br>Regards,<br>Your PowerShell Bot" -BodyAsHtml  
 $mailcount++
}

Dieses Script wurde entwickelt, um Mails von einer Exchange Online Mailbox aus zu versenden. Es nutzt SMTP client submission in Exchange Online. Man muss also beachten, dass es nur 30 Nachrichten pro Minute versenden kann (Stand 17.11.2017 – dies kann sich jederzeit ändern)

Die Scriptparameter:

  • $recipient: Die Emailadresse des empfangenden Testpostfachs
  • $SizeInMB: Wieviele Daten werden dort hin gesendet. Das Script sendet so lange Mails an das Testpostfach, bis es dieses Limit erreicht. Es prüft allerdings nicht gegen die echte Größe im Ziel, also könnte das Ergebnis aufgrund Technologien wie DAOS oder Single-Instacing-Store o.ä. eine kleinere Mailbox sein.
  • $FilesFolder: Der Ordner mit den potentiellen Anhängen, die versendet werden. Das Script pickt sich wahllos PPTX-Dateien heraus und verschickt diese. Soll es andere Dateitypen versenden, kann man den Suchfilter im Script anpassen. Ich habe mich im Beispiel für PPTX entschieden, da diese oft groß sind und ich sehr viele davon habe. Wenn man viele braucht, empfehle ich den Ignite downloader.
  • $O365Sender: Der Anmeldename des absendenden Postfachs

Mit kleinen Anpassungen kann man dieses Script auch gegen ein on-premises gehostetes Postfach laufen lassen.

Auf meiner GitHub Seite kann man dieses Script auch herunterladen: PowerShell-ExchangeOnline GitHub Repository

Published by Andreas

Gründer von M365 Evangelists Cloud-Architekt, Strategieberater, Consultant für Microsoft Technologien Graph API Enthusiast, PowerShell Enthusiast