Grundlegendes zur Mandantenfähigkeit in SharePoint Server 2013

 

**Gilt für:**SharePoint Server 2013, SharePoint Server 2013 Enterprise

**Letztes Änderungsdatum des Themas:**2017-09-06

Zusammenfassung: Erfahren Sie mehr über das Feature für Mehrmandantenfähigkeit und die mit Mehrmandantenfähigkeit in SharePoint Server 2013 verbundenen Komponenten und Dienste.

In diesem Artikel werden die mit Mehrmandantenfähigkeit in SharePoint Server 2013 verbundenen Komponenten und Dienste beschrieben und auch Hinweise zu Architektur, Sicherheit, Betrieb und Verwaltung gegeben, um Dienstanbietern zu helfen, Mehrmandantenfähigkeit in SharePoint Server 2013 zu verstehen, damit sie eine mehrmandantenfähige SharePoint Server 2013-Hostingplattform planen, entwerfen, erstellen und verwalten können.

Hinweis

Bei OneDrive for Business mit Yammer-Integration können Mehrmandantenfähigkeit oder partitionierte Dienstanwendungen nicht für lokale Bereitstellungen verwendet werden.

Bevor Sie beginnen:

SharePoint unterstützt die Barrierefreiheitsfunktionen gängiger Browser, um Ihnen bei der Verwaltung von Bereitstellungen und dem Zugriff auf Websites zu helfen. Weitere Informationen finden Sie unter Barrierefreiheit für SharePoint 2013.

Einführung in Mehrmandantenfähigkeit in SharePoint Server 2013

Was ist Mehrmandantenfähigkeit?

Bevor Sie sich näher mit der Funktion der Mehrmandantenfähigkeit in SharePoint Server 2013 beschäftigen, sollten Sie mit dem allgemeinen Konzept der Mehrmandantenfähigkeit und den verwandten Merkmalen vertraut sein. Dies erleichtert es Ihnen, bei der Planung, dem Entwurf, dem Betrieb und der Verwaltung Ihrer mehrmandantenfähigen SharePoint Server 2013-Hostingplattform angemessene Entscheidungen zu treffen.

Mehrmandantenfähigkeit bezieht sich auf die Möglichkeit, Daten von Websites und ansonsten freigegebenen Diensten oder Software zu partitionieren und zu verwalten, um mehrere Mandanten einzubinden. Es werden nicht mehrere Instanzen eines Dienstes ausgeführt, und es wird keine separate Hardware eingerichtet. In Produkten und Technologien von Microsoft führt die Mehrmandantenfähigkeit von Diensten zu einer Hostingumgebung, in der Serverfarmressourcen maximiert werden. Bevor Sie mehr über Hostingumgebungen erfahren, sollten Sie mit der Dienstarchitektur vertraut sein.

Wichtige Komponenten und Dienste, um Mehrmandantenfähigkeit in SharePoint Server 2013 zu ermöglichen

In diesem Abschnitt werden wichtige Komponenten und Dienste beschrieben, um Mehrmandantenfähigkeit in SharePoint Server 2013 zu ermöglichen.

Webanwendung

Eine SharePoint 2013-Webanwendung besteht aus einer IIS-Website (Internet Information Services, Internetinformationsdienste), die als logische Einheit zur Verwaltung und Sicherheit für die Websitesammlungen dient, die Sie erstellen. Jede Webanwendung wird durch eine andere IIS-Website dargestellt, die einen eindeutigen oder freigegebenen Anwendungspool verwendet. Wenn Sie eine Webanwendung erstellen, erstellen Sie auch eine Inhaltsdatenbank und definieren die Authentifizierungsmethode, die zum Verbinden der Datenbank(en) verwendet wird.

Websitesammlungen mit Hostnamen

Websitesammlungen mit Hostnamen ermöglichen Ihnen, Websitesammlungen einen eindeutigen DNS-Namen zuzuweisen. Sie können sie z. B. als "http://TeamA.contoso.com" und "http://TeamB.fabrikam.com" adressieren. Dadurch können Sie in der gleichen Webanwendung viele Websites bereitstellen, die eindeutige DNS-Namen verwenden. Außerdem können Dienstanbieter dadurch eine Umgebung für zahlreiche Kunden skalieren. Wenn Sie keine Websitesammlungen mit Hostnamen verwenden, enthält die SharePoint-Webanwendung viele pfadbasierte Websitesammlungen, die den gleichen Hostnamen (DNS-Namen) verwenden. Team A hätte z. B. eine Websitesammlung unter "https://contoso.com/sites/teamA", und Team B hätte eine Websitesammlung unter "https://fabrikam.com/sites/teamB".

Websitesammlungen mit Hostnamen stellen grundsätzlich die einzige Möglichkeit dar, um eine Skalierung für mehrmandantenfähige Umgebungen vorzunehmen, und bieten bezüglich des verwendeten URL-Namespace größtmögliche Flexibilität. Werden mit Mehrmandantenfähigkeit pfadbasierte Websites verwendet, wird die Softwaregrenze für verwaltete Pfade sehr schnell erreicht.

Zusätzliche Informationen dazu, wie Sie Websitesammlungen mit Hostnamen für SharePoint Server 2013 planen, finden Sie unter Websitesammlungsarchitektur mit Hostnamen und Bereitstellung in SharePoint Server.

Dienstgruppen (Proxygruppen)

Eine Dienstgruppe, auch als Proxygruppe bezeichnet, ist eine Gruppe von Dienstanwendungen, die von einer Webanwendung zur Verwendung ausgewählt wurden.

Standardmäßig sind alle Dienstanwendungen in der Standardgruppe enthalten, es sei denn, bei der Erstellung der Dienstanwendung wurde eine andere Gruppe angegeben. Sie können der Standardgruppe jederzeit Dienstanwendungen hinzufügen oder diese daraus entfernen. Wenn Sie eine Webanwendung erstellen, können Sie die Standardgruppe auswählen oder eine benutzerdefinierte Gruppe von Diensten erstellen. Zur Erstellung einer benutzerdefinierten Gruppe von Diensten wählen Sie nur die Dienstanwendungen aus, welche die Webanwendung verwenden soll.

Benutzerdefinierte Gruppe können nicht in mehreren Webanwendungen wiederverwendet werden. Jedes Mal, wenn Sie beim Erstellen einer Webanwendung "benutzerdefiniert" auswählen, wählen Sie Dienste nur für die von Ihnen erstellte Webanwendung aus.

Dienstproxy

Wenn Sie eine Dienstanwendung erstellen, wird gleichzeitig ein Proxy für die Dienstanwendung erstellt. Ein Proxy ist eine virtuelle Entität, die Webanwendungen mit Dienstanwendungen verbindet. Proxys werden in die Website für die SharePoint-Zentraladministration auf der Seite "Dienstanwendungen verwalten" aufgeführt.

Proxys werden automatisch erstellt, wenn Sie zum Erstellen von Dienstanwendungen Zentraladministration oder den Konfigurations-Assistent für SharePoint 2016-Produkte verwenden. Wenn Sie zum Erstellen von Dienstanwendungen Microsoft PowerShell verwenden, werden Proxys nicht immer automatisch erstellt und müssen mithilfe von Microsoft PowerShell erstellt werden.

Einige Proxys können Einstellungen enthalten, die geändert werden können. Wenn eine Webanwendung z. B. mit mehreren Instanzen des verwalteten Metadatendienstes verbunden ist, müssen Sie die Proxys angeben, die mit der primären Dienstanwendung verbunden sind, welche die Unternehmenstaxonomie hostet. Bei Verwendung von Mehrmandantenfähigkeit werden diese Einstellungen im Allgemeinen auf Mandantenebene konfiguriert.

Dienstanwendungen

Eine Dienstanwendung ist eine logische Darstellung eines bestimmten Dienstes und dessen Sicherheits- und Verwaltungskonfiguration, die dessen Betriebsverwalten definiert. Beispiele sind etwa "Verwaltete Metadaten" und "Benutzerprofile". Verschiedene Dienstanwendungen werden unterschiedlich implementiert, und dies hat Einfluss auf den Entwurf mandantenfähiger Lösungen.

Um die Liste der in SharePoint Server 2013 verfügbaren Dienstanwendungen und deren Verfügbarkeit in SharePoint-Editionen mit der Funktion für Mehrmandantenfähigkeit zu bestimmen, lesen Sie den Abschnitt Dienste und Funktionen in Allgemeiner Leitfaden für Hoster in SharePoint Server 2013

Feature Packs und Lizenzierung

Ein Feature Pack in SharePoint ist eine Möglichkeit, einen Satz von website- oder webbezogenen Features zu gruppieren. Nachdem die SharePoint-Features gruppiert wurden, können sie mit einem Websiteabonnement (d. h. Mandanten) verknüpft werden. Alle Websitesammlungen in diesem Websiteabonnement (Mandanten) können nur die website- oder webbezogenen Features verwenden, die Teil des Feature Pack sind. So können Dienstanbieter basierend auf unterschiedlichen Sätzen von Features gestufte Dienstangebote bereitstellen.

In SharePoint Server 2013 wurde ein neues Feature zum Zuweisen unterschiedlicher SharePoint-Lizenzen für einzelne Benutzer hinzugefügt. Außerdem aktiviert es zur Laufzeit die SharePoint-Lizenzüberprüfung. Dieses Feature bietet zusätzliche Flexibilität für einen Dienstanbieter, um in einem vereinfachten Bereitstellungsmodell unterschiedliche Dienstangebote zu erstellen. In früheren SharePoint-Versionen mussten Dienstanbieter für jede SharePoint-Version andere SharePoint-Bereitstellungsmodelle erstellen. Weitere Informationen zu SharePoint-Features finden Sie im Abschnitt SharePoint feature availability across on-premises solutions des folgenden Artikels: SharePoint Online-Dienstbeschreibung.

Verwaltung von Informationsrechten

Die Integration der Verwaltung von Informationsrechten in SharePoint Server 2013 ermöglicht die Unterstützung von Mehrmandantenfähigkeit, sodass Einstellungen zur Verwaltung von Informationsrechten auf Mandantenebene verwaltet werden können.

Überlegungen zum Architekturentwurf

In diesem Abschnitt werden verschiedene Überlegungen zum Entwurf der Architektur einer mandantenfähigen SharePoint Server 2013-Umgebung beschrieben. Wie weiter oben in diesem Dokument beschrieben, ist Mehrmandantenfähigkeit mit einigen besonderen Merkmalen verbunden, die beim Erstellen der Architektur und dem Entwurf Ihrer SharePoint Server 2013-Umgebung berücksichtigt werden sollten. Sie müssen diese Faktoren basierend auf Ihren Anforderungen abwägen, um die richtigen Entscheidungen zu treffen.

Grundlegendes zu Einschränkungen und Grenzen in SharePoint Server 2013

Ein Verständnis der softwarebasierten Einschränkungen und Grenzen von SharePoint Server 2013 hilft Ihnen, bei der Auswahl der geeigneten Architektur für eine mandantenfähige SharePoint-Umgebung die richtigen Entscheidungen zu treffen. Zusätzliche Informationen zu wichtigen Einschränkungen und Grenzen für eine Inhaltsdatenbank und Websitesammlung, soweit diese für eine mehrmandantenfähige Umgebung von SharePoint Server 2013 relevant sind, finden Sie unter Grenzen für Inhaltsdatenbanken und Grenzen für Websitesammlungen.

Gemeinsame Farm im Vergleich zu einer dedizierten Farm

Die Verwendung einer gemeinsamen Farm zum Hosten von mandantenfähigen Websitesammlungen in einer einzelnen Webanwendung bietet mehr Skalierbarkeit, als wenn pro Mandant eine dedizierte Webanwendung verwendet wird.

Verwenden Sie pro Kunde nur dann einen dedizierte Webanwendung und einen dedizierten Anwendungspool, wenn Isolationsanforderungen erfüllt werden müssen.

Lassen Sie nicht zu, dass voll vertrauenswürdiger Code auf Websites bereitgestellt wird.

Lassen Sie keine Anpassungen zu, die Einfluss auf geteilte Ressourcen, wie z. B. die Datei "web.config", haben.

Verwenden Sie Websitesammlungen mit Hostnamen, um in einer Webanwendung mehrere Websitesammlungen (Websites mit Domänennamen) auf Stammebene zu erstellen.

Eine einzelne Webanwendung im Vergleich zu mehreren Webanwendungen

Verwenden Sie dedizierte Webanwendungen für Mandanten, die Anpassungen erfordern, die Einfluss auf in einer Webanwendung geteilte Ressourcen, wie z. B. die Datei "web.config", haben.

Wenn Sie in einer einzelnen Farm mehrere Mandanten kombinieren, verwenden Sie für alle authentifizierten Inhalte eine dedizierte SharePoint-Webanwendung und eine separate dedizierte Webanwendung für alle anonymen Inhalte. Dazu sind für Mandanten mit beiden Inhaltstypen zwei separate Abonnement-IDs erforderlich. Dadurch wird auch die Lizenzierung vereinfacht.

Einige SharePoint-Features sind an die Webanwendungsebene gebunden, etwa die Einstellung "Self-Service Site Collection Creation". Nachdem sie aktiviert wurde, können alle Mandanten unter der gleichen Webanwendung Websitesammlungen erstellen.

Entwurf einer Umgebung mit einer einzelnen Farm

