Powershell KungFu – Office 365 Konten / Ressourcen anlegen
Herstellen einer Powershell Verbindung zu Office 365 / Exchange Online
Als erstes müssen wir eine Session zu Exchange Online herstellen, danach können wir diese Session importieren, und wenn wir unsere Arbeit getan haben, wieder entfernen. Als Credential Daten, muss ein Account (Exchange Online / Office 365) verwendet werden, welcher die entsprechenden Rechte besitzt, die gewünschten Arbeiten durchzuführen.
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session
Remove-PSSession $Session
Bestehende Ressource auflisten
Es wird bei den Ressourcenkonten zwischen Raum und Gerät unterschieden. Mit den folgenden Abfragen, können die bestehenden Ressourcenkonten entsprechend ihrem Ressourcentyp aufgelistet werden. Ressourcenkonten in Office 365 sind kostenlos.
Get-Mailbox | Where{$_.ResourceType -eq "Room"}
Get-Mailbox | Where{$_.ResourceType -eq "Equipment"}
Get-Mailbox | Where{($_.ResourceType -eq "Room") -or ($_.ResourceType -eq "Equipment")}
Erstellen neuer Ressourcen Konten
Beginnen wir mit dem simplen anlegen eines Raum und eines Geräte Postfaches ohne weitergehende Einstellungen. Dies kann wie in folgendem Beispiel erfolgen.
New-Mailbox -Name "Testraum1" -Room
New-Mailbox -Name "Geraet1" -Equipment
Massenbearbeitung / Datenquelle CSV
Da für die Erstellung eines einzelnen Postfaches der Weg über die Powershell gegenüber der WebGUI keinen immensen Vorteil bietet, interessiert uns vor allen Dingen, die Massenerstellung von Postfächern.
Wir bleiben bei unserem Beispiel der Ressourcenpostfächer und gehen davon aus, dass wir 1-n Postfächer nach folgendem Muster erstellen müssen.
Name | DisplayName | EmailAddresses | Type |
Projektraum1 | Projektraum1 | Projektraum1@m-co.ch | Room |
Projektraum2 | Projektraum2 | Projektraum2@m-co.ch | Room |
Projektraum3 | Projektraum3 | Projektraum3@m-co.ch | Room |
In ein CSV File verpackt sieht unsere CSV Datenquelle wie folgt aus.
Wir empfehlen euch die CSV Datei im Unicode Format abzuspeichern.
Name; DisplayName; EmailAddresses; Type
Projektraum1; Projektraum1; Projektraum1@m-co.ch; Room
Projektraum2; Projektraum2; Projektraum2@m-co.ch; Room
Projektraum3; Projektraum3; Projektraum3@m-co.ch; Room
Benennung der Beispiel CSV Datei für die weitere Verwendung: room.csv
Import CSV in Powershell
Um die eben erstellte CSV Datei in Powershell zu importieren kann folgender Code verwendet werden.
$Data = import-csv -Delimeter ";" -Path .\room.csv
<# Beginn Kommentarblock Ausgabebeschreibung
Der Aufruf von $Data wirft dann folgende Daten aus.
Name DisplayName EmailAddresses Type
---- ----------- -------------- ----
Projektraum1 Projektraum1 Projektraum1@m-co.ch Room
Projektraum2 Projektraum2 Projektraum2@m-co.ch Room
Projektraum3 Projektraum3 Projektraum3@m-co.ch Room
Mögliche Abfragen wären nun
$Data[1]
Name DisplayName EmailAddresses
---- ----------- --------------
Projektraum2 Projektraum2 Projektraum2@m-co.ch
$Data.Name
Projektraum1
Projektraum2
Projektraum3
$Data.DisplayName[1]
Projektraum2
Ende Kommentarblock Ausgabebeschreibung #>
Abarbeitung der Ressourcen-Postfach-Erstellung
Im folgenden werden die in $Data gespeicherten Daten zur Abarbeitung der Postfacherstellung verwendet. Über den "foreach" Befehl wird jeder Datensatz einzeln abgearbeitet. Über die Abfrage des Postfach Type, erfolgt die Unterscheidung ob es ein Raum oder ein Equipment Postfach werden soll. Der folgende Code enthält keinerlei Errorhandling, oder Abfrage ob ein Postfach schon vorhanden ist.
foreach($Box in $Data){
If($Box.Type -eq "Room"){
New-Mailbox -Name $Box.Name -DisplayName $Box.DisplayName -Room
}ElseIf($Box.Type -eq "Equipment"){
New-Mailbox -Name $Box.Name -DisplayName $Box.DisplayName -Equipment
}
}
Die e-Mail Adresse(n), die Primäre e-Mail Adresse
Bei der Erstellung des Ressourcen Kontos wird anhand des gewählten Namens, automatisch eine e-Mail Adresse vergeben.
Diese Adresse kann der gewünschten entsprechen, muss es aber nicht. Genauso kann es gewünscht sein, dass mehrere e-Mail Adressen einem Konto hinterlegt werden.
Im nächsten Codeblock schauen wir also mal, wie wir auf die Werte für e-Mail Adresse(n) und die Primäre Adresse zugreifen können.
$Mailbox = Get-Mailbox Projektraum6 -ResultSize Unlimited
$Mailbox
# Die Abfrage der Variable $Mailbox ergibt
# Name Alias ServerName ProhibitSendQuota
# ---- ----- ---------- -----------------
# Projektraum6 Projektraum6 vi1pr0301mb1951 99 GB (106,300,440,576 bytes)
$Mailbox.PrimarySmtpAddress
# Der Zugriff auf den Wert PrimarySmtpAddress der Variable $Mailbox ergibt
# Projektraum6@M-Co.ch
# Nun kann einfach der PrimarySmtpAddress Wert mit dem gewünschten Wert des CSV Importes verglichen werden.
$Mailbox.PrimarySmtpAddress -like $Box.EmailAddresses
# In unserem Beispiel hier wäre das Ergebnis
# True
# Sollte eine andere Email Adresse, oder gar mehrere gewünscht sein, so lässt sich dies bewerkstelligen.
# Die erste Email Adresse wird zur Primary.
# Set-Mailbox -Identity Projektraum6 -EmailAddresses SMTP:erlen@m-co.ch,Projektraum6@m-co.ch
# Das Beispiel ergäbe beim Abrufen mit Get-Mailbox Projektraum6 | select EmailAddresses, PrimarySmtpAddress
# EmailAddresses : {smtp:Projektraum6@m-co.ch, SMTP:erlen@m-co.ch}
# PrimarySmtpAddress : erlen@m-co.ch