Verwendung des Windows Live Writer Editor für SharePoint 2013-Blogs

SharePoint 2013 bietet eine Website-Vorlage, mit der sich ein einfacher Blog realisieren lässt. Die Funktionalitäten eines SharePoint-Blogs bleiben aber weit hinter denen von z. B. WordPress zurück. Um wenigstens das Editieren von Blogbeiträgen etwas komfortabler zu gestalten, kann man den Windows Live Writer Editor von Microsoft als Editor für die Erstellung seiner Blogbeiträge verwenden.

Der Windows Live Writer ist Bestandteil der kostenlosen Windows Essentials von Microsoft.

Mit dem Windows Live Writer ist es unter anderem auch möglich, einen Blogbeitrag gleich für mehrere unterschiedliche Blogs zu erstellen. Beispielsweise kann man einen Blogbeitrag gleichzeitig für SharePoint und für einen WordPress-Blog zur Verfügung stellen.

Hier ein Screenshot von dem Windows Live Writer, mit dem dieser Artikel erstellt wurde:

 

image

Eine der wichtigsten Erleichterungen beim Erstellen von SharePoint-Blogbeiträgen durch den Windows Live Writer ist die Funktionalität, Bilder direkt aus der Zwischenablage in den Blog einfügen zu können, ohne das Bild vorher hochzuladen.

Konfiguration der SharePoint 2013-Funktionalität „Zugriffsanforderungen“

​SharePoint 2013 bietet eine Funktion, die es Benutzern ohne ausreichende Zugriffrechte auf eine SharePoint-Webseite erlaubt, eine Anfrage zu senden, um Zugriff für diese Website zu beantragen.

Zugriffsanforderung auf eine SharePoint Website durch einen Benutzer
Zugriffsanforderung auf eine SharePoint-Website durch einen Benutzer

Wenn diese Funktion aktiviert ist, dann ist als Standard eine Platzhalter-E-Mail-Adresse someone@example.com als Ziel für die Anfrage konfiguriert. Ändert man diese E-Mail-Adresse nicht auf einen gültigen Wert, bekommen die Anfragenden eine Fehlermeldung, dass die Mail nicht zugestellt werden kann.

Um diese Funktion zu konfigurieren, muss der Besitzer der SharePoint-Website-Sammlung die Einstellungen für die Website-Berechtigungen aufrufen.

Aufrufen des Konfigurationsmenüs von SharePoint 2013
Aufrufen des Konfigurationsmenüs

 

Aufrufen der Websiteeinstellungen einer SharePoint Website
Aufrufen der Websiteeinstellungen

 

Aufrufen des  "Websiteberechtigungen" - Dialogs einer SharePoint 2013 Website
Aufrufen des „Websiteberechtigungen“-Dialogs
Aufrufen der Einstellungen für Zugriffsanforderungen bei SharePoint 2013
Aufrufen der Einstellungen für Zugriffsanforderungen
Konfiguration der E-Mail Adresse für die Zugriffsanforderungen auf eine SharePoint 2013 Website
Konfiguration der E-Mail-Adresse für die Zugriffsanforderungen auf eine SharePoint 2013-Website

In den Einstellungen für die Zugriffsanforderungen auf eine SharePoint 2013-Website kann man nun die gewünschte E-Mail-Adresse des Empfängers der Zugriffsanforderungen konfigurieren. Hier lässt sich aber auch das Feature „Zugriffsanforderungen“ deaktivieren, in dem man die Option „Zugriffsanforderungen zulassen“ deaktiviert.

Dann bekommt ein Benutzer ohne Zugriffsrechte auf eine SharePoint-Website nur einen Hinweis. Eine Zugriffsanforderungsanfrage kann er dann nicht stellen.

 

Fehlermeldung bei nicht ausreichenden Zugriffrechten auf eine SharePoint 2013 Website
Fehlermeldung bei nicht ausreichenden Zugriffsrechten auf eine SharePoint 2013-Website

 

mysqldump / AutoMySQLBackup Warning: Skipping the data of table mysql.event. Specify the –events option explicitly

Nach einem Update auf MySQL 5.5.3, taucht in den Logs der Datenbank-Backups folgende Warnung auf:

-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly

Unter mysql-and-warnings-yet-another wird ausführlich auf die Problematik eingegangen.

