Wenn sich ein bestimmter User nicht für Unified Messaging aktivieren lässt und Sie folgende Fehlermeldung bekommen, dann haben wir hier die Lösung:

Error occurred during execution of UM Mailbox Cmdlet for user “/o=XXX/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=929fc9a62f634c198ea7f630a2593615-XXX”, Error: “Microsoft.Exchange.UM.UMCommon.UmUserException: Access to Active Directory failed.
at Microsoft.Exchange.UM.UMCommon.UmPasswordManager.CommitPasswordAndUpdateChecksum()
at Microsoft.Exchange.UM.UMCommon.UmPasswordManager.SetPassword(EncryptedBuffer digits, Boolean isExpired, LockOutResetMode lockoutResetMode)
at Microsoft.Exchange.UM.UMCommon.Utils.SetUserPassword(MailboxSession mbxSession, UMMailboxPolicy umMbxPolicy, ADUser adUser, String pin, Boolean expired, Boolean lockedOut)
at Microsoft.Exchange.UM.UMCommon.CrossServerMailboxAccess.XSOUMUserMailboxAccessor.<>c__DisplayClassa.b__9()
at Microsoft.Exchange.UM.UMCommon.CrossServerMailboxAccess.XSOUMUserMailboxAccessor.ExecuteXSOOperation(Action function)”

Ursache: Diese typisch nichtssagende Meldung bekommen wir dann, wenn das Postfach aus irgendeinem Grund nicht in den (in der Address Book Policy festgelegten) Adresslisten eingetragen ist.

Behebung: Im ersten Schritt sollte man sich die Address Book Policy anschauen und feststellen, in welche Adresslisten das Postfach gehören sollte. Anschließend schauen wir uns das Postfach an und überprüfen, in welchen Listen es auch eingetragen ist. Im dritten Schritt überprüfen wir die Aufnahmeregeln der Listen, in denen das Postfach nicht ist aber sein sollte und führen dementsprechende Anpassungen durch.

Nach der Auswahl der Server-Version (Standard oder DTC) kann es vorkommen, dass man mit solchen Fehlern konfrontiert wird:

Windows cannot find the Microsoft Software License Terms. Make sure the installation sources are valid and restart the installation.

Keine Sorge, Ihr Installationsmedium ist nicht beschädigt. Dieser Fehler taucht auch meines Wissens nach nur bei virtuellen Maschinen auf.

Die Lösung ist einfach: Die Maschine hat zu wenig Arbeitsspeicher beim Systemstart. Erhöhen Sie bei dynamischem RAM einfach den beim Start verfügbaren und ansonsten den insgesamt bereitgestellten Arbeitsspeicher. Damit sollte das Problem behoben sein.

Manchmal kommt es vor, dass aus heiterem Himmel plötzlich keine Office-Dokumente mehr direkt aus dem SharePoint heraus geöffnet werden können. Folgende Fehlermeldung ist dann zu sehen:

‘[Dateiname]’ konnte nicht geöffnet werden.

Wenn die Datei heruntergeladen und anschließend geöffnet wird, so taucht dieses Problem nicht auf.

Ursache: Office speichert temporär auf dem lokalen Pfad C:\Users\[Benutzername]\AppData\Local\Microsoft\Office\[VersionsNr.]\OfflineFileCache die Dateien ab. Es scheint dabei vorzukommen, dass diese temporären Files nicht vernünftig bereinigt werden. Beim nächsten Öffnen einer Datei aus dem SharePoint bekommen Sie dann eine Fehlermeldung, da er wohl die Dateien nicht mehr richtig überschreiben oder lesen kann.

Lösung: Schließen Sie alle Office-Programme und entfernen Sie nun alle Dateien, die sich in dem Pfad C:\Users\[Benutzername]\AppData\Local\Microsoft\Office\[VersionsNr.]\OfflineFileCache befinden. Anschließend sollten die Dateien wieder aufgehen.

Die Möglichkeit, eine öffentliche Kontaktliste im SharePoint (2010) anzulegen wird von vielen genutzt, um innerhalb des Unternehmens eine Synchronisation der Kontakte zu realisieren.