In einer Hostingumgebung, die mehrere Organisationen umfasst und in der Mandantendaten und Verwaltung isoliert sind, ist die Konfiguration partitionierter und gemeinsamer Dienste sehr wichtig. Dieses Beispiel zeigt eine praktische Implementierung partitionierter Dienste und bietet auch Empfehlungen zur Bereitstellung von Kundenwebsites.

In diesem Beispiel werden die folgenden Möglichkeiten erläutert, die es zur Bereitstellung von Kundenwebsites in einer Farm gibt:

  • Dedizierter Anwendungspool und dedizierte Webanwendung

  • Gemeinsamer Anwendungspool und dedizierte Webanwendung

  • Gemeinsame Webanwendung

    • Authentifizierte Websites

    • Nicht authentifizierte Websites

Verwenden Sie pro Kunde nur dann einen dedizierten Anwendungspool, wenn Isolationsanforderungen erfüllt werden müssen. Verwenden Sie dedizierte Webanwendungen für Mandanten, die Anpassungen erfordern, die Einfluss auf in einer Webanwendung geteilte Ressourcen, wie z. B. die Datei "web.config", haben.

Wenn Sie in einer einzelnen Webanwendung mehrere Mandanten kombinieren, verwenden Sie für alle authentifizierten Inhalte eine dedizierte Webanwendung und eine separate dedizierte Webanwendung für alle anonymen Inhalte. Dazu sind für Mandanten mit beiden Inhaltstypen zwei separate Abonnement-IDs erforderlich. Dadurch wird auch die Lizenzierung vereinfacht.

Lassen Sie nicht zu, dass voll vertrauenswürdiger Code auf Websites bereitgestellt wird.

Lassen Sie keine Anpassungen zu, die Einfluss auf geteilte Ressourcen, wie z. B. die Datei "web.config", haben.

Im folgenden Beispiel (authentifizierte Websites) wird für jedes Unternehmen eine andere Websitesammlung mit Hostname verwendet. Unternehmen C enthält zwei verschiedene Websitesammlungen mit Hostnamen. Unter jeder Websitesammlung mit Hostname auf oberster Ebene wird ein verwalteter Pfad verwendet, um für Websites wie Teamwebsites, Meine Websites, veröffentlichte Intranetinhalte oder separate abteilungsbezogene Websites eine zweite Stufe von Websitesammlungen auf oberster Ebene zu erstellen.

Entwurf einer gestuften Umgebung

Wie weiter oben beschrieben, müssen Sie bei der Planung Ihrer mehrmandantenfähigen SharePoint Server 2013-Hostingplattform zahlreiche Faktoren berücksichtigen. Dazu zählen Kosten, vereinfachte Verwaltung, Ressourcenisolation, Leistung und Skalierbarkeit.

Bei einem wachsenden Kundenstamm wird es zunehmend schwieriger, alle Anforderungen sämtlicher Kunden in einer einzelnen Umgebung zu erfüllen. Dann müssen bestimmte Kompromisse gemacht werden, wenn Sie einen Ausgleich zwischen diesen Faktoren suchen.

In einem Fall wie diesem stellt ein Entwurf mit einer gestuften Umgebung eine mögliche Alternative dar, in der mehrere SharePoint-Umgebungen die verschiedenen Anforderungen Ihrer Kunden erfüllen. Jede Umgebung wäre auf andere Aspekte Ihrer Dienstangebote ausgerichtet, wie geringe Kosten, hohe Dichte, höhere Ressourcenisolation und bessere Dienstqualität (Quality of Services ,QoS) mit höheren Kosten usw.

Mit diesem Ansatz einer gestuften Umgebung könnten Sie Ihren Kunden unterschiedliche Vereinbarungen zum Servicelevel bieten. Damit könnten Sie ein breites Kundenspektrum bedienen, Ihre Verwaltung und Ihren Betrieb vereinfachen, Ihre Verwaltungskosten senken und Ihre Gewinnmargen erhöhen.

Überlegungen zur Sicherheit

In diesem Abschnitt werden verschiedene Überlegungen zur Sicherheit erörtert, wenn Sie eine mehrmandantenfähige SharePoint Server 2013-Hostingplattform planen und entwerfen. Ab jetzt können Abschnitte, wie der Abschnitt "Organisationseinheiten", in denen die Konfiguration der Personenauswahl behandelt wird, nur ohne eine zusätzliche Anpassung mit Windows-Authentifizierung verwendet werden.

SharePoint Server 2013 unterstützt für die folgenden Authentifizierungstypen viele Authentifizierungsmethoden und -anbieter:

  • Windows-Authentifizierung

  • Formularbasierte Authentifizierung

  • Auf SAML-Token basierende Authentifizierung

Der Windows-Authentifizierungstyp nutzt Ihren vorhandenen Windows-Authentifizierungsanbieter und die Authentifizierungsprotokolle, die eine Windows-Domänenumgebung zum Überprüfen der Anmeldeinformationen von verbundenen Clients verwendet. Folgende Windows-Authentifizierungsmethoden werden sowohl bei anspruchsbasierter als auch bei klassischer Authentifizierung verwendet:

  • NTLM

  • Kerberos

  • Digest

  • Standard

Die formularbasierte Authentifizierung ist ein anspruchsbasiertes Identitätsverwaltungssystem, das auf der ASP.NET-Mitgliedschafts- und Rollenanbieterauthentifizierung basiert. Die formularbasierte Authentifizierung kann für Anmeldeinformationen verwendet werden, die in einem Authentifizierungsanbieter wie den folgenden gespeichert sind:

  • Active Directory-Domänendienste (AD DS)

  • Eine Datenbank wie z. B. eine SQL Server-Datenbank

  • Ein LDAP-Datenspeicher (Lightweight Directory Access-Protokoll) wie z. B. Novell eDirectory, Novell Directory Services (NDS) oder Sun ONE

Mit der formularbasierten Authentifizierung werden Benutzer anhand der Anmeldeinformationen überprüft, die sie in ein Anmeldeformular eingeben (üblicherweise eine Webseite). Nicht authentifizierte Anforderungen werden zu einer Anmeldeseite umgeleitet, auf der ein Benutzer gültige Anmeldeinformationen eingeben muss und das Formular übermittelt. Das System gibt ein Cookie für authentifizierte Anforderungen aus, das einen Schlüssel zum Wiederherstellen der Identität für spätere Anforderungen enthält.

Zum Verwenden der formularbasierten Authentifizierung von Benutzern in einem externen oder nicht auf Windows basierten Identitätsverwaltungssystem müssen Sie den Mitgliedschaftsanbieter und den Rollen-Manager in der Datei "web.config" registrieren. SharePoint Server 2013 verwendet die standardmäßige ASP.NET-Rollen-Manager-Schnittstelle zum Erfassen von Gruppeninformationen über den aktuellen Benutzer. Jede ASP.NET-Rolle wird im Autorisierungsprozess in SharePoint Server 2013 als Domänengruppe behandelt. Sie registrieren einen Rollen-Manager in der Datei "web.config" auf die gleiche Weise wie Mitgliedschaftsanbieter für die Authentifizierung.

Wenn Sie Mitgliedschaftsbenutzer oder -rollen über die Website für die Zentraladministration verwalten möchten, müssen Sie den Mitgliedschaftsanbieter und den Rollen-Manager in der Datei "Web.config" für die Website der Zentraladministration registrieren. Außerdem müssen Sie den Mitgliedschaftsanbieter und den Rollen-Manager in der Datei "web.config" der Webanwendung registrieren, die den Inhalt hostet, und in der Datei "web.config" des Sicherheitstokendienstes.

Die auf SAML-Token basierende Authentifizierung in SharePoint Server 2013 verwendet das SAML 1.1-Protokoll und das WS-Verbund-PRP (Passive Requestor Profile) (WS-F PRP). Sie erfordert eine Koordination mit den Administratoren einer anspruchsbasierten Umgebung, entweder Ihrer eigenen interne Umgebung oder einer Partnerumgebung. Wenn Sie Active Directory-Verbunddienste (AD FS) 2.0 verwenden, haben Sie eine auf SAML-Token basierende Authentifizierungsumgebung.

Bei Webanwendungen mit anspruchsbasierter Authentifizierung ist die Personenauswahl ein Steuerelement, das in SharePoint Server 2013 verfügbar ist. Das Steuerelement "Personenauswahl" verwendet Anspruchsanbieter zum Auflisten, Auflösen, Durchsuchen und Bestimmen der benutzerfreundlichen Anzeige von Benutzern, Gruppen und Ansprüchen. Zusätzliche Informationen zur Konfiguration der Personenauswahl finden Sie unter Übersicht über Personenauswahl und Anspruchsanbieter.

Zonen stellen verschiedene logische Pfade für den Zugriff auf die gleichen Websites in einer Webanwendung dar. Jede Webanwendung kann fünf Zonen enthalten. Wenn Sie eine Webanwendung erstellen, erstellt Zentraladministration die Zone mit dem Namen Standard. Zusätzliche Zonen werden durch Erweitern der Webanwendung und durch Auswahl einer der verbleibenden Zonennamen erstellt: Intranet, Extranet, Internet oder Benutzerdefiniert.

Organisationseinheiten

Organisationseinheiten (Organizational Units, OUs) organisieren Benutzer- und Computerobjekte in der Active Directory-Umgebung. Für das Hosting könnte die Organisationseinheitenstruktur wie im folgenden Diagramm dargestellt organisiert werden.

Dieses Diagramm zeigt die Organisationseinheitsstruktur einer Hostingumgebung

Sie sollten eine Gruppenrichtlinie zumindest mit dem Domänenstamm, der OU "Domänencontroller", der OU "SharePoint-Server" und der OU "Kunden" verknüpfen.

Domänenstamm

Sicherheit, die auf die gesamte Domäne angewendet wird, wird auf die Domänenrichtlinie angewendet. Diese Einstellungen sind in Gruppenrichtlinienobjekten (Group Policy Objects, GPOs) enthalten, die auf die gesamte Domäne angewendet werden.

OU "Domänencontroller"

Auf Domänencontrollern sind die vertraulichsten Daten in Ihrer Organisation gespeichert, welche die Sicherheitskonfiguration selbst steuern. Auf dieser Ebene angewendete GPOs werden zum Konfigurieren und Schützen der Domänencontroller in der Domäne verwendet.

OU "SharePoint-Server"

Die SharePoint-Server haben eine einzigartige Rolle, die in anderen Servern im Verzeichnis nicht enthalten ist. Wenn Sie diese Server in ihrer eigenen OU platzieren, können auf diese eindeutige Richtlinien angewendet werden. Sie können auch von anderen Servern im Verzeichnis isoliert werden. Untergeordnete OUs können erstellt werden, wenn andere GPOs erstellt werden müssen (wie Inhaltsserver mit anonymem Zugriff im Vergleich zu authentifizierten Inhaltsservern).

OU "Kunden"

Diese OU auf oberster Ebene erlaubt die Isolation aller Benutzerkonten vom restlichen Verzeichnis. Die nächste Ebene von OUs enthält die Kunden-OUs. Es gibt pro Kunde eine OU. Dadurch können alle Benutzer- und Computerkonten eines Kunden von denen anderer Kunden isoliert werden. Außerdem ist dies die erforderliche OU-Struktur, um in mehrmandantenfähigen Bereitstellungen Benutzerprofilsynchronisierung zu unterstützen.

Um den Benutzern den Eindruck zu geben, dass sie sich bei ihrer eigenen benutzerdefinierten Domäne anmelden, verwenden Sie den Active Directory-Dienstschnittstellen-Editor (ADSI Edit) oder ein anderes AD-Tool zum Bearbeiten des uPNSuffixes-Attributs jeder Kunden-OU (siehe folgendes Diagramm).

Dieses Diagramm zeigt das Dialogfeld des ADSI-Eigenschaften-Editors für das Attribut "uPNSuffixes"

Nachdem das uPNSuffixes-Attribut einer Kunden-OU konfiguriert wurde, kann dessen Wert, wie im folgenden Diagramm dargestellt, mit einem Benutzerkonto in dieser Kunden-OU verknüpft werden.

Dieses Diagramm zeigt das Dialogfeld "Neues Objekt", in dem Sie einen neuen Benutzer anlegen können

Benutzerauthentifizierung

Benutzerauthentifizierung ist die Validierung der Identität eines Benutzers durch einen Authentifizierungsanbieter. Dabei handelt es sich um ein Verzeichnis oder eine Datenbank, welche die Anmeldeinformationen des Benutzers enthält und bestätigen kann, das diese vom Benutzer korrekt übermittelt wurden. Ein solcher Authentifizierungsanbieter sind z. B. die Active Directory-Domänendienste (Active Directory Domain Services, AD DS). Andere gängige Namen für einen Authentifizierungsanbieter sind Benutzerverzeichnis und Attributspeicher.

Eine Authentifizierungsmethode ist ein bestimmter Austausch von Kontoanmeldeinformationen und anderen Informationen, die die Identität eines Benutzers bestätigen. Das Ergebnis der Authentifizierungsmethode ist ein Beweis, meist in der Form eines Tokens, das Ansprüche enthält, dass ein Authentifizierungsanbieter einen Benutzer authentifiziert hat.

Ein Authentifizierungstyp ist eine bestimmte Möglichkeit zum Überprüfen von Anmeldeinformationen anhand mindestens eines Authentifizierungsanbieters, wobei gelegentlich ein Branchenstandardprotokoll verwendet wird. Ein Authentifizierungstyp kann mehrere Authentifizierungsmethoden verwenden.