Damit man diese Fehlermeldung wieder los wird, hat man folgende Optionen:

  • –events als Parameter dem mysqldump Befehl hinzufügen.  –> Die Warnung  verschwindet, da nun die Event-Tabelle explizit gesichert wird.
  • –ignore-table=mysql.event als Parameter dem mysqldump Befehl hinzufügen. –> Die Warnung verschwindet, da nun die Event-Tabelle explizit NICHT gesichert wird.

Wenn man das Backup-Script AutoMySQLBackup (Bugreport) einsetzt, findet man im Script folgende Zeile, in der man die gewünschte Option einfügen kann:

OPT="--quote-names --opt --single-transaction" # OPT string for use with mysqldump ( see man mysqldump )

Wenn die Event-Tabelle gesichert werden soll:

OPT="--quote-names --opt --single-transaction --events" # OPT string for use with mysqldump ( see man mysqldump )

Oder wenn die Event-Tabelle NICHT gesichert werden soll:

OPT="--quote-names --opt --single-transaction --ignore-table=mysql.event" # OPT string for use with mysqldump ( see man mysqldump )

Aktivieren des Bash-Completion-Features auf einem Debian-System

Wenn das Bash-Completion-Feature auf Debian-Systemen richtig funktioniert, kann man z. B. die Dienste beim Service-Kommando mit der Tabulatortaste vervollständigen.

Beispiel für die Befehlsvervollständigung:

service ap<Tab>
service apache2 rel<Tab>
service apache2 reload

Wenn auf einem Debian-System die Vervollständigung von Befehlen mittels der Tabulatortaste nicht funktioniert, kann es sein, dass das Paket Bash-Completion nicht installiert ist.

Um zu überprüfen, ob das Bash-Completion-Paket installiert ist, kann man folgenden Befehl benutzen:

dpkg -l bash-completion | tail -1

Die Ausgabe des Befehls sollte dann wie folgt aussehen:

ii  bash-completion 1:2.0-1 all programmable completion for the bash shell

Bleibt diese Ausgabe leer, dann ist das Paket Bash-Completion nicht installiert. Es lässt sich mit folgendem Befehl installieren:

apt-get install bash-completion

Sollte die Bash-Vervollständigung trotz installiertem Paket Bash-Completion nicht funktionieren, kann es daran liegen, dass das Vervollständigungs-Feature noch nicht aktiviert wurde. Bei Debian kann man diese Funktion in der Datei /etc/bash.bashrc aktivieren. Man muss nur die Kommentarzeichen vor folgenden Zeilen entfernen:

###Vorher
#if ! shopt -oq posix; then
#  if [ -f /usr/share/bash-completion/bash_completion ]; then
#    . /usr/share/bash-completion/bash_completion
#  elif [ -f /etc/bash_completion ]; then
#    . /etc/bash_completion
#  fi
#fi

###Nachher
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Damit diese Einstellung aktiv wird, muss man sich am System ab- und wieder anmelden.

Quelle: http://serverfault.com

Bei SharePoint 2013 lässt sich wegen des Fehlens des Features ‚Ratings‘ keine Community-Website erstellen

Das Erstellen einer Community-Website in SharePoint schlägt wegen eines fehlenden Features ‚Ratings‘ mit folgender Meldung fehl:
Das Abhängigkeitsfeature ‚Ratings‘ (ID: 915c240e-a6cc-49b8-8b2c-0bff8b553ed3) für das Feature ‚CommunitySite‘ (ID: 961d6a9c-4388-4cf2-9733-38ee8c89afd4) ist in diesem Bereich nicht aktiviert.
Lösung:
Aktivierung des Features ‚Ratings‘ mit der Powershell.

SSH Port Forwarding – SSH-Port-Weiterleitung – SSH-Tunnel durch eine Firewall – RDP-Tunnel über SSH-Port

Aufgabenstellung: Man betreibt in seinem Heimnetzwerk einen Linux-Server und mehrere Windows-Rechner. Vom Internet aus möchte man nun auf seine Windows-Rechner per RDP (Remote Desktop Protocol Port 3389) zugreifen. Aus Sicherheitsgründen ist aus dem Internet aber kein direkter Zugriff auf den RDP Port 3389 im Heimnetzwerk möglich. Allein der Zugriff auf den Linux-Rechner per SSH ist per Port-Weiterleitung im Router des Heimnetzwerks aktiviert.

Lösung: Tunneln der RDP-Verbindung durch das SSH-Protokoll.

a) Nativ von einer Linux / Mac OSX Shell:

ssh -LYYYY:NAME_DES_WINDOWS_RECHNERS:3389 BENUTZERNAME@IP_DES_ROUTERS -p XXX
# -LYYYY = Lokaler Port über den die RDP-Vebindung geöffnet wird.
# NAME_DES_WINDOWS_RECHNERS: Name oder IP des Windows Rechners, auf den per RDP zugegriffen werden soll, im lokalen Netz
# -p XXX = Port der vom Router fürs Internet freigegeben wurde und an den SSH Port des Linux Rechner weiter geleitet wird.
# IP_DES_ROUTERS = Öffentliche IP Adresse oder DNS-Name unter der der Router im Internet zu erreichen ist. 
# z.B: 
ssh -L5000:192.168.1.234:3389 max@mustermann.dyndns.com -p 10000

b) Mit dem SSH-Client Putty von einem Windows-System:

Um mit Putty das RDP-Protokoll über eine SSH-Verbindung tunneln zu können, muss man in den Sessioneinstellungen, unter Connection –> SSH –>  Tunnels den lokalen Port, den zu tunnelnden Remote Port und den Zielrechner für den Tunnel definieren:

putty_ssh_tunnel_01 putty_ssh_tunnel_02

Um nun also vom Internet aus auf seinen Windows-Rechner per RDP (Remote Desktop Protocol Port 3389) zuzugreifen, muss man, nachdem die SSH-Verbindung geöffnet wurde, eine RDP-Verbindung zu localhost:5000 (Localhost Port 5000) öffnen.

rdp_tunnel_ueber_ssh

SharePoint 2010: Webpartfehler Zugriff verweigert (Access Denied Web Part Error)

Beim Aufrufen einer Sharepoint-Seite mit Webparts, von denen der aktuelle Benutzer keine Rechte besitzt, wird folgender Fehler angezeigt:

Webpartfehler: Zugriff verweigert. Sie haben keine Berechtigung, diesen Vorgang auszuführen oder auf diese Ressource zuzugreifen.

SharePoint 2010: Weppartfehler Zugriff verweigert. (Access Denied Web Part Error)
SharePoint 2010: Webpartfehler Zugriff verweigert (Access Denied Web Part Error)

Die Sharepoint-Webseite soll Uploads von verschiedenen Benutzern zentral sammeln. Damit ein Benutzer nur Zugriff auf seine eigenen Uploads haben soll, wurde für jeden User eine eigene Dokumentenbibliothek angelegt. Bei dieser Dokumentenbibliothek wurde die Berechtigungsvererbung entfernt und nur dem User selbst und den administrativen Usern Rechte explizit gewährt. Um den Komfort zu erhöhen, wurde für jede Dokumentenbibliothek ein Webpart in die Standardseite eingefügt. Als ich mich mit einem Testuser, der nur Rechte auf eine Dokumentenbibliothek hatte, bei der Sharepoint-Webseite anmeldete, musste ich feststellen, dass die Webparts, auf die der User keine Berechtigungen hatte, nicht automatisch ausgeblendet wurden. Für jeden Webpart ohne Berechtigungen wurde der oben stehende Fehler angezeigt. Im Blogeintrag „SharePoint 2010 Access Denied Web Part Error“ musste ich lesen, dass man diesen Umstand nicht mit Sharepoint-Bordmitteln beheben kann („I am still waiting on Microsoft for that as well“). Die Lösung, die der Blogeintrag empfiehlt, ist eine „Quick and Dirty“-Lösung mit jQuery, die die Fehlermeldungen einfach clientseitig ausblendet. Dazu soll ein Inhaltswebpart mit einem jQuery Javascript Snippet am Seitenende eingefügt werden.

<script src=“/jquery.min.js“ type=“text/javascript“></script>
<script language=“javascript“>
$(„span:contains(‚Fehler‘)“).hide();
$(„div:contains(‚Zugriff verweigert‘):not(:has(div))“).hide();
</script>

Dabei bin ich auf ein neues Problem gestoßen. Ich fand beim Inhaltswebpart von Sharepoint 2010 – im Unterschied zu Sharepoint 2007 – keine Option, um HTML-Quellcode einzugeben. Folgender Blogeintrag brachte eine einfache Lösung: „Insert JavaScript into a Content Editor Web Part„. Man muss den Code in eine Datei auslagern und diese dann dem Inhaltswebpart von Sharepoint 2010 zuweisen.

Einstellungen Inhaltswebpart
Einbinden von Code in das Inhaltswebpart

Nachdem dieses Problem gelöst worden war, musste ich feststellen, dass die Lösung, die Fehler mit jQuery auszublenden, noch nicht zufriedenstellend war. Die eigentlichen Fehler sind zwar ausgeblendet, die umgebenden Container aber nicht.

