Exchange Server 2013 – Getrennte Postfächer anzeigen & löschen

Die getrennten Postfächer werden nur einmal täglich, je nach Konfiguration meistens in der Nacht, aktualisiert. Wenn man also ausversehen einen Benutzer gelöscht hat, muss man dadurch unter Umstäden einen Tag warten. Um dies zu beschleunigen um das Postfach schnell wieder verbinden zu können oder das Postfach zu löschen, kann die Powershell benutzt werden.

Möglicher Status

Gelöschte Postfächer können verschiedenen Status haben.

Disbabled

Wenn ein Postfach den Status Disabled hat, wurde der User oder auch nur das Postfach gelöscht.

SoftDeleted

Wenn ein Postfach in eine andere Datenbank verschoeben wurde, bleibt es in der alten Datenbank mit dem Status SoftDeleted erhalten. Die Dauer ist konfiguriertbar.

Getrennte Postfächer aktualisieren

Hiermit werden Postfächer die grade gelöscht wurden, für alle Datenbanken sofort als getrennt angezeigt:

Get-MailboxDatabase | Clean-MailboxDatabase

Nun kann man diese in der Exchange Verwaltungskonsole anzeigen lassen und ggf. schnell wiederverbinden.

Getrennte Postfächer löschen

Wenn man die Postfächer sofort löschen und die Aufbewahrungszeit außerkraft zu setzen will, kann dies folgendermaßen geschehen. Erst müssen die gelöschten Postfächer ausgelesen werden, um die Identity zu bekommen. Diese kann dann genutzt werden, um das Postfach zu löschen:

Get-MailboxDatabase | Get-MailboxStatistics | Where{ $_.DisconnectDate -ne $null } | fl DisplayName, Database, Identity, DisconnectReason

Disabled Postfächer löschen

Diese Identity kann nun verwendet werden, um das Postfach mit dem Status „Disabled“ in der Datenbank „Datenbank“ zu löschen:

Remove-StoreMailbox -Database “Datenbank” -Identity “3242341-3d35-34f8-4324-asdkasdj34jfs” -MailboxState “Disabled”

SoftDeleted Postfächer löschen

Diese Identity kann nun verwendet werden, um das Postfach mit dem Status „SoftDeleted“ in der Datenbank „Datenbank“ zu löschen:

Remove-StoreMailbox -Database “Datenbank” -Identity “3242341-3d35-34f8-4324-asdkasdj34jfs” -MailboxState “Softdeleted”

Exchange Server 2010 – IMAP, POP3 und SMTP Einstellungen im Outlook WebApp anzeigen

In Exchange Server 2010 ist es möglich, die Verbindungseinstellungen zu IMAP,POP3 und SMTP, im Outlook WebApp für die Benutzer zu veröffentlichen. Dazu muss die Powershell benutzt werden.

POP3 Einstellungen

Set-POPSettings -ExternalConnectionSettings "pop.domain.de:ssl"

IMAP Einstellungen

Set-IMAPSettings -ExternalConnectionSettings "imap.domain.de:993:ssl"

SMTP Einstellungen

ReceiveConnector -Identity "ServerName\Client ServerName" -AdvertiseClientSettings:$true

Beispiel

webmail

Windows Server 2008 R2 – Standard zur Enterprise

Einen Windows Server 2008 R2 Standard kann man nachträglich zu Enterprise Version umrüsten. Zu beachten ist, dass man nur auf höhere Lizenzen upgraden kann. Ein Wechsel von Enterprise auf Standard ist daher nicht möglich.

Außerdem zu beachten: Es wird nicht nur die Lizenz bzw. der Product-Key geändert, sondern viele Änderungen am System vorgenommen. Daher ist ein später Upgrade auf einem produktiven Server nicht unbedingt die beste Lösung.

Aktuelle Version auslesen
DISM /online /Get-CurrentEdition

Standard auf Enterprise ändern

DISM /online /Set-Edition:ServerEnterprise /ProductKey:XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

Active Directory – User Bilder – Outlook 2010 / Lync 2010 – Teil 2

Jetzt werde ich zeigen, wie man das zuvor aktivierte Feature auch benutzen kann, bzw. Bilder in das Active Directory laden kann.

Einschränkungen für Bilder

  • Bilder müssen kleiner als 10 KB sein
  • Bilder müssen im JPG oder GIF Format vorlieren

Bilder in das Active Directory laden

Dem Benutzer manuel.maliszewski wird das Bild „C:\Users\chilli\Desktop\manuel.maliszewski.jpg“ zugeordnet und hoch geladen.

Import-RecipientDataProperty -Identity manuel.maliszewski -Picture -FileData ([Byte[]]$(Get-Content -path "C:\Users\chilli\Desktop\manuel.maliszewski.jpg" -Encoding Byte -ReadCount 0))

Bilder hochladen automatisieren