Nachdem die Identität eines Benutzers validiert wurde, bestimmt der Autorisierungsprozess die Websites, Inhalte und andere Features, auf die der Benutzer zugreifen kann.

Bei der Planung der Benutzerauthentifizierungstypen und -methoden sollte Folgendes bestimmt werden:

  • Die Benutzerauthentifizierungstypen und -methoden für alle Webanwendungen und -zonen

  • Die erforderliche Authentifizierungsinfrastruktur zum Unterstützen der festgelegten Authentifizierungstypen und -methoden

  • Die Vorgehensweise bei der Migration Ihrer aktuellen Webanwendungen und -zonen von der klassischen Windows-Authentifizierung zur anspruchsbasierten Authentifizierung

Active Directory-Verbunddienste (AD FS)

SharePoint Server 2013 unterstützt anspruchsbasierte Authentifizierung. Active Directory-Verbunddienste (Active Directory Federation Services, AD FS) können dafür konfiguriert werden, als Identitätsanbieter-Sicherheitstokendienst (Identity Provider Security Token Service, IP-STS) für eine Webanwendung von SharePoint Server 2013 zu fungieren. In dieser Konfiguration gibt AD FS aus Ansprüchen bestehende SAML-basierte Sicherheitstoken aus, sodass Clientcomputer auf Webanwendungen zugreifen können, die anspruchsbasierte Authentifizierung verwenden. Sie können einen anderen Identitätsanbieter als AD FS verwenden, dieser muss jedoch den WS-Verbundstandard unterstützen. Außerdem ist zur Verwendung der AD FS-Konfiguration benutzerdefinierter Code erforderlich.

Zusätzliche Informationen dazu, wie Sie SAML-basierte Forderungsauthentifizierung mit AD FS für SharePoint Server 2013 konfigurieren, finden Sie unter Konfigurieren von SAML-basierter Anspruchsauthentifizierung mit ADFS in SharePoint 2013.

Überlegungen zu Verwaltung und Betrieb

In diesem Abschnitt werden verschiedene Überlegungen zu Verwaltung und Betrieb einer mehrmandantenfähigen SharePoint Server 2013-Umgebung erörtert.

Kapazitätsverwaltung

Kapazitätsverwaltung ist ein kontinuierlicher Prozess, da keine Implementierung hinsichtlich Inhalt und Nutzung statisch bleibt. Sie müssen Wachstum und Veränderung einplanen, sodass die SharePoint Server 2013-Umgebung weiterhin eine kontinuierliche Geschäftslösung bereitstellen kann. Zusätzliche Informationen zur Kapazitätsverwaltung in SharePoint Server 2013 finden Sie unter Kapazitätsverwaltung und Größengestaltung für SharePoint Server 2013.

App-Verwaltung

Mit den Apps für SharePoint können Sie einer SharePoint-Website auf neue Weise spezifische Informationen oder Funktionalität hinzufügen. Eine App für SharePoint ist eine kleine, benutzerfreundliche eigenständige Anwendung, die eine bestimmte benutzerbezogene oder geschäftliche Anforderung erfüllt. Websitebesitzer können Apps für SharePoint in einem öffentlichen SharePoint Store oder dem internen App-Katalog der Organisation suchen, herunterladen und anschließend auf ihren SharePoint-Websites installieren. Mithilfe dieser Apps für SharePoint werden die Vorzüge des Internets mit SharePoint Server 2013 integriert. Sie dienen nicht als Ersatz von SharePoint-Features und -Lösungspaketen, mit denen SharePoint-Websites angepasst oder optimiert werden. Im Gegensatz zu Features und Lösungen, die Farm- oder Websitesammlungs-Administratoren installieren müssen, sind Apps für SharePoint eigenständige Anwendungen, die Websitebesitzer ihren SharePoint-Websites hinzufügen können. Die Verwaltung von Apps für SharePoint ist ganz einfach, denn sie können von Websitebesitzern einfach installiert, aktualisiert und deinstalliert werden.

Der App-Verwaltungsdienst in SharePoint Server 2013 ist mehrmandantenfähig. Der Großteil der Konfiguration und der Verwaltungsfunktionen ist über die Website für die Mandantenverwaltung verfügbar und erlaubt jedem Mandantenadministrator, seine individuellen Einstellungen zu konfigurieren.

Sichern und Wiederherstellen

Wenn Sie auf einer mehrmandantenfähigen SharePoint Server 2013-Hostingplattform mandantenunabhängige Sicherungs- und Wiederherstellungsvorgänge durchführen, können Sie die allgemeinen Anweisungen zur Durchführung von Sicherungs- und Wiederherstellungsvorgängen in SharePoint Server 2013-Umgebungen unter Sichern und Wiederherstellen in SharePoint Server befolgen.

Beachten Sie, dass die Workflow-Plattform in SharePoint Server 2013 von der SharePoint-Plattform getrennt ist. Daher sollten Sicherungs- und Wiederherstellungsvorgänge im Workflow-Manager mit SharePoint-Sicherungs- und -Wiederherstellungsvorgängen koordiniert werden, damit sie synchron bleiben. Weitere Anleitungen, wie Sie Sicherungs- und Wiederherstellungsvorgänge für Workflow-Dienst-Manager planen, finden Sie unter Notfallwiederherstellung und Bereichswiederherstellung in Workflow Manager 1.0

Wenn Sie auf einer mehrmandantenfähigen SharePoint Server 2013-Hostingplattform mandantenspezifische Sicherungs- und Wiederherstellungsvorgänge durchführen, müssen Sie möglicherweise die folgenden mandantenspezifischen Komponenten miteinander synchron halten: Dienstanwendungen, Workflow, Inhaltsdatenbanken und Websitesammlungen.

Dienstanwendungen

Dienstanwendungen, die im partitionierten Modus konfiguriert wurden, weisen eine oder mehrere verknüpfte Datenbanken auf, die mandantenspezifische Daten enthalten. Sie können für diese Dienstanwendungen zwar sowohl auf der Anwendungs- als auch auf der Datenbankebene allgemeine Sicherungs- und Wiederherstellungsvorgänge durchführen, doch zur Durchführung mandantenspezifischer detaillierter Sicherungs- und Wiederherstellungsvorgänge für diese Dienstanwendungen oder deren Datenbanken sind nur begrenzte Befehle vorhanden.

Überlegungen zur Dienstanwendungen

App-Verwaltungsdienst

Der App-Verwaltungsdienst ist die Dienstanwendung zur Verwaltung des App für SharePoint-Features, das in SharePoint Server 2013 eingeführt wird. Mit den Apps für SharePoint können Sie einer SharePoint-Website auf neue Weise spezifische Informationen oder Funktionalität hinzufügen. Eine App für SharePoint ist eine kompakte, benutzerfreundliche, eigenständige App, die spezifische Anforderungen von Endbenutzern oder Unternehmen erfüllt. Der App-Verwaltungsdienst unterstützt den partitionierten Modus nicht, ist aber systeminhärent websiteabonnementfähig. In der mehrmandantenfähigen SharePoint-Umgebung sind die meisten App-Verwaltungsfunktionen (d. h. "App-Katalog verwalten", "App-Lizenzen verwalten", "App-Berechtigungen" usw.) über die Website für die Mandantenverwaltung verfügbar.

Das folgende Diagramm zeigt die App-Verwaltung auf der Website für die Mandantenverwaltung.

Dieses Diagramm zeigt die Mandantenverwaltungs-Website für die Anwendungsverwaltung

Business Data Connectivity-Dienst

Nachdem der Business Data Connectivity-Dienst im partitionierten Modus konfiguriert wurde, werden sämtliche Konfigurationselemente des Dienstes zur Mandantenverwaltung verschoben. Die Vorlage für die Website für Mandantenverwaltung enthält jedoch nicht den Link zu dieser Seite. Dieser kann mithilfe der Anpassungstechnik im Abschnitt "Erweitern der Vorlage für die Website für Mandantenverwaltung" hinzugefügt werden.

Dienstanwendung für einmaliges Anmelden

Nachdem der Dienst im partitionierten Modus konfiguriert wurde, verbleibt die Erstellung von Verschlüsselungsschlüsseln eine Konfiguration auf Farmebene, die entweder über die Zentralverwaltung oder Windows PowerShell durchgeführt wird. Die restlichen Konfigurationselemente der Dienstanwendung für einmaliges Anmelden werden zur Mandantenverwaltung verschoben. Die Vorlage für die Website für Mandantenverwaltung enthält jedoch nicht den Link zu dieser Seite. Dieser kann mithilfe der Anpassungstechnik im Abschnitt "Erweitern der Vorlage für die Website für Mandantenverwaltung" hinzugefügt werden.

Verwalteter Metadatendienst

Nachdem der Dienst im partitionierten Modus konfiguriert wurde, wird die gesamte Konfiguration des Dienstes zur Mandantenverwaltung verschoben, und Inhaltstyp-Veröffentlichung wird standardmäßig aktiviert.

Suchdienst

Viele Funktionen, die mit der mandantenspezifischen Suchkonfiguration zusammenhängen, werden in der Website für die Mandantenverwaltung verfügbar gemacht, wie im folgenden Diagramm dargestellt.

Dieses Diagramm zeigt die Suchverwaltungsfeatures auf der Website für die Mandantenverwaltung

Hinweis

Viele der .EnterpriseSearch Microsoft PowerShell-Cmdlets sind nun partitionsfähig und können zum Automatisieren einiger Konfigurations- und Verwaltungsfunktionen verwendet werden, die auf der Website für die Mandantenverwaltung verfügbar gemacht werden.

Benutzerprofildienst

Eine große Anzahl von Konfigurationselementen wird zur Mandantenverwaltung verschoben, wobei allerdings viele der Konfigurationselemente für die Profilsynchronisierung auf einer Farmebene verbleiben und auf alle Mandanten anwendbar sind, wie in der folgenden Abbildung dargestellt.

In dieser Abbildung wird die Benutzerprofilkonfiguration veranschaulicht

Workflow

Wie zuvor erwähnt, ist die Workflow-Plattform in SharePoint Server 2013 von der SharePoint-Plattform getrennt. Die Workflow-Plattform selbst verwendet eine oder mehrere Datenbanken. Sie können für diese Datenbanken zwar allgemeine Sicherungs- und Wiederherstellungsvorgänge auf Datenbankebene durchführen, aber es gibt keine Befehle oder Dienstprogramme, um für diese Workflow-Datenbanken mandantenspezifische Sicherungs- und Wiederherstellungsvorgänge durchzuführen.

Inhaltsdatenbanken

Wenn ein Mandant ein exklusives Recht zur Nutzung einer oder mehrerer dedizierter Inhaltsdatenbanken besitzt, können Sie für diese Datenbanken allgemeine Sicherungs- und Wiederherstellungsvorgänge auf Datenbankebene durchführen.

Hinweis

Das Recht zur exklusiven Nutzung einer oder mehrerer dedizierter Inhaltsdatenbanken kann nicht mithilfe standardmäßiger Produktfeatures wie z. B. Self-Service Site Creation erworben werden. Dies ist ein Beispiel für einen Fall, in dem eine Anpassung erforderlich ist, um ein bestimmtes Service-Level-Angebot bereitzustellen.

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie für eine Mandanteninhaltsdatenbank eine erstmalige Sicherungsaktion durchführen.

Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue

Backup-SPFarm -Directory "c:\backups\alpha" -Item "HostingFarm_Content_Hosting" -BackupMethod Full

Write-Host "Tenant Content Database Backup Script Completed!"

The following Windows PowerShell script shows how to perform a restore operation on a tenant site collection:
Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue

Restore-SPFarm -Directory "c:\backups\alpha" -Item "HostingFarm_Content_Hosting" -RestoreMethod Overwrite

Write-Host "Tenant Content Database Restore Script Completed!"

Websitesammlungen

Sie können für eine Mandantenwebsitesammlung spezifische Sicherungs- und Wiederherstellungsvorgänge durchführen. Welches Tool Sie wählen, hängt von der Größe der Websitesammlung selbst ab. Microsoft PowerShell-Cmdlets sind für kleine bis mittelgroße Websitesammlungen geeignet.

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie für eine Mandantenwebsitesammlung eine Sicherungsaktion durchführen.

Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue

Backup-SPSite -Identity "http://alpha.contoso.com" -Path "c:\backups\alpha\root.bak" -UseSqlSnapshot

Write-Host "Tenant Site Collection Backup Script Completed!"

The following script shows how to perform a restore operation on a tenant site collection:
Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue

Restore-SPSite -Identity "http://alpha.contoso.com" -Path "c:\backups\alpha\root.bak" -DatabaseServer "SQLServer01" -DatabaseName "HostingFarm_Content_Hosting" -HostHeaderWebApplication "http://$ENV:COMPUTERNAME" -GradualDelete - Confirm: $false -Force

Write-Host "Tenant Site Collection Restore Script Completed!"

Überwachung

Es gibt zahlreiche Tools, mit denen Sie SharePoint Server 2013 überwachen und Probleme beheben können. Die jeweiligen Tools zielen auf unterschiedliche Aspekte der Umgebung ab, wobei es Überschneidungen geben kann. Überlegen Sie sich, mit welchen Tools Sie einen maximalen Nutzen für die Überwachung erzielen können. Zusätzliche Hinweise dazu, wie Sie Überwachung für SharePoint Server 2013 planen, finden Sie unter Planen der Überwachung in SharePoint Server.