Ausgebendete Webpartfehler Version 1
Ausgeblendete Webpartfehler Version 1

Leider waren immer noch Linien der umgebenden Containern zu sehen, ebenso störte der große Abstand zum Seitentitel. Nach etwas Experimentieren mit Firebug habe ich das Script wie folgt abgeändert:

<script src=“/jquery.min.js“ type=“text/javascript“></script>
<script language=“javascript“>
$(„tr td.s4-wpcell-plain:contains(‚Fehler‘)“).hide();
</script>

Dies brachte dann den gewünschten Effekt.

Webpartfehler vollständig ausgeblendet
Webpartfehler vollständig ausgeblendet

Mit diesem Script wurden die Webpartfehler und die umgebenden Container vollständig ausgeblendet. Was jedoch bei dieser Lösung beachtet werden muss, ist, dass in der Ausgabe der Webparts, die angezeigt werden sollen, nicht das Wort ‚Fehler‘ vorkommt, da sonst auch dieses Webpart ausgeblendet werden würde.

Darstellen der Ordnerstruktur einer SharePoint-Dokumentenbibliothek mithilfe einer Treeview

Die Aufgabenstellung war, ein Formularcenter mithilfe von SharePoint zu erstellen. Es sollten über 400 Formulare hierarchisch gegliedert zum Download angeboten werden. Nach längerem Testen der standardmäßigen Gruppierungfunktionalitäten für Sharepoint-Listen, was nicht das gewünschte Ergebnis brachte, stieß ich auf folgenden englischen Blogeintrag: Adding a Treeview to a Document Library using SPTreeView and SPHierarchicalDataSource

Hier wurde gezeigt, wie man mittels SharePoint-Designer eine Ansicht erstellen kann, die die Ordnerstruktur einer SharePoint-Dokumentenbibliothek mittels eines TreeView-Steuerelementes abbildet – und dies ganz ohne Hilfe eines Webparts.

Folgende Schritte sind für eine TreeView-Ansicht einer SharePoint-Dokumentenbibliothek notwendig:
1. Aktivieren der Dateiansicht im SharePoint-Designer, um „Alle Dateien“ anzuzeigen. Dies muss unter den Website-Einstellungen der entsprechenden Websitesammlung gemacht werden. Hier ist unter der Rubrik „Websitesammlungsverwaltung“ der Link „SharePoint Designer-Einstellungen“ auszuwählen. Danach muss die Checkbox „Verwaltung der URL-Struktur der Website aktivieren“ aktiv gesetzt werden.

SharePoint_Designer_Einstellungen

SharePoint_Designer_Alle_Dateien_anzeigen

2.  Danach ist die entsprechende View, die mit dem TreeView-Steuerelement versehen werden soll, im SharePoint-Designer im erweiterten Modus zu bearbeiten.

SharePoint_Designer_Datei_im_erweiterten_Modus_bearbeiten

3. Danach wird der komplette Inhalt des ContentPlaceHolder-Tags mit der ID „PlaceHolderMain“ ausgeschnitten und über die Zwischenablage in einem externen Editor temporär abgelegt.

<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">

<-- Gesamten Taginhalt ausschneiden und zwischenspeichern -->

</asp:Content>

4. Erstellen einer HTML-Tabelle in dem leeren ContentPlaceHolder-Tag, um das Treeview-Steuerelement und die ursprüngliche Liste der Dokumentenbibliothek zu platzieren.

<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">

<-- Tabelle als Layouthilfe für die Treeviev und die Liste der Dokumentenbibliothek -->
<table style="width: 100%">
 <tr valign="top">
     <td width="20%">
     <-- Spalte für die Treeview -->
     </td>
     <td>
     <-- Spalte für die Listendarstellung der Dokumentenbibliothek -->
     </td>

    </tr>
</table>
</asp:Content>

5. Ermitteln der notwendigen Informationen für das Treeview-Steuerelement mithilfe der Powershell und dem SharePoint-Designer. Benötigt werden die ListID der Dokumentenbibliothek und die ID der Webseite, in der sich die Dokumentenbibliothek befindet.

Die ListID der Dokumentenbibliothek wird mit dem SharePoint-Designer ermittelt:

ListID_von_SharePoint_Liste_mit_SharePoint_Designer_ermitteln

Die ID der Website kann mit der PowerShell ermittelt werden:

PS C:\scripts> $site=get-spsite http://xxxxxxxxx/formularcenter
PS C:\scripts> $site.id
Guid
----
e2044234-0449-4362-af2b-7ba48b9ad678

6. Vorbereiten und Anpassen des Codes für das Treeview-Steuerelement:

<SharePoint:SPHierarchyDataSourceControl id="doclibDataSource" runat="server" RootListId="XXXXXXXXXXXXXXX" RootWebId="YYYYYYYYYYYYY" ShowFolderChildren="true" EnableViewState="false"></SharePoint:SPHierarchyDataSourceControl>
<SharePoint:SPTreeView ID="doclibtreeview" runat="server" DataSourceID="doclibDataSource" EnableViewState="false" ExpandDepth="2"  SelectedNodeStyle-CssClass="ms-tvselected"></SharePoint:SPTreeView>

<-- XXXXXXXXXXXXXX = ID der Dokumentenbibliothek, ermittelt mit dem SharePoint Designer -->
<-- YYYYYYYYYYYYYY = ID der Website, ermittelt mit der Powershell -->

7. Einfügen des Treeview-Codes in die oben erstellte Tabelle.

8. Einfügen des zwischengespeicherten Codes für die eigentliche Listendarstellung der Dokumentenbibliothek, ebenfalls in die oben erstellte Tabelle.

9. Das Ganze sollte nun wie folgt aussehen:

SharePoint_Dokumentenbibliothek_mit_Treeview

Autocomplete (tab completion) für Service-Kommando unter Debian Linux

Wenn auf einem Debian-System die Autocomplete-Funktion nur bei Dateien und Verzeichnissen funktioniert und nicht für weitere Befehle, kann es daran liegen, dass das  „bash-completion“-Paket nicht installiert ist.

Um die Autocomplete-Funktion z. B. auch für das „service“-Kommando verwenden zu können, muss unter Debian das Paket „bash-completion“ installiert sein.

Installation des „bash-completion“-Pakets:

apt-get install bash-completion

Nach der Installation:
Test der Funktionalität, Eingabe von „service a“ [TAB]:

# service a
acpid     anacron   apache2   asterisk  atd

Nun schlägt die Bash Shell nach der Eingabe von „service a“ und dem Drücken der TAB -Taste alle zur Verfügung stehenden Dienste vor, die mit a beginnen.

Microsoft System Center Dataprotection Manager Error 943 (Ereignis-ID 943)

Bei einer DPM 2010 Installation kommt es bei dem sekundären DPM zu häufigen Fehlern bei der die DPM Managementkonsole beendet wird. Ebenso sind viele geschützten Daten inkonsitent, da die DPM Dienste bei dem Auftreten des Fehlers beendet werden.

In der Windows Anwendung Ereignisanzeige findet man für die Quelle MSDPM einen Fehler mit der Ereignis-ID 943.
In den Details erfährt man folgendes:

„Aufgrund einer Datenbankinkonsistenz konnte keine Verbindung zur DPM-Datenbank hergestellt werden.“

und

„Couldn’t access DataSourceInfo ‚00000000-0000-0000-0000-000000000000‘ in the database“

Eine Internetrechereche brachte eine Erklärung für diesen Fehler.

Dieser Fehler kann dann auftreten, wenn eine Sharepointfarm durch einen primären DPM Server gesichert wird und die zu der Farm gehörenden Datenbanken auf dem zweiten DPM Server aber als reine SQL Datenbanken gesichert werden.
Dies kann dann passieren, wenn man auf dem zweiten DPM Server noch keine Sicherung für die Sharepointfarm eingerichtet hat und bei dem entsprechenden MS SQL Server alle Datenbanken inclusive den Datenbanken der Sharepointfarm auswählt.

Wenn zuerst ein sekundärer Schutz der Sharepointfarm auf dem zweiten DPM eingerichtet wurde, kann man die Datenbanken der Sharepointfarm nicht mehr als native SQL Server Datenbanken sichen.
Die Datenbanken der Sharepointfarm werden dann bei der Aktivierung des sekundären Schutztes für den MS SQL Server auf dem zweiten DPM als ausgewählt bzw. deaktiviert dargestellt.

Lösung für diesen Fehler:

Schritt 1:
Beenden des sekundären nativen MS SQL Server Schutzes der Datenbanken der Sharepointfarm auf dem 2. DPM Server. Dabei sind Daten des beendeten Schutzes (Festplatte/Band) ebenfalls zu löschen.

Schritt 2:
Aktivierung des sekundären Schutzes für die Sharepointfarm.