Export-CSUserData

Mit Lync 2013 hat Microsoft endlich auch einen PowerShell-Befehl geschaffen, mit dem man die Daten der Benutzer oder eines Benutzers exportieren und wieder importieren muss. Damit sind die Zeiten von DBImpExp hoffentlich gezählt. Endlich können Administratoren so z.B. die Buddy-Liste der Mitarbeiter exportieren und importieren.

Export und Import

Die Funktion ist über zwei PowerShell Commandlets erreichbar.

#Export aller User eines Pools
Export-CSUserData -PoolFqdn "pool.msxfaq.de" -Filename "c:\temp\lyncUserdata.zip"

#Export eines User eines Pools
Export-CSUserData -PoolFqdn "pool.msxfaq.de" -Filename "c:\temp\lyncUserdata.zip" -UserFilter User1@msxfaq.net

Die Exportdatei ist per Default eine ZIP-Datei mit zwei Dateien. Über den Parameter "-LegacyFormat" ist der Export im Lync 2010 Format möglich.

In die Gegenrichtung geht das natürlich auch.

Achtung: Ein IMPORT kopiert die Daten in die Backup Datenbank und braucht einen Neustart des RTCSRV.EXE, (Frontend), um aktiv zu werden. Dafür ist die Belastung für den Server geringer

#Import aller User eines Pools
Import-CSUserData -PoolFqdn "pool.msxfaq.de" -Filename "c:\temp\lyncUserdata.zip"

#Import eines User eines Pools
Import-CSUserData -PoolFqdn "pool.msxfaq.de" -Filename "c:\temp\lyncUserdata.zip" -UserFilter User1@msxfaq.net

Wer allerdings in einen bestehenden Server die früheren Kontakte als "Merge" addieren will, macht das besser mit Update-CSUserData. Hier wird aber kein Pool angegeben.

#Import eines User eines Pools
Update-CSUserData -Filename "c:\temp\lyncUserdata.zip" -UserFilter User1@msxfaq.net

Diese Aktion braucht aber deutlich länger, da nun Kontakt für Kontakt in die SQL-Datenbank importiert wird. 

Primäre Funktion: Backup und Restore

Der Export und mögliche Import der Benutzerdaten und hier insbesondere der Buddyliste hat eine längere Geschichte bei Lync und OCS. Diese Informationen liegen bei einem Lync Server in der SQL-Datenbank, und die ist zumindest bei OCS 2007R2 und Lync 2010 noch nicht repliziert. Erst Lync 2013 nutzt SQL Mirroring. Und SQL-Datenbank lassen sich nicht einfach über geografische Grenzen hinweg replizieren.

Daher war der regelmäßige Export der Benutzerdaten in eine Datei eine gängige Praxis, um die für Anwender wichtigsten Daten (Buddyliste) notfalls auch auf einem anderen Server wieder herstellen zu können. Bei Lync 2010 und OCS2007R2 hat sich der Administrator dazu das Tool DBImpExp benutzt. Bei Lync 2013 ist nun ein PowerShell-Befehl enthalten.

Sie können also auch mit Lync 2013 z.B. regemäßig (wie wären 1x alle 6h ?) die Konfiguration der Benutzer in eine Datei exportieren und an einem anderen Ort speichern. So können Sie z.B. die Buddyliste eines Benutzers einfach wieder herstellen. Das funktioniert auch auf einem anderen Server und anderem Pool, wenn Sie einen Pool "verloren" haben und als schnelle Lösung die Benutzer "hart" auf den neuen Boot verschieben.

Ein Blick in die Daten

Die exportierten Dateien sind eine einfache und risikofrei Quelle um die Daten etwas genauer zu untersuchen, ohne direkten Zugriff auf die Datenbank zu haben. Das native Lync 2013 Format ist eine ZIP-Archiv mit zwei Dateien.

  • [Content_Types].xml
    Eine Dummydatei, die das Format der nächsten Datei beschreibt
<?xml version="1.0" encoding="utf-8"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
   <Default Extension="xml" ContentType="text/xml" />
</Types>
  • DocItemSet.xml
    Diese Datei enthält die eigentliche XML-Struktur mit den Daten des Benutzers. Im wesentlichen gibt es hier in der Regel vier Knoten:

Interessant ist nun, wenn man die vier Gruppen genauer anschaut. Die Beschreibung von "Name" kennzeichnet den Inhalt:

Bereich und Beschreibung XML-Auszug

Name="urn:confs:User1@msxfaq.net

Enthält Informationen über die Konferenzen

Name="urn:hcd:User1@msxfaq.net"

In diesem Bereich gibt es die gleichen Container wie auch in anderen Stellen. Aber ich haben noch nicht ermittelt, welche Bedeutung diese Daten haben.

Name="urn:lcd:User1@msxfaq.net"

Hier dürfte die Buddyliste des Benutzers zu finden sein.

Name="urn:upc:User1@msxfaq.net"

Systemdaten zur Anmeldung des Benutzers

Auch wenn die Daten sehr umfangreich erscheinen, so konnte ich einige Einstellungen hier nicht entdecken, z.B. die Rufweiterleitungen, viele der Einstellungen auf dem Client etc. Aber wer sich traut kann natürlich schon einmal die XML-Dateien verändern und wieder importieren. Allerdings sollten Sie immer ein Backup der funktionierenden Einstellungen haben. Wer programmatisch im Auftrag des Benutzers arbeiten will, sollte sich eher die richtigen Lync API nutzen machen wie z.B. UCMA.

Auswertungen

Es gibt noch einen zweiten Anwendungsfall für diese Datei, nämlich die Auswertung der Inhalte. Die Datei enthält z.B. Daten zu Konferenzen, zu Buddylisten aber auch z.B. Daten zur PIN-Authentifizierung, die allein für statistische Zwecke und Reporting interessant sind. für ein Sizing ist es z.B. interessant zu wissen, wie viele Kontakte durchschnittlich die Anwender verwenden. Man kann auch mal schauen, wer die meisten Buddies hat. Vielleicht wäre dem Anwender mit einer Schulung geholfen. Aber auch die Anzahl der Zertifikate eines Benutzers ist ein Hinweis, ob er auf unterschiedlichen Endgeräten arbeitet, denn die Lync Zertifikate sind ja nicht exportierbar. Wer sich also auf mehreren Geräten anmeldet, hat für jedes Gerät ein Zertifikat.

Weitere Links