Nun hat man meistens schon zu diesem Zeitpunkt eine gepflegte Kontaktliste und würde diese gerne in den SharePoint zu integrieren.

Leider gibt es hier eine Einschränkung, welche dafür sorgt dass Kontakte mit einem abweichenden Format in der Website von “https://(www.)domain.tld” nicht synchronisiert werden. Nun kann man von Hand jeden Kontakt überprüfen und bearbeiten, was bei 100+ Kontakten tierisch nerven könnte oder aber man nützt folgendes Script, das die Sache für Sie erledigt:

Download: Prepare-Contacts-For-SP

Für die technisch interessierten hier das Script im Klartext:

"##########################################"
"#            cloud4you GmbH              #"
"#          Webseiten-Korrektur           #"
"##########################################"
""
"    Bitte als Administrator ausführen!!"
""
""
""
"  Die folgende Abfrage bitte bestätigen:"
""
set-executionpolicy remotesigned
""
""
"Sofern bestätigt, läuft das Script nun"
"durch."
"Sollte statt der Abfrage eine rote"
"Fehlermeldung gekommen sein, wurde das"
"Script nicht als Administrator"
"ausgeführt. Sollte dies der Fall sein,"
"müssen Sie es nochmals ausführen, "
"trotz Erfolgsmeldung unten."
""
""
$outlook = new-object -com outlook.application

$contacts = $outlook.Session.GetDefaultFolder(10)

$contacts.Items | % { if($_.BusinessHomePage -NotMatch "http://")
{
    $_.BusinessHomePage = "http://" + $_.BusinessHomePage
    $_.save()    
}}
""
""
"Die Bearbeitung der Kontakte ist abgeschlossen."
""
"Nun können Sie die Kontakte in den SP schieben,"
"natürlich nur, wenn nichts rot geschrieben war."

Ein Szenario, welches viele wohl so oder so ähnlich schon kennen: Sie haben ein Exchange Postfach vor sich, höchst ordentlich verschachtelt und organisiert mit zwei- oder gar dreistelligen Zahlen von Ordnern und Unterordnern.
Und nun plötzlich benötigt der Kollege am anderen Schreibtisch Zugriff auf einen dieser Ordner. An für sich nicht schwer denken Sie sich eventuell nun, einfach dem Benutzer Rechte vergeben auf den Ordner und die Sache ist erledigt.
Soweit richtig, doch wie sieht das ganze bei diversen Unterordnern aus? Um es kurz zu machen, äußerst bescheiden. Sie müssten für jeden Unterordner explizit nochmal die Rechte vergeben, eine Vererbung wird nicht auf bereits bestehende Ordner angewendet.

Doch wir schaffen Abhilfe! Führen Sie Add-Inheritet-Rights.ps1 auf Ihrem Exchange-Server aus, und Sie können bequem vererbte Rechte vergeben. Für technisch interessierte oder vorsichtige Leute auch hier nochmal das Script im Klartext:

<#
.SYNOPSIS
    Mit Hilfe dieses Scripts können im Nachhinein Rechte auf bestimmte Ordner UND Unterordner in Outlook vergeben werden.
.PARAMETER AffectedMailbox
    Hier das Postfach bestimmen, aus welchem Ordnerrechte geändert werden sollen. Format: (user@domain.de) 
.PARAMETER UserWhoGetsRights
    Benutzer/Mailbox definieren, die nun Rechte bekommt auf das bestimmte Postfach. Format: (user@domain.de)
.PARAMETER PathOfTheFolder
    Pfad des bestimmten Ordners (Format: /Posteingang/Ordner/Unterordner)
.EXAMPLES
    ohne Parameter: ".\Add-Inheritet-Rights.ps1"
    mit  Parameter: ".\Add-Inheritet-Rights.ps1 -AffectedMailbox="a@b.com" -UserWhoGetsRights="d@e.com" -PathOfTheFolfer="/Inbox"
#>