Feature Pack-Verwaltung

Wie weiter oben erwähnt, kann ein Feature Pack verwendet werden, um unterschiedliche Features zu gruppieren und mit einem Websiteabonnement (d. h. Mandanten) zu verknüpfen. Alle Websitesammlungen in dem Websiteabonnement (Mandanten) können nur die website- oder webbezogenen Features verwenden, die Teil des Feature Pack sind. So können Dienstanbieter basierend auf unterschiedlichen Sätzen von Features gestufte Dienstangebote bereitstellen. Verwenden Sie zum Erstellen von Feature Packs das New-SPSiteSubscriptionFeaturePack-Cmdlet zur Erstellung des Feature-Pack-Containers und das Add-SPSiteSubscriptionFeaturePackMember-Cmdlet zum Hinzufügen der individuellen Features zum Container.

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie ein Feature Pack auf Mandantenebene erstellen, das SharePoint Foundation 2013-Features enthält und die Feature-Pack-ID in der Eigenschaftensammlung der Farm speichert.

Hinweis

Die Dienstanwendung "Abonnementeinstellungen" muss vorhanden sein, bevor Skripts ausgeführt werden, die mit Feature Packs verwendet werden können.

<#
   Feature Packs.ps1

    Creates a new Feature Pack comprised of SharePoint Foundation 2013 Features
    Adds the Feature Pack ID with a friendly name to the Farm's Property Bag for future use.


    
#>
asnp Microsoft.SharePoint.PowerShell

# Create an alias for Add-SPSiteSubscriptionFeaturePackMember 
Set-Alias AddFeature Add-SPSiteSubscriptionFeaturePackMember

# create a new feature pack, and store it in the Farm's Property Bag
$ffp = New-SPSiteSubscriptionFeaturePack
$farm = Get-SPFarm
$farm.Properties.Add("Foundation_FeaturePack", $ffp.Id);
$farm.Update();

# add foundation features to the feature pack

# web scoped features...
AddFeature -identity $ffp -FeatureDefinition  XmlFormLibrary
AddFeature -identity $ffp -FeatureDefinition  LinksList
AddFeature -identity $ffp -FeatureDefinition  WorkflowProcessList
AddFeature -identity $ffp -FeatureDefinition  GridList
AddFeature -identity $ffp -FeatureDefinition  WorkflowHistoryList
AddFeature -identity $ffp -FeatureDefinition  TeamCollab
AddFeature -identity $ffp -FeatureDefinition  GanttTasksList
AddFeature -identity $ffp -FeatureDefinition  PictureLibrary
AddFeature -identity $ffp -FeatureDefinition  IssuesList
AddFeature -identity $ffp -FeatureDefinition  DiscussionsList
AddFeature -identity $ffp -FeatureDefinition  ContactsList
AddFeature -identity $ffp -FeatureDefinition  ExternalList
AddFeature -identity $ffp -FeatureDefinition  TasksList
AddFeature -identity $ffp -FeatureDefinition  WebPageLibrary
AddFeature -identity $ffp -FeatureDefinition  AnnouncementsList
AddFeature -identity $ffp -FeatureDefinition  WikiPageHomePage
AddFeature -identity $ffp -FeatureDefinition  CustomList
AddFeature -identity $ffp -FeatureDefinition  DocumentLibrary
AddFeature -identity $ffp -FeatureDefinition  SurveysList
AddFeature -identity $ffp -FeatureDefinition  EventsList
AddFeature -identity $ffp -FeatureDefinition  DataSourceLibrary
AddFeature -identity $ffp -FeatureDefinition  NoCodeWorkflowLibrary
AddFeature -identity $ffp -FeatureDefinition  OsrvLinks
AddFeature -identity $ffp -FeatureDefinition  FCGroupsList
AddFeature -identity $ffp -FeatureDefinition  TenantAdminBDC
AddFeature -identity $ffp -FeatureDefinition  OssNavigation
AddFeature -identity $ffp -FeatureDefinition  IMEDicList
AddFeature -identity $ffp -FeatureDefinition  CallTrackList
AddFeature -identity $ffp -FeatureDefinition  SSSvcAdmin
AddFeature -identity $ffp -FeatureDefinition  MpsWebParts
AddFeature -identity $ffp -FeatureDefinition  GBWWebParts
AddFeature -identity $ffp -FeatureDefinition  FacilityList
AddFeature -identity $ffp -FeatureDefinition  ScheduleList
AddFeature -identity $ffp -FeatureDefinition  ObaProfilePages
AddFeature -identity $ffp -FeatureDefinition  GBWProvision
AddFeature -identity $ffp -FeatureDefinition  OSSSearchSearchCenterUrlFeature
AddFeature -identity $ffp -FeatureDefinition  WikiWelcome
AddFeature -identity $ffp -FeatureDefinition  MaintenanceLogs
AddFeature -identity $ffp -FeatureDefinition  TenantAdminLinks
AddFeature -identity $ffp -FeatureDefinition  HolidaysList
AddFeature -identity $ffp -FeatureDefinition  GroupWork
AddFeature -identity $ffp -FeatureDefinition  WhereaboutsList
AddFeature -identity $ffp -FeatureDefinition  CirculationList
AddFeature -identity $ffp -FeatureDefinition  TenantAdminSecureStore
AddFeature -identity $ffp -FeatureDefinition  SearchAdminWebParts
AddFeature -identity $ffp -FeatureDefinition  ObaSimpleSolution
AddFeature -identity $ffp -FeatureDefinition  TimecardList
AddFeature -identity $ffp -FeatureDefinition  WhatsNewList
AddFeature -identity $ffp -FeatureDefinition  MobilityRedirect
AddFeature -identity $ffp -FeatureDefinition  AdminLinks
AddFeature -identity $ffp -FeatureDefinition  SearchCenterLiteFiles
AddFeature -identity $ffp -FeatureDefinition  CorporateCatalog
AddFeature -identity $ffp -FeatureDefinition  BlogContent
AddFeature -identity $ffp -FeatureDefinition  PromotedLinksList
AddFeature -identity $ffp -FeatureDefinition  AppLockdown
AddFeature -identity $ffp -FeatureDefinition  AppRequestsList
AddFeature -identity $ffp -FeatureDefinition  SearchCenterUpgrade
AddFeature -identity $ffp -FeatureDefinition  SearchConfigFields
AddFeature -identity $ffp -FeatureDefinition  PhonePNSubscriber
AddFeature -identity $ffp -FeatureDefinition  SearchConfigContentType
AddFeature -identity $ffp -FeatureDefinition  GettingStarted
AddFeature -identity $ffp -FeatureDefinition  GettingStartedWithAppCatalogSite
AddFeature -identity $ffp -FeatureDefinition  ExternalSubscription
AddFeature -identity $ffp -FeatureDefinition  SearchCenterFiles
AddFeature -identity $ffp -FeatureDefinition  BcsEvents
AddFeature -identity $ffp -FeatureDefinition  OfficeExtensionCatalog
AddFeature -identity $ffp -FeatureDefinition  MDSFeature
AddFeature -identity $ffp -FeatureDefinition  TenantSearchAdmin
AddFeature -identity $ffp -FeatureDefinition  SiteAssets
AddFeature -identity $ffp -FeatureDefinition  PremiumSearchVerticals
AddFeature -identity $ffp -FeatureDefinition  AccessRequests
AddFeature -identity $ffp -FeatureDefinition  SearchConfigList
AddFeature -identity $ffp -FeatureDefinition  ReportAndDataSearch
AddFeature -identity $ffp -FeatureDefinition  MBrowserRedirect
AddFeature -identity $ffp -FeatureDefinition  BlogHomePage
AddFeature -identity $ffp -FeatureDefinition  SearchConfigListTemplate
AddFeature -identity $ffp -FeatureDefinition  SiteNotebook
AddFeature -identity $ffp -FeatureDefinition  HierarchyTasksList
AddFeature -identity $ffp -FeatureDefinition  BlogSiteTemplate
AddFeature -identity $ffp -FeatureDefinition  SearchCenterLiteUpgrade

# Site Scoped features...                                                                                                                                                                                               
AddFeature -identity $ffp -FeatureDefinition  BasicWebParts
AddFeature -identity $ffp -FeatureDefinition  OSSSearchEndUserHelpFeature
AddFeature -identity $ffp -FeatureDefinition  HelpLibrary
AddFeature -identity $ffp -FeatureDefinition  OfficeWebApps
AddFeature -identity $ffp -FeatureDefinition  WordServerViewing
AddFeature -identity $ffp -FeatureDefinition  OnenoteServerViewing
AddFeature -identity $ffp -FeatureDefinition  SiteHelp
AddFeature -identity $ffp -FeatureDefinition  ctypes
AddFeature -identity $ffp -FeatureDefinition  OSSSearchSearchCenterUrlSiteFeature
AddFeature -identity $ffp -FeatureDefinition  OpenInClient
AddFeature -identity $ffp -FeatureDefinition  ExcelServerEdit
AddFeature -identity $ffp -FeatureDefinition  AdminReportCore
AddFeature -identity $ffp -FeatureDefinition  fields
AddFeature -identity $ffp -FeatureDefinition  SearchServerWizardFeature
AddFeature -identity $ffp -FeatureDefinition  OSearchHealthReports
AddFeature -identity $ffp -FeatureDefinition  SearchWebParts
AddFeature -identity $ffp -FeatureDefinition  IssueTrackingWorkflow
AddFeature -identity $ffp -FeatureDefinition  ShareWithEveryone
AddFeature -identity $ffp -FeatureDefinition  MonitoredApps
AddFeature -identity $ffp -FeatureDefinition  SearchTaxonomyRefinementWebParts
AddFeature -identity $ffp -FeatureDefinition  SearchTaxonomyRefinementWebPartsHtml
AddFeature -identity $ffp -FeatureDefinition  SearchMaster
AddFeature -identity $ffp -FeatureDefinition  EnableAppSideLoading
AddFeature -identity $ffp -FeatureDefinition  Developer
AddFeature -identity $ffp -FeatureDefinition  AutohostedAppLicensing
AddFeature -identity $ffp -FeatureDefinition  AppRegistration

Write-Host "Feature Pack Created! " + $ffp.ID

Lizenzverwaltung

In SharePoint Server 2013 wurde eine neue Funktion zur Lizenzverwaltung hinzugefügt. Farmadministratoren können jetzt Benutzern Lizenzen zuweisen und Lizenzüberprüfungen aktivieren. Mithilfe dieser neuen Funktion können Sie sicherstellen, dass nur Benutzer mit entsprechender Lizenz ein spezifisches Feature verwenden können. Die Funktion vereinfacht außerdem das Bereitstellungsmodell, da Sie keine separaten Farmen für Standard und Enterprise Editionen von SharePoint Server mehr erstellen müssen.

Benutzerlizenzen werden anhand der Zuordnung von Ansprüchen zu einem bekannten Lizenztyp zugewiesen. Ein Anspruch kann beispielsweise eine Sicherheitsgruppe von Active Directory-Domänendienste (AD DS) sein. Durch die Zuordnung der ContosoFinanceDept-Sicherheitsgruppe zu einer Enterprise-Lizenz weisen Sie eine Enterprise-Lizenz im Endeffekt allen Mitgliedern dieser Gruppe zu. Benutzern, die sich bei SharePoint Server anmelden, werden Ansprüche zugewiesen. SharePoint Server untersucht die Ansprüche von Benutzern, um deren Lizenz zu ermitteln. Besitzt ein Benutzer keine Lizenz zur Verwendung eines bestimmten Features, sperrt SharePoint für ihn dieses Feature zur Laufzeit.

Diese SharePoint Server 2013-Lizenzimplementierung wird mithilfe neuer Microsoft PowerShell-Cmdlets verwaltet. Standardmäßig ist die Lizenzverwaltung in SharePoint Server deaktiviert. Administratoren können sie jedoch mithilfe von Microsoft PowerShell aktivieren. Zusätzliche Informationen dazu, wie Sie die Lizenzverwaltung in SharePoint Server 2013 konfigurieren, finden Sie unter Konfigurieren der Lizenzierung in SharePoint Server 2013.

Lebenszyklusverwaltung

In diesem Whitepaper werden zwar die wichtigsten Überlegungen zur Infrastruktur beim Entwurf einer mehrmandantenfähigen SharePoint 2013-Lösung erläutert, und es enthält grundlegende Skripts zur Konfiguration, doch die allgemeine Verwaltung des Lebenszyklus des Betriebs ist unerlässlich. So sind z. B. die benutzerdefinierte Mandantenverwaltung, das Aufheben der Bereitstellung von Abonnements, Archivieren, Benutzerverwaltung, Self-Service-Kennwortzurücksetzung und Kontingente allesamt gemeinsame Bereiche, die eine Kombination aus zusätzlichen Windows PowerShell-Aktionen und Anpassung erfordern, um ein umfassendes Dienstangebot bereitzustellen. Jeder Dienstanbieter hat unterschiedliche Anforderungen in diesem Bereich, und es muss unbedingt sichergestellt werden, dass diese Anforderungen bei der anfänglichen Bereichsdefinition und dem Entwurf für die Infrastrukturplattform berücksichtigt werden.

Einrichtung und Konfiguration