Damit das folgendes Script funktioniert, müssen die Bilder im Verzeichnis „C:\Photos“ vorname.nachme.jpg heißen. Der Aufruf würde dann so aussehen: script.ps -all

param([Switch]$all, [String]$UserName)

#Default Values. Change them based on your environment.
$DefaultPhotoPath = 'C:\Photos'

Function CheckPhoto(){
 Write-Warning "Validating file(s).."
 Write-Host "File exists... " -nonewline
 If (Test-Path $PhotoPath)
 {
 Write-Host "[OK]" -ForeGroundColor Green
 Write-host "Photo size... " -nonewline
 $PhotoSize = Get-ChildItem $PhotoPath | select Length
 If ($PhotoSize.Length -le 10000) { Write-Host "[OK]" -ForeGroundColor Green } Else { Write-Host "[Fail]" -ForeGroundColor Red; exit }
 }
 Else
 {
 Write-Host "[Fail]" -ForeGroundColor Red
 Exit
 }
}

Function UploadAll(){
 ForEach ($TempFile in Get-ChildItem $DefaultPhotoPath | Where-Object { $_.Extension -eq ".jpg" } )
 {
  $TempUserName = $TempFile.Name.substring(0, $TempFile.Name.Length - 4)
  Write-Host $TempUserName -ForeGroundColor Yellow -NoNewLine
  Import-RecipientDataProperty -Identity $TempUserName -Picture -FileData ([Byte[]]$(Get-Content -path $TempFile.Fullname -Encoding Byte -ReadCount 0))
  Write-Host "[Done]" -ForeGroundColor Green
 }
}

If ( $all -eq $true)
 {
 Write-Warning " ## This action will upload all pictures of C:\Photos to the AD users."
 Write-Warning " ## All pictures must have the same name of the usernames"
 Write-Warning "Are you sure that you want upload all pictures to the users (Y/N)?"
 $Opt = Read-Host
 If ( $Opt -eq 'y' ) { UploadAll; } Else { Write-Host "No changes were made."; Exit }
 }
Else
 {
 $PhotoPath = $DefaultPhotoPath + $UserName + '.jpg'
 CheckPhoto;
 If ( $AbortMission -eq '$true' ) { Write-Error "Please, review the errors and try again." } Else { Import-RecipientDataProperty -Identity $UserName -Picture -FileData ([Byte[]]$(Get-Content -path $PhotoPath -Encoding Byte -ReadCount 0)) }
 }

Dateinamen anpassen

Um den Upload Prozess zu automatisieren, ist es sinnvoll alle Bilder in dem Syntax vorname.nachname.jpg zu speichern. Da das in der Regel nicht der Fall ist, kann mit einigen Tools Dateinamen umbenennen. Wir haben z.B. Bilder im Format Nachname-Vorname_s.jpg und müssen diese entsprechend anpassen. Dafür kann man z.B. Total Commander benutzen und mit dem Dateiumbennenungs-Feature arbeiten.

In dem Beispiel würde das dann so aussehen:

Suchen nach: (.*)\-(.*)\_s.jpg
Ersetzen mit: $2.$1.jpg

Links

Active Directory – User Bilder – Outlook 2010 / Lync 2010 – Teil 1

Um jedem Active Directory Benutzer ein Bild zuzuordnen, muss erstmal ein bisschen was konfiguriert werden.

Active Direcory

DLL regestrieren

Um die Bilder im Active Directory aktivieren zu können, muss zuerst eine DLL registriert werden.

Start -> Ausführen -> regsvr32 schmmgmt.dll

Active Directory Schema

Jetzt muss das Attribut des Bildes auf allen Globalen Katalog Server repliziert werden.

  • Im ADSI-Editor das User Objekt öffnen
  • Das Attribut thumbnailPhoto öffnen
  • Die Eigenschaft „Replicate this attribute to the Global Catalog“ aktivieren

Offline Adressbuch

Jetzt muss das Offline Adressbuch angepasst werden. Damit werden die Bilder dem OAB hinzugefügt und stehen damit dem Exchange Cache-Modus zur Verfügung.

Attribut löschen

$attributes = (Get-OfflineAddressBook).ConfiguredAttributes
$attributes.Remove("thumbnailphoto,Indicator")
Get-OfflineAddressBook | Set-OfflineAddressBook -ConfiguredAttributes $attributs

Neues Attribute hinzufügen

Nun kann das Attribut mit dem Bild dem OAB hinzugefügt werden.

$attributes.Add("thumbnailphoto,Value")
Get-OfflineAddressBook | Set-OfflineAddressBook -ConfiguredAttributes $attribute

Offline-Adressbuch regenerieren

Damit die Änderungen aktiviert werden, muss das OAB regeneriert werden.

Get-OfflineAddressBook | Update-OfflineAddressBook

Ergebnis in Outlook 2010 und Lync 2010