Param
(
    [string]$AffectedMailbox,
    [string]$UserWhoGetsRights,
    [string]$PathOfTheFolder
)


Write-Host "Exchange Snapin Loading...."
Add-PSSnapin Microsoft.Exchange.Management.Powershell.Snapin
Write-Host "Exchange Snapin Loaded."
Write-Host ""
Write-Host "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
Write-Host "Script für Vererbbare Rechte - (c) by cloud4you.biz  -=-=-=-=-=-=-=-=-=-=-=-"
Write-Host "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
Write-Host ""
If ($AffectedMailbox -eq "")
{
    $AffectedMailbox = Read-Host "Auf welchem Postfach werden neue Rechte hinzugefügt? (Format: user@domain.de)"
}
Write-Host ""
$GetMailbox = Get-Mailbox $AffectedMailbox
Write-Host "Zutreffende Postfächer:" $GetMailbox.Length
Write-Host ""
If ($GetMailbox.Length -eq 1)
{
    If ($UserWhoGetsRights-eq "")
    {
        $UserWhoGetsRights = Read-Host "Welcher Benutzer bekommt in dem Postfach Rechte? (Format: user@domain.de)"
    }
	Write-Host ""
	$GetMailbox = Get-Mailbox $UserWhoGetsRights
	Write-Host "Zutreffende Postfächer:" $GetMailbox.Length
	Write-Host ""
	If ($GetMailbox.Length -eq 1)
	{
		If ($PathOfTheFolder -eq "")
        {
            $PathOfTheFolder = Read-Host "Und nun benötige ich den Pfad (Format: /Posteingang/Ordner/Unterordner)"
        }
		$GetFolders = Get-MailboxFolderStatistics -identity $AffectedMailbox | WHERE {$_.FolderPath.Contains($PathOfTheFolder) -eq $true}
		If ($GetFolders.Length -gt 0)
		{
			ForEach($folder in (Get-MailboxFolderStatistics -identity $AffectedMailbox | WHERE {$_.FolderPath.Contains($PathOfTheFolder) -eq $true} ) )
			{
				$foldername = $AffectedMailbox + “:” + $folder.FolderPath.Replace(“/”,”\”);
				Add-MailboxFolderPermission $foldername -User $UserWhoGetsRights -AccessRights PublishingEditor
			}
			Write-Host ""
			Write-Host $GetFolders.Length "Ordner wurden bearbeitet"
		}
		Else
		{
			Write-Host ""
			Write-Host "Es wurden keine Ordner unter diesem Pfad gefunden."
		}
	}
	Else
	{
		Write-Host ""
		Write-Host "Der Benutzer wurde nicht gefunden oder war nicht eindeutig."
	}
}
Else
{
	Write-Host ""
	Write-Host "Das Postfach wurde nicht gefunden oder war nicht eindeutig."
}
Write-Host ""
$Unnoetig = Read-Host "Drück Eingabe"

Um Freeswitch ordentlich debuggen zu können, sind folgende Konsolenbefehle hilfreich:

Loglevel der Konsole setzen:
console loglevel – Gibt das aktuelle Loglevel aus
console loglevel [0-7] – Stellt das Loglevel ein

Beschreibung der Loglevel:
0 – Console (Hotkey F7)
1 – Alert
2 – Critical
3 – Error
4 – Warning
5 – Notice
6 – Info
7 – Debug (Hotkey F8)

SIP-Logging aktivieren:
sofia profile internal siptrace on – Aktiviert SIP-Logs für interne Kommunikation
sofia profile external siptrace on – Aktiviert SIP-Logs für externe Kommunikation