In diesem Abschnitt werden die allgemeinen Schritte zur Einrichtung und Konfiguration einer mehrmandantenfähigen SharePoint Server 2013-Hostingplattform beschrieben.

Danksagung

Dieser Abschnitt enthält nähere Informationen und PowerShell-Skripts, welche die Erstellung und Konfiguration verschiedener Komponenten demonstrieren. Diese Skripts werden im Allgemeinen zur Verfügung gestellt, um die Konfigurationsanforderungen für Mehrmandantenfähigkeit zu demonstrieren, und stellen daher nicht die optimale Bereitstellungsreihenfolge dar. Sie können jedoch als Grundlage für die Entwicklung Ihrer eigenen angepassten End-to-End-Skriptlösung dienen.

Die in den folgenden Unterabschnitten enthaltenen Microsoft PowerShell-Skripts basieren (ganz oder teilweise) auf den Arbeiten von Spencer Harbar (http://www.harbar.net) und werden hier mit seiner freundlichen Genehmigung wiedergegeben. In den folgenden Dokumenten finden Sie seine ursprünglichen Arbeiten.

Die angegebenen PowerShell-Skripts enthalten Variablen, die entsprechend Ihrer Umgebung geändert werden sollten.

Bereitstellungsbeispiel

Dieser Abschnitt enthält ein Bereitstellungsbeispiel, bei dem eine einzelne Hostingwebanwendung verwendet wird, die Websitesammlungen mit Hostnamen und verwaltete Hostheaderpfade verwendet. Sie wird der Einfachheit halber auf einem einzelnen Server bereitgestellt. Dies ist das vorgesehene Entwurfsmodell für Mehrmandantenfähigkeit mit SharePoint 2013 und kann auf eine Bereitstellung erweitert werden, bei der Dienstinstanzrollen über mehrere Computer hinweg artikuliert werden. Das Bereitstellungsbeispiel verwendet HTTP für die Webanwendung. In einer echten Bereitstellung sollte SSL verwendet werden, um Anmeldung, Inhalte und die mit SharePoint-Apps und anderen OAuth2-verwandten Diensten wie Workflow-Manager verwendeten Autorisierungstoken zu schützen.

DNS-Konfiguration

Da für eine mehrmandantenfähige SharePoint-Umgebung Websitesammlungen mit Hostnamen verwendet werden, müssen Sie Ihr DNS basierend auf Ihrem Plan entsprechend konfigurieren (d. h. entsprechende DNS-Einträge etc. erstellen). Zusätzliche Hinweise dazu, wie Sie Websitesammlungen mit Hostnamen für SharePoint Server 2013 planen, finden Sie unter Websitesammlungsarchitektur mit Hostnamen und Bereitstellung in SharePoint Server.

Wenn auch Apps für SharePoint unterstützt werden sollen, müssen Sie auch DNS für die Unterstützung Ihrer Umgebung konfigurieren. Zusätzliche Informationen dazu, wie Sie eine Apps-Umgebung für SharePoint Server 2013 konfigurieren, finden Sie unter Konfigurieren einer Umgebung für Apps für SharePoint Server.

Active Directory-Konfiguration

Wie weiter oben beschrieben, muss zur Unterstützung von Mehrmandantenfähigkeit in SharePoint Active Directory korrekt strukturiert werden, indem eine hierarchische Organisationseinheitenstruktur erstellt wird, um Benutzerprofilsynchronisierung für jedes Abonnement zu unterstützen. Außerdem müssen Sie geeignete Dienstkonten für Ihre Umgebung erstellen. Zusätzliche Informationen dazu, wie Sie Dienstkonten für SharePoint Server 2013 planen, finden Sie unter Planen von Administrator- und Dienstkonten in SharePoint Server. In diesem Bereitstellungsbeispiel werden die folgenden drei Dienstkonten verwendet:

  • SPFarm: das Konto der SharePoint-Farm

  • SPServices: die Anwendungspoolidentität, die Dienstanwendungsendpunkte hostet

  • SPContent: die Anwendungspoolidentität, welche die Inhaltswebanwendung hostet

Erstellung und Konfiguration der SharePoint-Farm

Das folgende Microsoft PowerShell-Skript zeigt die Erstellung einer SharePoint-Farm.

<#
    1. Farm Creation.ps1

    Creates a new SharePoint Farm
    Creates Central Administration on Port 8080

    Update initial variables as needed to reflect your environment
    Script will prompt for the password of the farm account
#>
asnp Microsoft.SharePoint.PowerShell

$databaseServer = "SQLSP1"
$configDatabase = "HostingFarm_Config"
$adminContentDB = "HostingFarm_Content_Admin"
$passphrase = "Password1"
$farmAccountName = "FABRIKAM\spfarm"
  
$farmAccount = Get-Credential $farmAccountName
$passphrase = (ConvertTo-SecureString $passphrase -AsPlainText -force)

Write-Host "Creating Configuration Database and Central Admin Content Database..."
New-SPConfigurationDatabase -DatabaseServer $databaseServer -DatabaseName $configDatabase `
    -AdministrationContentDatabaseName $adminContentDB `
    -Passphrase $passphrase -FarmCredentials $farmAccount
    
$spfarm = Get-SPFarm -ErrorAction SilentlyContinue -ErrorVariable err        
if ($spfarm -eq $null -or $err) {
   throw "Unable to verify farm creation."
}


Write-Host "ACLing SharePoint Resources..."
Initialize-SPResourceSecurity
Write-Host "Installing Services ..."
Install-SPService   
Write-Host "Installing Features..."
Install-SPFeature -AllExistingFeatures

Write-Host "Creating Central Administration..."              
New-SPCentralAdministration -Port 8080 -WindowsAuthProvider NTLM

Write-Host "Installing Help..."
Install-SPHelpCollection -All        
Write-Host "Installing Application Content..."
Install-SPApplicationContent

Write-Host "Farm Creation Done!" 

Proxy-Gruppe, Hostwebanwendung und verwaltete Pfade

Anfänglich wird für den Anwendungspool, der die Inhaltswebanwendung hostet, ein verwaltetes Konto erstellt. Eine neue Proxy-Gruppe wird erstellt, gefolgt von der Webanwendung. Abschließend erfolgt die Konfiguration der Webanwendung, um Self-Service Site Creation und die Erstellung gemeinsamer verwalteter Pfade zu erlauben. Es ist außerordentlich wichtig, in der Hostwebanwendung eine Stammwebsitesammlung zu erstellen, obwohl diese Websitesammlung von Endbenutzern nicht aufgerufen wird. Dies ist erforderlich, um die Unterstützbarkeit und das korrekte Betriebsverhalten von SharePoint 2013 zu gewährleisten.

Hinweis

Dieses Beispiel verwendet für die Webanwendung HTTP.

<#
    2. Proxy Group, Web Application & Farm Settings.ps1

    Creates a new Managed Account
    Creates a new Proxy Group
    Creates a new Web Application for HNSC, in a new Application Pool, in the new Proxy Group
    Creates an empty root Site Collection
    Enables Self Service Site Creation
    Creates Managed Paths for HNSC
    


    Update initial variables as needed to reflect your environment
    Update the Managed Paths section to use the paths you need
    Script will prompt for the password of the App Pool account used for the Web App
    You will need to configure the SSL certificate manually or via IIS PowerShell

#>
asnp Microsoft.SharePoint.PowerShell

## UPDATE THESE VARS ##
$waAppPoolUserName = "FABRIKAM\spcontent"
$waAppPoolName = "SharePoint Hosting"
$proxyGroupName = "Hosting Proxy Group"

$waUrl = "http://$ENV:COMPUTERNAME"
$webAppName = "SharePoint Hosting"
$contentDBName = "HostingFarm_Content_Hosting"
$ownerEmail = "administrator@contoso.com"
$ownerAlias = "FABRIKAM\administrator"
## END VARS ##



# Create Managed Account
Write-Host "Please supply the password for the $waAppPoolUserName Account..."
$appPoolCred = Get-Credential $waAppPoolUserName
Write-Host "Creating Managed Account..."
$waAppPoolAccount = New-SPManagedAccount -Credential $appPoolCred

# Create a new Proxy Group
Write-Host "Creating Proxy Group..."
$proxyGroup = New-SPServiceApplicationProxyGroup -Name $proxyGroupName

# Create a new Web App in the new Proxy Group using Windows Claims on Port 80 with no host header
Write-Host "Creating Web Application..."
# SSL example, not used
#$webApp = New-SPWebApplication -ApplicationPool $waAppPoolName -ApplicationPoolAccount $waAppPoolAccount -Name $webAppName -Port 443 -SecureSocketsLayer:$true -AuthenticationProvider (New-SPAuthenticationProvider) -DatabaseName $contentDBName -ServiceApplicationProxyGroup $proxyGroup
# following line is to use port 80
$webApp = New-SPWebApplication -ApplicationPool $waAppPoolName -ApplicationPoolAccount $waAppPoolAccount -Name $webAppName -Port 80 -AuthenticationProvider (New-SPAuthenticationProvider) -DatabaseName $contentDBName -ServiceApplicationProxyGroup $proxyGroup 

# Create a empty root Site Collection, required for support and SSSC
Write-Host "Creating empty root Site Collection..."
New-SPSite -Url $waUrl -owneralias $ownerAlias -ownerEmail $ownerEmail

# Enable Self Service Site Creation 
Write-Host "Enabling Self Service Site Creation..."
$webApp.SelfServiceSiteCreationEnabled = $true
$webApp.RequireContactForSelfServiceSiteCreation = $false
$webApp.Update()

# Create Managed Paths for all 2013 Tenancy capabilities (remove the ones you don't want)
# the default /sites path is removed to prevent creation of sites from CA
Write-Host "Creating HNSC Managed Paths..."
Remove-SPManagedPath "sites" -WebApplication $webApp -Confirm:$false
New-SPManagedPath "admin" -HostHeader -Explicit # Tenant Administration
New-SPManagedPath "apps" -HostHeader -Explicit  # App Catalog
New-SPManagedPath "cthub" -HostHeader -Explicit # Content Type Hub
New-SPManagedPath "my" -HostHeader -Explicit    # MySite Host
New-SPManagedPath "my/sites" -HostHeader        # MySites
New-SPManagedPath "edisc" -HostHeader -Explicit # E-Discovery Hub


Write-Host "Proxy Group and Web Application done!"

Nicht partitionierte Dienste

In dieser Phase können die nicht partitionierten Dienstanwendungen erstellt werden. Diese Dienstanwendungen sind entweder in der Farm für normale Vorgänge (z. B. den Statusdienst) erforderlich oder müssen nicht partitioniert werden, um Mehrmandantenfähigkeit zu unterstützen, da sie keine Daten speichern. Dazu ist ein anderes verwaltetes Konto erforderlich, und dann wird wiederum jede Dienstanwendung erstellt.

Das folgende Microsoft PowerShell-Skript zeigt, wie die nicht partitionierten Dienstanwendungen erstellt werden.

<#
    3. Non Partitioned Services.ps1

    Creates a new Managed Account
    Creates a new Service Application Pool
    
    Starts the Service Instances for and creates non partitioned Service Applications and Proxies:
        State Service
        Usage and Health Data Collection Service
        Subscription Settings Service
        App Management Service
        Work Management Service

    ...in the new Proxy Group 

    Adds any configured Workflow Service Proxy to the new Proxy Group

    Update initial variables as needed to reflect your environment
    Script will prompt for the password of the Service Application Pool account

    
    
#>
asnp Microsoft.SharePoint.PowerShell


## UPDATE THESE VARS ##
$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"
$saAppPoolUserName = "FABRIKAM\spservices"

# Service Application and DB names
$stateName = "State Service"
$stateDBName = "HostingFarm_StateService"

$usageName = "Usage and Health Data Collection Service"
$usageDBName = "HostingFarm_Usage"

$subsName = "Subscription Settings Service"
$subsDBName = "HostingFarm_SubscriptionSettings"

$appsName = "App Management Service"
$appsDBName = "HostingFarm_AppManagement"

$wmsName = "Work Management Service"

$pasName = "PowerPoint Automation Service"
## END VARS ##


# Create Managed Account and App Pool for Service App Endpoints
Write-Host "Please supply the password for the $saAppPoolUserName Account..."
$appPoolCred = Get-Credential $saAppPoolUserName
Write-Host "Creating Managed Account..."
$saAppPoolAccount = New-SPManagedAccount -Credential $appPoolCred
Write-Host "Creating Service Application Pool..."
$saAppPool = New-SPServiceApplicationPool -Name $saAppPoolName -Account $saAppPoolAccount

# Grab the Proxy Group
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName

# Create State Service Application and Proxy, add to Proxy Group
Write-Host "Creating $stateName Application and Proxy..."
$stateDB = New-SPStateServiceDatabase -Name $stateDBName
$state = New-SPStateServiceApplication -Name $stateName -Database $stateDB
$proxy = New-SPStateServiceApplicationProxy -Name "$stateName Proxy" -ServiceApplication $state
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy

# Create Usage Service Application and Proxy, add to Proxy Group, and provision it's Proxy
Write-Host "Creating $usageName Application and Proxy..."
$serviceInstance = Get-SPUsageService
New-SPUsageApplication -Name $usageName -DatabaseName $usageDBName -UsageService $serviceInstance
$proxy = Get-SPServiceApplicationProxy | ? { $_.TypeName -eq "Usage and Health Data Collection Proxy" }
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy
$proxy.Provision();

# Start the Subscription Settings Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $subsName Application and Proxy..."
Get-SPServiceInstance | where { $_.TypeName -eq "Microsoft SharePoint Foundation Subscription Settings Service" } | Start-SPServiceInstance
$subs = New-SPSubscriptionSettingsServiceApplication -ApplicationPool $saAppPool -Name $subsName -DatabaseName $subsDBName
$proxy = New-SPSubscriptionSettingsServiceApplicationProxy -ServiceApplication $subs 
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy

# Start the App Management Service Instance, create the  Service Application and Proxy, add to Proxy Group
Write-Host "Creating $appsName Application and Proxy..."
Get-SPServiceInstance | where { $_.TypeName -eq "App Management Service"} | Start-SPServiceInstance
$apps = New-SPAppManagementServiceApplication -ApplicationPool $saAppPool -Name $appsName -DatabaseName $appsDBName
$proxy = New-SPAppManagementServiceApplicationProxy -ServiceApplication $apps -Name "$appsName Proxy"
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy

# Start the Work Management Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $wmsName Application and Proxy..."
Get-SPServiceInstance | ? { $_.TypeName -eq "Work Management Service" } | Start-SPServiceInstance
$wms = New-SPWorkManagementServiceApplication -ApplicationPool $saAppPool -Name $wmsName
$proxy = New-SPWorkManagementServiceApplicationProxy -ServiceApplication $wms -Name "$wmsName Proxy"
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy

# Start the PowerPoint Automation Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $pasName Application and Proxy..."
Get-SPServiceInstance | ? { $_.TypeName -eq "PowerPoint Conversion Service" } | Start-SPServiceInstance
$pas = New-SPPowerPointConversionServiceApplication -ApplicationPool $saAppPool -Name $pasName
$proxy = New-SPPowerPointConversionServiceApplicationProxy -ServiceApplication $pas -Name "$pasName Proxy"
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy

# Adds any Workflow Service proxy to the Proxy Group (if it exists)
$wfProxy = Get-SPServiceApplicationProxy | ? {$_.TypeName -like "*Workflow Service*" }
if ($wfProxy -ne $null) {
    Write-Host "Adding Workflow Service Proxy to Proxy Group..."
    # should probably remove from the default group as well
    Add-SPServiceApplicationProxyGroupMember -Identity $proxyGroup -Member $wfProxy
}

Write-Host "Non Partitioned Service Applications done!"

Erstellung und Konfiguration partitionierter Dienstanwendungen

In den folgenden Abschnitten werden die erforderlichen Microsoft PowerShell-Verfahren beschrieben, um jede Dienstanwendung zu erstellen und zu konfigurieren, die Partitionierung unterstützt. Das gleiche allgemeine Muster gilt für jede Dienstanwendung mit Ausnahme von "Suche" und "Benutzerprofile". Bezüglich der Dienstanwendungsproxys gibt es allerdings kleine Unterschiede.

Business Data Connectivity-Dienst

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie die Business Data Connectivity-Dienstanwendung im Partitionsmodus erstellen und zu einer benutzerdefinierten Dienstproxygruppe hinzufügen.

$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"

$bcsName = "Business Data Connectivity Service"
$bcsDBName = "HostingFarm_BusinessDataConnectivity"


# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName

# Start Business Data Connectivity Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $bcsName Application and Proxy..."
Get-SPServiceInstance | ? { $_.TypeName -eq "Business Data Connectivity Service" } | Start-SPServiceInstance
$bcs = New-SPBusinessDataCatalogServiceApplication -PartitionMode -Name $bcsName -ApplicationPool $saAppPool -DatabaseName $bcsDBName 
$proxy = Get-SPServiceApplicationProxy | ? { $_.Name -eq "$bcsName" }
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy

Verwalteter Metadatendienst

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie die verwaltete Metadatendienstanwendung im Partitionsmodus erstellt und zu einer benutzerdefinierten Dienstproxygruppe hinzufügen.

$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"

$mmsName = "Managed Metadata Service"
$mmsDBName = "HostingFarm_ManagedMetadata"

# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName

# Start the Managed Metadata Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $mmsName Application and Proxy..."
Get-SPServiceInstance | ? { $_.TypeName -eq "Managed Metadata Web Service" } | Start-SPServiceInstance
$mms = New-SPMetadataServiceApplication -PartitionMode -Name $mmsName -ApplicationPool $saAppPool -DatabaseName $mmsDBName
$proxy = New-SPMetadataServiceApplicationProxy -PartitionMode -Name "$mmsName Proxy" -ServiceApplication $mms
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy

Maschineller Übersetzungsdienst

Der Dienst "Maschinelle Übersetzung" unterstützt Mehrmandantenfähigkeit, indem Sie deren Dienstanwendung im Partitionsmodus erstellen. Es gibt keine mandantenspezifische Konfiguration, und der Dienst wird auf der Farmebene verwaltet. Ihre Datenbank agiert im Endeffekt als Warteschlange und muss daher partitions-/mehrmandantenfähig sein.

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie die Dienstanwendung "Maschinelle Übersetzung" im Partitionsmodus erstellen.

$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"

$mtsName = "Machine Translation Service"
$mtsDBName = "HostingFarm_MachineTranslation"

# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName


# Start Machine Translation Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $mtsName Application & proxy..."
Get-SPServiceInstance | ? { $_.TypeName -eq "Machine Translation Service" } | Start-SPServiceInstance
$mts = New-SPTranslationServiceApplication -PartitionMode -Name $mtsName -ApplicationPool $saAppPool -DatabaseName $mtsDBName
Get-SPServiceApplicationProxy | ? {$_.Name -eq $mtsName} | Remove-SPServiceApplicationProxy -Confirm:$false
$proxy = New-SPTranslationServiceApplicationProxy -PartitionMode -Name "$mtsName Proxy" -ServiceApplication $mts
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy

Dienst für einmaliges Anmelden

Nachdem der Dienst im partitionierten Modus konfiguriert wurde, verbleibt die Erstellung von Verschlüsselungschlüsseln eine Konfiguration auf Farmebene, die entweder über die Zentralverwaltung oder Windows PowerShell durchgeführt wird. Die restlichen Konfigurationselemente der Dienstanwendung für einmaliges Anmelden werden zur Mandantenverwaltung verschoben. Die Vorlage für die Website für Mandantenverwaltung enthält jedoch nicht den Link zu dieser Seite. Dieser kann mithilfe der Anpassungstechnik im Abschnitt "Erweitern der Vorlage für die Website für Mandantenverwaltung" hinzugefügt werden.

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie die Secure Store Service-Anwendung im Partitionsmodus erstellen und zu einer benutzerdefinierten Dienstproxygruppe hinzufügen.

$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"

$sssName = "Secure Store Service"
$sssDBName = "HostingFarm_SecureStore"
$sssAuditing = $false
$sssSharing = $false
$sssAuditLogMaxSize = ""

# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName


# Start Secure Store Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $sssName Application & Proxy..."
Get-SPServiceInstance | ? { $_.TypeName -eq "Secure Store Service" } | Start-SPServiceInstance
$sss = New-SPSecureStoreServiceApplication -PartitionMode -Name $sssName -ApplicationPool $saAppPool -DatabaseName $sssDBName -auditingEnabled:$sssAuditing -AuditlogMaxSize $sssAuditLogMaxSize -Sharing:$sssSharing
$proxy = New-SPSecureStoreServiceApplicationProxy -Name "$sssName Proxy" -ServiceApplication $sss
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy 

Suchdienst

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie die Suchdienstanwendung im Partitionsmodus erstellen.

Hinweis

Das Skript für diese Dienstanwendung verwendet den Parameter Partitioned anstatt des Parameters PartitionMode.

$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"

$searchServerName = "$ENV:COMPUTERNAME" 
$searchName = "Search Service"
$searchDBName = "HostingFarm_Search"

# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName

# Start Search Service Instances, create the Service Application and Proxy, add to Proxy Group, configure Topology
Write-Host "Starting Search Service Instances..."
Start-SPEnterpriseSearchServiceInstance $searchServerName
Start-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance $searchServerName
Write-Host "Creating Search Service Application and Proxy..."
$search = New-SPEnterpriseSearchServiceApplication -Partitioned -Name $searchName -ApplicationPool $saAppPool -DatabaseName $searchDBName
$proxy = New-SPEnterpriseSearchServiceApplicationProxy -Partitioned -Name "$searchName Proxy" -SearchApplication $search
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy

# Clone the default Topology (which is empty) and create a new one and then activate it
Write-Host "Configuring Search Component Topology..."
$clone = $search.ActiveTopology.Clone()
$searchServiceInstance = Get-SPEnterpriseSearchServiceInstance
New-SPEnterpriseSearchAdminComponent -SearchTopology $clone -SearchServiceInstance $searchServiceInstance
New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $clone -SearchServiceInstance $searchServiceInstance
New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $clone -SearchServiceInstance $searchServiceInstance 
New-SPEnterpriseSearchCrawlComponent -SearchTopology $clone -SearchServiceInstance $searchServiceInstance 
New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance $searchServiceInstance
New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $clone -SearchServiceInstance $searchServiceInstance
$clone.Activate()
Write-Host "Search complete!"

Word Automation Services

Die Word Automation Services-Dienstanwendung unterstützt den Partitionsmodus. Es gibt kein Cmdlet zur Erstellung eines Proxys.

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie die Word Automation Services-Dienstanwendung im Partitionsmodus erstellen.

$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"

$wasName = "Word Automation Service"
$wasDBName = "HostingFarm_WordAutomation"


# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName



# Start Word Automation Service Instance, create the Service Application and Proxy, add to Proxy Group
Write-Host "Creating $wasName Application & Proxy..."
Get-SPServiceInstance | ? { $_.TypeName -eq "Word Automation Services" } | Start-SPServiceInstance
$was = New-SPWordConversionServiceApplication -PartitionMode -Name $wasName -ApplicationPool $saAppPool -DatabaseName $wasDBName 
# we cannot change the name of this proxy as there is no New-SPWordConversionServiceApplicationProxy
$proxy = Get-SPServiceApplicationProxy | ? { $_.Name -eq $wasName }
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy 

Benutzerprofildienst

Die Erstellung des Benutzerprofildienstes mithilfe von PowerShell, wie dies beim Bereitstellen im Partitionsmodus erforderlich ist, stellt eine Herausforderung dar, wenn die Windows PowerShell nicht als das SharePoint-Farmkonto ausgeführt wird. Um dieses Problem zu umgehen, und um den Benutzerprofil-Synchronisierungsdienst erfolgreich zu starten, nutzen wir das Cmdlet Start-Process und simulieren die Ausführung des Skripts als das Farmkonto.

Zwei Skripts sind erforderlich: Das erste Skript erstellt die UPA, das zweite Skript ruft das erste Skript auf.

Das folgende Microsoft PowerShell-Skript zeigt, wie Sie die Benutzerprofil-Dienstanwendung im Partitionsmodus erstellen und zu einer benutzerdefinierten Dienstproxygruppe hinzufügen.

Hinweis

Dieses Skript sollte NICHT direkt ausgeführt werden, da es ansonsten unmöglich ist, den Benutzerprofil-Synchronisierungsdienst zu starten. Dieses Skript sollte lokal gespeichert und der Speicherort notiert werden.

<#
    partitionedUPAcreation.ps1

    External dependency to create UPA under farm account creds
    
#>
asnp Microsoft.SharePoint.PowerShell


$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"

$upaName = "User Profile Service"
$upaProfileDBName = "HostingFarm_UserProfile_Profile"
$upaSocialDBName = "HostingFarm_UserProfile_Social"
$upaSyncDBName = "HostingFarm_UserProfile_Sync"


# Grab the Proxy Group
$proxyGroup = Get-SPServiceApplicationProxyGroup -Identity $mtProxyName

# Grab the Appplication Pool for Service Application Endpoint
$saAppPool = Get-SPServiceApplicationPool $saAppPoolName

<# Creates UPA Service Application & Proxy, and User Profile Service Instance
     If omitted, -ProfileSyncDBServer, -SocialDBServer & -ProfileDBServer are the SharePoint Default DB Server
     If omitted, -SyncInstanceMachine is the local machine 
#>
Write-Host "Creating $upaName Application & Proxy..."
$upa = New-SPProfileServiceApplication -PartitionMode -Name $upaName -ApplicationPool $saAppPoolName -ProfileDBName $upaProfileDBName -SocialDBName $upaSocialDBName -ProfileSyncDBName $upaSyncDBName
$proxy = New-SPProfileServiceApplicationProxy -PartitionMode -Name "$upaName Proxy" -ServiceApplication $upa
$proxyGroup | Add-SPServiceApplicationProxyGroupMember -Member $proxy


# Check it worked
Get-SPServiceApplication | ? {$_.Name -eq $upaName} 

Das zweite Skript unten führt die erforderliche Arbeit aus, um das UPA-Erstellungsskript aufzurufen und die erforderlichen Dienstinstanzen zu starten. Der Speicherort des UPA-Erstellungsskripts sollte in der $upaScriptFile-Variablen aktualisiert werden. Zusätzlich werden einige erforderliche Berechtigungen in der UPA festgelegt.

$proxyGroupName = "Hosting Proxy Group"
$saAppPoolName = "SharePoint Web Services Default"
$upaScriptfile = "c:\partitionedUPAcreation.ps1"

$upaName = "User Profile Service"
$user = "FABRIKAM\Administrator"
$serviceUser = "FABRIKAM\spservices"


# Grab the Service Application Pool and Proxy Group
Write-Host "Getting Service Application Pool and Proxy Group..."
$saAppPool = $saAppPoolName | Get-SPServiceApplicationPool
$proxyGroup = Get-SPServiceApplicationProxyGroup $proxyGroupName


# Start User Profile Service Instance
Write-Host "Starting User Profile Service Instance..."
Get-SPServiceInstance | ? { $_.TypeName -eq "User Profile Service" } | Start-SPServiceInstance

Write-Host "Restarting SPTimerV4..."
Restart-Service SPTimerV4

# Grab the Farm Account credentials
Write-Host "Please enter the Farm Account Password:"
$farmAcct = (Get-SPFarm).DefaultServiceAccount
$cred = Get-Credential $farmAcct.Name

# Create a new process to initiate User Profile Service Application creation under UAC elevation
Write-Host "Creating new process for UPA creation..."
Start-Process $PSHOME\powershell.exe -Credential $cred -ArgumentList "-Command Start-Process $PSHOME\powershell.exe -ArgumentList `"'$upaScriptfile'`" -Verb Runas" -Wait
Get-Date
Write-Host "UPA Created!"

# Start the User Profile Synchronization Service Instance
Write-Host "Starting the UPS Service Instance..."
Get-Date

$upa = Get-SPServiceApplication | where-object {$_.Name -eq $upaName}
$upsInstanceName = "User Profile Synchronization Service"


[String]$password = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($cred.Password)); 
Get-SPServiceInstance | where-object {$_.TypeName -eq $upsInstanceName} | % {
    $_.Status = [Microsoft.SharePoint.Administration.SPObjectStatus]::Provisioning
    $_.IsProvisioned = $false
    $_.UserProfileApplicationGuid = $upa.Id
    $_.Update()
    $upa.SetSynchronizationMachine($_.Server.Address, $_.Id, $cred.UserName, $password) # this can cause update conflicts
    Start-SPServiceInstance $_
}
Write-Host "Waiting on $upsInstanceName to provision..."
Write-Host "Baseline time is 130 seconds"
[int]$time = 0
$ups = Get-SPServiceInstance | where-object {$_.TypeName -eq $upsInstanceName}
while(-not ($ups.Status -eq "Online")){
   sleep 10;
    Write-Host "Still waiting... ($time seconds elapsed)"
    $ups = Get-SPServiceInstance | where-object {$_.TypeName -eq $upsInstanceName}
    $time = $time + 10
  }
Write-Host "$upsInstanceName provisioned, it took $time seconds."
Get-Date
Write-Host "UPS Service Instance Started"


# UPA Settings and Permissions, do this after UPS SI Started and Get it again to prevent update conflicts
Write-Host "Configuring NETBios Domain Names and UPA Permissions..."
$upa = Get-SPServiceApplication | where-object {$_.Name -eq $upaName}
$upa.NetBIOSDomainNamesEnabled=1
$upa.Update()   

function Grant-ServiceAppPermission($app, $user, $perm, $admin) {
    $sec = $app | Get-SPServiceApplicationSecurity -Admin:$admin
    $claim = New-SPClaimsPrincipal -Identity $user -IdentityType WindowsSamAccountName
    $sec | Grant-SPObjectSecurity -Principal $claim -Rights $perm
    $app | Set-SPServiceApplicationSecurity -ObjectSecurity $sec -Admin:$admin
}

Grant-ServiceAppPermission $upa $user "Full Control" $false
Grant-ServiceAppPermission $upa $serviceUser "Full Control" $false

Konfiguration der Verwaltung von Informationsrechten

Die Unterstützung der Verwaltung von Informationsrechten für Mehrmandantenfähigkeit kann mithilfe der die Website für die SharePoint-Zentraladministration oder der aktualisierten Microsoft PowerShell-Cmdlets aktiviert werden.

Aktivieren der Verwaltung von Informationsrechten mithilfe der Zentraladministration

  1. Vergewissern Sie sich, dass das Benutzerkonto, mit dem dieses Verfahren ausgeführt wird, Mitglied der SharePoint-Gruppe Farmadministratoren und der Gruppe Administratoren auf dem Computer ist, auf dem die Zentraladministration ausgeführt wird.

  2. Wechseln Sie auf der Zentraladministration-Website zu Sicherheit.

  3. Wechseln Sie auf der Seite Sicherheit zu Verwaltung von Informationsrechten konfigurieren.

  4. Klicken Sie auf der Seite Verwaltung von Informationsrechten auf Diesen RMS-Server verwenden.

  5. Aktivieren Sie das Kontrollkästchen Aktivieren Sie dieses Kontrollkästchen in Konfigurationen mit mehreren Mandanten, um den Mandanten das Konfigurieren von IRM-Einstellungen auf Mandantenebene zu ermöglichen..

Aktivieren der Verwaltung von Informationsrechten mithilfe von Microsoft PowerShell

  1. Stellen Sie sicher, dass Sie über folgende Mitgliedschaften verfügen:

    • Feste Serverrolle securityadmin auf der SQL Server-Instanz.

    • Feste Datenbankrolle db_owner auf allen Datenbanken, die aktualisiert werden sollen.

    • Administratorgruppe auf dem Server, auf dem die PowerShell-Cmdlets ausgeführt werden.

    Ein Administrator kann mithilfe des Add-SPShellAdmin-Cmdlets Berechtigungen zur Verwendung von SharePoint Server 2013-Cmdlets gewähren.

    Hinweis

    Wenn Sie keine Berechtigungen besitzen, fordern Sie bei Ihrem Setupadministrator oder SQL Server-Administrator Berechtigungen an. Zusätzliche Informationen zu PowerShell-Berechtigungen finden Sie unter Add-SPShellAdmin.

  2. Starten Sie die SharePoint-Verwaltungsshell.

  3. Geben Sie an der PowerShell-Eingabeaufforderung den folgenden Befehl ein:

    Set-SPIRMSettings -IrmEnabled -UseActiveDirectoryDiscovery -SubscriptionScopeSettingsEnabled
    

Die Website für die Mandantenverwaltung bietet keine integrierten Konfigurationsoptionen für IRM. Um die Konfiguration anzuwenden, verwenden Sie das Set-SPSiteSubscriptionIRMConfig-Cmdlet, wie im folgenden Skript gezeigt:

$subscription=Get-SPSiteSubscription "https://www.contoso.com"
Set-SPSiteSubscriptionIRMConfig -identity $subscription -IrmEnabled -CertificateServerUrl "http://rms.contoso.com" 

Diese Konfiguration wird im Allgemeinen im Rahmen der Mandantenbereitstellung ausgeführt.

Mandantenbereitstellung und -verwaltung

In diesem Abschnitt werden die Prozess und Ansätze zur Bereitstellung von Mandanten und Anpassung der Mehrmandantenumgebung beschrieben.

Mandantenbereitstellung

Befolgen Sie die Schritte in der Tabelle, um einen Mandanten zu erstellen.

Aufgaben

Schritte

1. Erstellen Sie ein Websiteabonnement.

Geben Sie an der Microsoft PowerShell-Eingabeaufforderung die folgende Syntax ein:

$sub = New-SPSiteSubscription

2. Weisen Sie dem Websiteabonnement ein Feature Pack zu, und konfigurieren Sie mithilfe der Personenauswahl eine benutzerdefinierte Organisationseinheit.

Geben Sie an der Microsoft PowerShell-Eingabeaufforderung die folgende Syntax ein:

Set-SPSiteSubscriptionConfig -id $sub -FeaturePack $customerFeatures -UserAccountDirectoryPath "OU=$customerName,OU=Customers,DC=contoso,DC=com"

3. Erstellen Sie eine oder mehrere Websitesammlungen, die dem Websiteabonnement zugeordnet werden.

Geben Sie an der Microsoft PowerShell-Eingabeaufforderung die folgende Syntax ein:

Write-Host "Creating Member Site..." 
New-SPSite -url "http://$customerName.contoso.com" -SiteSubscription $sub -HostHeaderWebApplication $webApp -owneralias $customerTenantAdmin -owneremail $customerTenantAdminEmail -template sts#0 -ContentDatabase $contentDBName
# create Tenant Admin site  
Write-Host "Creating Tenant Admin site..." 
New-SPSite -url "http://$customerName.contoso.com/admin" -SiteSubscription $sub -HostHeaderWebApplication $webApp -owneralias $customerTenantAdmin -owneremail $customerTenantAdminEmail -template tenantadmin#0 -AdministrationSiteType TenantAdministration -ContentDatabase $contentDBName
Write-Host "Creating My Site Host..." 
    New-SPSite -url "http://$customerName.contoso.com/mysites" -SiteSubscription $sub -HostHeaderWebApplication $webApp -owneralias $customerTenantAdmin -owneremail $customerTenantAdminEmail -template SPSMSITEHOST#0 -ContentDatabase $contentDBName

Das folgende PowerShell-Skript zeigt, wie Sie eine Website für die Mandantenverwaltung erstellen, welche die TENANTADMIN#0-Vorlage verwendet. Wenn der Mandant für die Verwendung eines Enterprise Feature Pack konfiguriert ist, führt das Microsoft PowerShell-Skript zusätzliche Vorgänge aus, d. h. es erstellt die Meine Websites-Sammlung.

Add-PSSnapin Microsoft.SharePoint.Powershell -EA 0  
 
# farm details (update to reflect your environment) 
$hostingMainURL = "http://$ENV:COMPUTERNAME"
$upaProxyName = "Tenant User Profile Service Proxy" 
$mmsProxyName = "Tenant Managed Metadata Service" 
$contentDBName = "HostingFarm_Content_Hosting" 

$farm = Get-SPFarm
$foundationFeaturePack = $farm.Properties.Foundation_FeaturePack
#$standardFeaturePack = $farm.Properties.Standard_FeaturePack
#$enterpriseFeaturePack = $farm.Properties.Enterprise_FeaturePack

# tenant-specific information (vary by tenant)
$customerName = "Customer A" 
$customerTenantAdmin = "CONTOSO\customerA-Admin"
$customerTenantAdminEmail = "admin@customerA.com"
$customerFeatures = $enterpriseFeatures
# Note: 
# this script assumes that the Content Web App and necessary Managed Paths exist. 

# grab the web app 
$webApp = Get-SPWebApplication $hostingMainURL 
 
# create new Site Subscription 
Write-Host "Creating Site Subscription..." 
$sub = New-SPSiteSubscription 
 
# assign feature pack and set the OU to be used by the People 
Write-Host "Assigning Feature Pack and configuring People Picker..." 
Set-SPSiteSubscriptionConfig -id $sub -FeaturePack $customerFeatures -UserAccountDirectoryPath "OU=$customerName,OU=Customers,DC=contoso,DC=com" 
 
# create the \"main\" member site (we need a site at the root to use Host Headers and Managed Paths in the following cmdlets) 
Write-Host "Creating Member Site..." 
New-SPSite -url "http://$customerName.contoso.com" -SiteSubscription $sub -HostHeaderWebApplication $webApp -owneralias $customerTenantAdmin -owneremail $customerTenantAdminEmail -template sts#0 -ContentDatabase $contentDBName
 
# create Tenant Admin site  
Write-Host "Creating Tenant Admin site..." 
New-SPSite -url "http://$customerName.contoso.com/admin" -SiteSubscription $sub -HostHeaderWebApplication $webApp -owneralias $customerTenantAdmin -owneremail $customerTenantAdminEmail -template tenantadmin#0 -AdministrationSiteType TenantAdministration -ContentDatabase $contentDBName
 
# everything else needs standard 
if (!($customerFeatures -eq $foundationFeatures)) 
{ 
    Write-Host "Tenant has SharePoint Server features" 
    # create a mysite host 
    Write-Host "Creating My Site Host..." 
    New-SPSite -url "http://$customerName.contoso.com/mysites" -SiteSubscription $sub -HostHeaderWebApplication $webApp -owneralias $customerTenantAdmin -owneremail $customerTenantAdminEmail -template SPSMSITEHOST#0 -ContentDatabase $contentDBName

    # configure the MySites host, MySites path, Naming Resolution and Profile Sync OU for the Subscription 
    Write-Host "Configuring Tenant Profile Config..." 
    $upaProxy = Get-SPServiceApplicationProxy | where-object {$_.DisplayName -eq $upaProxyName} 
    Add-SPSiteSubscriptionProfileConfig -id $sub -SynchronizationOU $customerName -MySiteHostLocation "http://$customerName.contoso.com/mysites" -MySiteManagedPath "/mysites/personal" -SiteNamingConflictResolution "None" -ProfileServiceApplicationProxy $upaProxy 
 
    # create a site for the Content Type Gallery 
    Write-Host "Creating Content Type Gallery..." 
    New-SPSite -url "http://$customerName.contoso.com/cthub" -SiteSubscription $sub -HostHeaderWebApplication $webApp -owneralias $customerTenantAdmin -owneremail $customerTenantAdminEmail -template sts#0 -ContentDatabase $contentDBName
 
    # configure the Content Type Gallery for the Subscription 
    Write-Host "Configuring Tenant Content Type Gallery..." 
    $mmsProxy = Get-SPServiceApplicationProxy | where-object {$_.DisplayName -eq $mmsProxyName} 
    # ContentTypeHub feature activation may fail - if so activate manually 
    Set-SPSiteSubscriptionMetadataConfig -identity $sub -serviceProxy $mmsProxy -huburi "http://$customerName.contoso.com/cthub" -SyndicationErrorReportEnabled 
    Write-Host "Activating Content Type Hub..." 
    Enable-SPFeature -Identity ContentTypeHub -url "http://$customerName.contoso.com/cthub" 
} 
     
Write-Host "Tenant Provisioning Script Completed!"  

Dieser Ansatz kann weiter angepasst werden und weitere Mandantenkonfigurationselemente enthalten, etwa für Workflow, Apps und IRM. Normalerweise ist ein solches Skript in eine Funktion oder benutzerdefinierte Cmdlets eingebettet, sodass es für künftige Mandanten wiederholt ausgeführt werden kann.

Workflowdienst

SharePoint Server 2013 erweitert den Workflow um einen bedeutenden funktionalen Bereich: unternehmenswichtige Features wie z. B. vollständig deklaratives Erstellen, REST und Service-Bus-Messaging, flexible Skalierbarkeit und Zuverlässigkeit dank verwalteter Dienste. In SharePoint 2013 kann ein neuer Workflowdienst verwendet werden, der auf den Windows Workflow Foundation-Komponenten von .NET Framework 4.5 aufbaut. Der neue Dienst heißt Workflow-Manager und kann von seiner Konzeption her eine zentrale Rolle im Unternehmen spielen.

Die SharePoint 2013 Workflow-Plattform wird für Sie und die von Ihnen verwendeten Tools erst verfügbar gemacht, nachdem Sie den neuen Workflow-Manager-Dienst heruntergeladen und installiert sowie für die Kommunikation mit der SharePoint Server 2013-Farm konfiguriert haben. Zusätzliche Informationen dazu, wie Sie den Workflow-Manager-Dienst für SharePoint 2013 installieren und konfigurieren, finden Sie unter Installieren und Konfigurieren von Workflow für SharePoint Server 2013.

Verwenden Sie zum Konfigurieren des Workflow-Dienstes das Register-SPWorkflowService-Cmdlet, um die Farm beim Workflow-Dienst-Manager im Partitionsmodus zu registrieren. Verwenden Sie dazu den SPSite-Parameter, um die URL einer bestehenden Mandantenwebsitesammlung aus Ihrer Farm zu übergeben, und den ScopeName-Parameter, um einen benannten Workflowbereich für Ihre Farm zu definieren.

Das folgende Windows PowerShell-Skript zeigt, wie Sie die SharePoint-Farm beim Workflow-Dienst-Manager im Partitionsmodus registrieren.

Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue 

# Register the Farm with the Workflow Service and create a workflow scope
# Note: any tenant site will suffice
Register-SPWorkflowService -SPSite "http://tenant.contoso.com" -WorkflowHostUri "http://WFSvr01:12291" -PartitionMode -AllowOAuthHttp -Force -ScopeName "HostingFarm"
 
Write-Host "Farm Workflow Registration Script Completed!"

Um einen bestimmten Mandanten für SharePoint-Workflow zu aktivieren, müssen Sie den Workflow-Dienstproxy konfigurieren. Rufen Sie dadurch einen Verweis auf die Stammwebsitesammlung des Mandanten ab, und registrieren Sie sie beim Workflow-Dienstproxy.

Das folgende PowerShell-Skript zeigt, wie Sie einen Mandanten für SharePoint-Workflow aktivieren.

Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue 

#Get the Workflow Service Application Proxy
$wfProxy  = Get-SPWorkflowServiceApplicationProxy

#Create a credential object
$user = New-Object System.Net.NetworkCredential ("domain\Admin", "Password")

#Get the SPSite object of the root site collection of the tenant
$site = Get-SPSite http://tenant.domain.com

#Set the Workflow address for the tenant site (reference our workflow scope)
$wfProxy.SetWorkflowServiceAddress($site,"http://WFSvr01:12291/HostingFarm")

#Register the proxy with tenant site collection
$wfProxy.Register($site,$user)

#Connect the tenant site collection to the proxy
$wfProxy.Connect($site)  

Write-Host "Tenant Workflow Registration Script Completed!" 

Nachdem der Mandant für die Verwendung des Workflow-Dienst-Managers konfiguriert wurde, können Sie SharePoint Designer verwenden, um mithilfe der SharePoint 2013-Workflowoption Workflows zu erstellen (wie im folgenden Diagramm dargestellt).

Dieses Diagramm zeigt die SharePoint 2013 -Workflowoption in SharePoint Designer

Erweitern der Vorlage für die Mandantenverwaltungswebsite

Verwenden Sie das benutzerdefinierte Aktionsdefinitionsschema, um Links auf der Hauptseite der Website für die Mandantenverwaltung hinzuzufügen und zu entfernen.

Die folgende Featuredefinition zeigt, wie Sie eine neue Gruppe und mehrere Links hinzufügen und den Link zur Seite "Websitesammlungen verwalten" entfernen.

<Elements xmlns="https://schemas.microsoft.com/sharepoint/">
  <CustomActionGroup
       Id="TenantAdmin_HostingUserAccounts"
       Location="Microsoft.SharePoint.TenantAdministration"
       Title="User Accounts"
       Sequence="90"
       ImageUrl="_layouts/images/SiteSettings_UsersAndPermissions_48x48.png">
    <UrlAction
        Url="" />
  </CustomActionGroup>
  <CustomAction
      Id="TenantAdmin_HostingUserAccounts_AddUser"
      GroupId="TenantAdmin_HostingUserAccounts"
      Location="Microsoft.SharePoint.TenantAdministration"
      Sequence="10"
      Title="Create User">
    <UrlAction
        Url="_layouts/UserAccountsWebParts/UA_AddUsers.aspx" />
  </CustomAction>
  <CustomAction
      Id="TenantAdmin_HostingUserAccounts_ManageUsers"
      GroupId="TenantAdmin_HostingUserAccounts"
      Location="Microsoft.SharePoint.TenantAdministration"
      Sequence="30"
      Title="Manage Users">
    <UrlAction
        Url="_layouts/UserAccountsWebParts/UA_ManageUsers.aspx" />
  </CustomAction>
  <HideCustomAction
    GroupId = "TenantAdmin_Sites"
    HideActionId = "TenantAdmin_Sites_ManageSiteCollections" 
    Location="Microsoft.SharePoint.TenantAdministration" />
</Elements>

Zusätzliche Informationen zu benutzerdefinierten Aktionen wie die Standard-IDs für integrierte Links finden Sie unter Benutzerdefiniertes Aktionsdefinitionsschema.

Anpassen des Menübands

Das Server-Menüband in SharePoint Server 2013 kann mithilfe von Servermenüband-XML und ECMAScript (JavaScript, JScript) angepasst werden. Die XML-Datei definiert die Steuerelemente auf der Multifunktionsleiste. Das ECMAScript führt Aktionen auf einer Seite oder einem Objekt auf der Seite durch. Sie können ECMAScript, das im SharePoint FoundationECMAScript-Objektmodell vorhanden ist, oder integrierte ECMAScript-Funktionen verwenden. Sie können zur Seite auch eigenes ECMAScript hinzufügen und es zum Interagieren mit dem Menüband verwenden.

Wenn Sie das Servermenüband anpassen, können Sie Steuerelemente, Gruppen und Registerkarten hinzufügen, ersetzen und entfernen. Anpassungen am Menüband werden in einem Feature mithilfe von Servermenüband-XML definiert und können in einem Lösungspaket (.wsp-Datei) bereitgestellt werden. Menübandanpassungen können mithilfe der Attribute RegistrationId und RegistrationType auf einen bestimmten Listentyp begrenzt werden. Anpassungen können mithilfe des Attributs Scope in der Feature.xml-Datei auch auf eine Website oder eine bestimmte Webanwendung begrenzt werden.

Das folgende XML zeigt, wie Sie die Funktionalität der Schaltfläche Datenträgerkontingent auf der Seite Websitesammlungen verwalten ersetzen.

<Elements xmlns="https://schemas.microsoft.com/sharepoint/" >
  <CustomAction Id="Ribbon.Library.Actions.ReplacementButton"
      Location="CommandUI.Ribbon"
      Title="Replace a Ribbon Button">
    <CommandUIExtension>
      <CommandUIDefinitions>
        <CommandUIDefinition
          Location="Ribbon.SiteCollections.Manage.DiskQuota">
          <Button Id="Ribbon.SiteCollections.Manage.DiskQuota.Replacement"
            Command="ReplacementButtonCommand"
            Image32by32="/_layouts/1033/images/formatmap32x32.png?vk=4536"
                  Image32by32Left="-256"
                  Image32by32Top="-224"
            LabelText="Disk Quota"
            TemplateAlias="o1" />
        </CommandUIDefinition>
      </CommandUIDefinitions>
      <CommandUIHandlers>
        <CommandUIHandler
          Command="ReplacementButtonCommand"
          CommandAction="javascript: 
         function demoCallback(dialogResult, returnValue)  
          {  
          }  
              var options = {               
                url: 'HostingTenantAdmin/DiskQuota.aspx', 
                tite: 'Manage Disk Quota', 
                allowMaximize: true, 
                showClose: true, 
                width: 610, 
                height: 450,
            dialogReturnValueCallback: demoCallback  }; 
              SP.UI.ModalDialog.showModalDialog(options);" />
      </CommandUIHandlers>
    </CommandUIExtension>
  </CustomAction>
</Elements>

Zusätzliche Informationen dazu, wie Sie das Servermenüband anpassen, finden Sie unter Anpassen des Servermenübands.

Erweitern einer Websitesammlung mithilfe benutzerdefinierter Eigenschaften

Die Dienstanwendung "Websiteabonnement" kann sowohl verwaltungsbezogene benutzerdefinierte Eigenschaften als auch mandantenbezogene benutzerdefinierte Eigenschaften speichern. Zu den unterstützten Eigenschaftstypen zählen die folgenden Werte:

  • string

  • int

  • long

  • bool

  • Guid

  • DateTime

Sie können benutzerdefinierte Eigenschaften verwenden, um Mandantenverwaltungsfunktionen, etwa die Mandantenkontingentsverwaltung, zu erweitern.

Das folgende PowerShell-Skript zeigt, wie Sie auf benutzerdefinierte Eigenschaften zugreifen.

Add-PSSnapin microsoft.sharepoint.powershell -ea SilentlyContinue

#-----------------------------------------------------
# Load Assemblies
#-----------------------------------------------------

[void] [Reflection.Assembly]::Load("Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c")

#-----------------------------------------------------
# Functions
#-----------------------------------------------------

function GetSPSiteSubscription([string]$url)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = Get-SPSiteSubscription $url;
    
    return $sub;
}

function GetSiteSubAdminProperties([string]$url)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetAdminProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    return $props; 
}

function AddOrSetSiteSubAdminProperty([string]$url, [string]$theKey, $theValue)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetAdminProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    if ($props.ContainsKey($theKey) -eq $true)
    {
        $props.SetValue($theKey, $theValue);
    }
    else
    {
        $props.Add($theKey, $theValue);
    }
    $props.Update(); 
}

function GetSiteSubAdminProperty([string]$url, [string]$theKey)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetAdminProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    $theValue = "";
    if ($props.ContainsKey($theKey) -eq $true)
    {
        foreach ($prop in $props)
        {
            if ($prop.Key -eq $theKey) 
            {
                $theValue = $prop.Value;
                break;
            }
        }
        return $theValue;
    }
    else 
    {
        return $null;
    }
}


function RemoveSiteSubAdminProperty([string]$url, [string]$theKey)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetAdminProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    if ($props.ContainsKey($theKey) -eq $true)
    {
        $props.Remove($theKey);
        $props.Update();
    }
}

function GetSiteSubTenantProperties($url)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }

    return $props; 
}

function AddOrSetSiteSubTenantProperty([string]$url, [string]$theKey, $theValue)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    if ($props.ContainsKey($theKey) -eq $true)
    {
        $props.SetValue($theKey, $theValue);
    }
    else
    {
        $props.Add($theKey, $theValue);
    }
    $props.Update(); 
}

function GetSiteSubTenantProperty([string]$url, [string]$theKey)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    $theValue = "";
    if ($props.ContainsKey($theKey) -eq $true)
    {
        foreach ($prop in $props)
        {
            if ($prop.Key -eq $theKey) 
            {
                $theValue = $prop.Value;
                break;
            }
        }
        return $theValue;
    }
    else 
    {
        return $null;
    }
}


function RemoveSiteSubTenantProperty([string]$url, [string]$theKey)
{
    [Microsoft.SharePoint.SPSiteSubscription]$sub = GetSPSiteSubscription -url $url;
    [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager] $manager =  [Microsoft.SharePoint.SPSiteSubscriptionSettingsManager]::Local;
    if ($manager -eq $null)
    {
        throw("Bad Manager!");
    }
    [Microsoft.SharePoint.SPSiteSubscriptionPropertyCollection]$props = $manager.GetProperties($sub);
    if ($props -eq $null)
    {
        throw("Bad Props!");
    }
    if ($props.ContainsKey($theKey) -eq $true)
    {
        $props.Remove($theKey);
        $props.Update();
    }

See also

Allgemeiner Leitfaden für Hoster in SharePoint Server 2013