Einfärben der Konsole:
console colorize [on|off|toggle] – Aktiviert/Deaktiviert die Einfärbung

  1. Wenn nicht schon geschehen – IIS installieren
  2. Zusätzlich zu den Standard-Features bitte noch CGI aktivieren.
  3. Download PHP.zip
  4. Den Inhalt der ZIP-Datei unter C:\PHP\ ablegen.
  5. Jetzt gehen wir zur Systemsteuerung -> System und Sicherheit -> System -> Erweiterte Systemeinstellungen
  6. Dort klicken wir unten auf Umgebungsvariablen… und suchen dann in der Systemvariablen-Liste nach der Variable Path
  7. Diese erweitern wir nun um folgende Zeile:
    ;C:\PHP;C:\PHP\ext
    Anschließend alles mit OK bestätigen
  8. Nun gehen wir auf den IIS-Manager, wählen unseren Server aus und klicken anschließend auf Handlerzuordnungen
  9. Rechts im Aktionenmenü klicken wir nun auf Handlerzuordnung hinzufügen:
    Anforderungspfad: *.php
    Modul: FastCGIModule
    Ausführbare Datei: C:\PHP\Php-cgi.exe
    Name: PHP
  10. Alles mit OK bestätigen, den IIS Manager erneut in den Vordergrund holen.
  11. Erneut auf den Server links klicken und dann auf Standarddokument gehen.
  12. Rechts im Aktionenmenü auf Add klicken und noch Index.php hinzufügen bzw. ein anderes gewünschtes Default-Doc.

Hiermit ist die Installation abgeschlossen. Weiter geht es hier: [Platzhalter]

Beim Anlegen von Benutzern kann es nach dem Klick auf “Speichern” zu einem Fehler kommen. Im Eventlog kann man zu diesem Moment einen Fehler mit der Event-ID 18176 sehen. Durch was genau der Fehler entsteht, ist nicht bekannt – auf jeden Fall scheinen dem CRM bei dem Fehler Einträge in Feldern zu fehlen, welche standardmäßig vom System schon gesetzt werden.

Beheben lässt sich der Fehler ziemlich simpel:

  1. Gehen Sie im CRM als Administrator auf EINSTELLUNGEN -> VERWALTUNG -> Systemeinstellungen.
  2. Stellen Sie im Reiter Formate das aktuelle Format um, z.B. auf “Deutsch (Liechtenstein). Bestätigen Sie dies mit Klick auf “OK”
  3. Jetzt öffnen Sie die Einstellung nochmal und setzen das Format wieder zurück. Wieder mit “OK” bestätigen.

Damit sollte das Problem schon behoben sein. Wir haben durch das temporäre Umstellen der Sprache bewirkt, dass die weiter oben genannten Felder wieder befüllt sind.

Um im ADFS 3.0 ein Zertifikat zu erneuern, muss folgendes getan werden:

  1. Über MMC das neue Zertifikat importieren – ACHTUNG: Es sollte ein Zertifikat mit Private Keys sein
  2. Über All Tasks -> Manage Private Keys… folgende Berechtigungen hinzufügen:
    [Service-Account] – READ
    NT SERVICE\adfssrv – READ
    NT SERVICE\drs – READ
  3. Über das ADFS Management -> Service -> Certificates das neue Zertifikat einspielen. Dies geht über Set Service Communications Certificate.
    Sollte das Zertifikat hier nicht auftauchen, so hat es entweder keine Private Keys oder die Berechtigungen fehlen.
  4. Folgenden PowerShell-Befehl absetzen um den Thumbprint des neuen Zertifikats herauszufinden: 
    Get-ChildItem Cert: -Recurse |
         ? { $_ -is [System.Security.Cryptography.X509Certificates.X509Certificate2] }
  5. Anschließend diesen Befehl absetzen, um das alte Zertifikat durch das neue zu ersetzen: 
    Import-Module ADFS
    Set-AdfsSslCertificate -Thumbprint [Thumbprint des neuen Zertifikats]

Nach jedem Neustart des Servers wird die Link-Local Route wieder erstellt. Dies führt dazu, dass die Cisco Geräte nicht mehr via SNMP überwacht werden können.

Das Problem kann durch folgenden Befehl gelöst werden:

route del link-local netmask 255.255.0.0

Da dies die Route nur bis zum nächsten Neustart entfernt, empfiehlt sich die Eintragung des Befehls in der Autostart-Datei “/etc/init.d/boot.local”.