Architecture mutualisée SharePoint Server 2013

 

**Sapplique à :**SharePoint Server 2013, SharePoint Server 2013 Enterprise

**Dernière rubrique modifiée :**2017-09-06

Résumé : Découvrez la fonction d’architecture mutualisée et les services et composants sous-jacents liés à l’architecture mutualisée dans SharePoint Server 2013.

Cet article décrit les composants et les services liés à l’architecture mutualisée dans SharePoint Server 2013 et fournit aussi des conseils en matière d’architecture, de sécurité, d’utilisation et de gestion pour aider les fournisseurs de services à comprendre l’architecture mutualisée dans SharePoint Server 2013 pour la planification, la conception, la construction et la gestion d’une plateforme d’hébergement SharePoint Server 2013 mutualisée.

Notes

L’intégration de OneDrive Entreprise avec Yammer ne fonctionne pas pour des applications de service partitionnées ou d’architecture mutualisée pour des déploiements locaux.

Avant de commencer

SharePoint prend en charge les fonctionnalités d’accessibilité des navigateurs courants pour vous aider à administrer les déploiements et à accéder aux sites. Pour plus d’informations, voir Accessibilité pour SharePoint 2013.

Présentation de l’architecture mutualisée dans SharePoint Server 2013

Qu’est-ce que l’architecture mutualisée ?

Avant de découvrir la fonctionnalité d’architecture mutualisée dans SharePoint Server 2013, vous devez comprendre le concept général d’architecture mutualisée et ses caractéristiques connexes. Ainsi, vous pourrez prendre les décisions adéquates en matière de planification, conception, utilisation et gestion de votre plateforme d’hébergement SharePoint Server 2013 mutualisée.

L’architecture mutualisée permet de gérer et de partitionner les données de sites et d’autres logiciels ou services partagés pour accueillir plusieurs clients. Elle s’oppose à l’exécution de plusieurs instances d’un service, ou à la configuration d’un matériel distinct. Dans les technologies et les produits Microsoft, l’architecture mutualisée de services crée un environnement d’hébergement dans lequel les ressources d’une batterie de serveurs sont maximisées. Avant de découvrir les environnements d’hébergement, il est important de comprendre l’architecture des services.

Principaux composants et services d’activation de l’architecture mutualisée dans SharePoint Server 2013

Cette section décrit les principaux composants et services d’activation de l’architecture mutualisée dans SharePoint Server 2013.

Application web

Une application web SharePoint 2013 est constituée d’un site web Internet Information Services (IIS) qui agit comme une unité de gestion et de sécurité logique pour les collections de sites que vous créez. Chaque application web est représentée par un site web IIS différent qui utilise un pool d’applications unique ou partagé. Lorsque vous créez une application web, vous créez également une base de données de contenu et définissez la méthode d’authentification utilisée pour la connexion à la base de données.

Collections de sites nommées par l’hôte

Les collections de sites nommées par l’hôte vous permettent d’attribuer un nom DNS unique aux collections de sites. Par exemple, vous pouvez utiliser http://TeamA.contoso.com et http://TeamB.fabrikam.com. Vous pouvez ainsi déployer plusieurs sites ayant des noms DNS uniques dans la même application web. Les fournisseurs de services peuvent aussi mettre un environnement à l’échelle pour plusieurs clients. Si vous n’utilisez pas de collections de sites nommées par l’hôte, l’application web SharePoint contiendra plusieurs collections de sites basées sur des chemins qui partagent le même nom d’hôte (nom DNS). Par exemple, l’équipe Team A aura une collection de sites sur https://contoso.com/sites/teamA et l’équipe Team B aura une collection de sites sur https://fabrikam.com/sites/teamB.

Les collections de sites nommées par l’hôte sont fondamentalement le seul moyen de mise à l’échelle pour les environnements d’architecture mutualisée. Elles offrent une très grande flexibilité d’utilisation de l’espace de noms d’URL. Si vous utilisez des sites basés sur des chemins avec une architecture mutualisée, la limite du logiciel pour les chemins gérés sera atteinte très rapidement.

Pour de plus amples informations sur la façon de planifier les collections de sites nommées par l’hôte pour SharePoint Server 2013, reportez-vous à Architecture et déploiement d’une collection de sites nommée par l’hôte dans SharePoint Server.

Groupes de services (groupes de proxys)

Un groupe de services, également appelé groupe de proxys, est un groupe d’applications de service sélectionnées pour être utilisées par une application web.

Par défaut, toutes les applications de service sont incluses dans le groupe par défaut à moins qu’un autre groupe soit spécifié au moment de la création de l’application de service. Vous pouvez ajouter et supprimer des applications de service dans le groupe par défaut à tout moment. Lorsque vous créez une application web, vous pouvez sélectionner le groupe par défaut, ou vous pouvez créer un groupe de services personnalisé. Vous créez un groupe de services personnalisé en sélectionnant uniquement les applications de service que l’application web peut utiliser.

Les groupes personnalisés ne sont pas réutilisables dans plusieurs applications web. Chaque fois que vous sélectionnez « personnalisé » lorsque vous créez une application web, vous sélectionnez des services uniquement pour l’application web que vous créez.

Proxy de service

Lorsque vous créez une application de service, un proxy pour l’application de service est créé simultanément. Un proxy est une entité virtuelle qui connecte des applications web à des applications de service. Les proxys sont répertoriés sur la page Gérer les applications de service dans le site Web Administration centrale de SharePoint.

Les proxys sont créés automatiquement si vous utilisez Administration centrale ou l’Assistant Configuration des produits SharePoint 2016 pour créer des applications de service. Si vous utilisez Microsoft PowerShell pour créer des applications de service, les proxys ne sont pas toujours créés automatiquement et doivent être créés avec Microsoft PowerShell.

Certains proxys peuvent inclure des paramètres qui peuvent être modifiés. Par exemple, si une application web est connectée à plusieurs instances du service de métadonnées géré, vous devez indiquer les proxys qui sont connectés à l’application de service principale qui héberge la taxonomie d’entreprise. D’une manière générale, ces paramètres passent à la configuration de niveau client lors de l’utilisation de l’architecture mutualisée.

Applications de service

Une application de service est une représentation logique d’un service donné, et de sa configuration de sécurité et de gestion qui définit son comportement opérationnel. Les métadonnées gérées et les profils utilisateurs en sont des exemples. Différentes applications de service sont mises en œuvre de différentes manières et ceci aura un impact sur la conception de solutions mutualisées.

Pour déterminer la liste des applications de service disponibles dans SharePoint Server 2013 et leur disponibilité dans les éditions SharePoint avec la fonction d’architecture mutualisée, reportez-vous à la section Services et fonctionnalités dans Guide général pour hébergeurs SharePoint Server 2013

Feature Packs et gestion des licences

Un Feature Pack dans SharePoint est un moyen de regrouper un ensemble de fonctionnalités dont l’étendue correspond à un site ou au web. Une fois que les fonctionnalités de SharePoint sont regroupées, elles peuvent être associées à un abonnement de site (par exemple, le client). Toutes les collections de sites dans cet abonnement de site (client) ne peuvent utiliser que les fonctionnalités dont l’étendue correspond à un site ou au web qui font partie du Feature Pack. Cette fonctionnalité permet aux fournisseurs de services de fournir des offres de services à plusieurs niveaux sur la base de différents ensembles de fonctionnalités.

Dans SharePoint Server 2013, une nouvelle fonctionnalité a été ajoutée pour attribuer différentes licences SharePoint par utilisateur. Elle active aussi des contrôles de licences SharePoint au moment de l’exécution. Cette fonctionnalité fournit une flexibilité supplémentaire pour un fournisseur de services afin de construire différentes offres de services tout au long d’un modèle de déploiement simplifié. Dans les versions précédentes de SharePoint, les fournisseurs de services devaient construire différents modèles de déploiement SharePoint pour chaque version de SharePoint. Pour plus d’informations sur les fonctionnalités de SharePoint, reportez-vous à la section SharePoint feature availability across on-premises solutions de l’article suivant : Description du service SharePoint Online.

Gestion des droits relatifs à l’information (IRM)

L’intégration de la Gestion des droits relatifs à l’information (IRM) dans SharePoint Server 2013 ajoute la prise en charge de l’architecture mutualisée, qui permet de gérer les paramètres IRM au niveau du client.

Considérations en matière de conception d’architecture

Cette section décrit différentes considérations pour la création d’un environnement SharePoint Server 2013 d’architecture mutualisée. Comme décrit plus haut dans le présent document, l’architecture mutualisée apporte des caractéristiques uniques à prendre en compte lors de la création et de la conception de votre environnement SharePoint Server 2013. Vous devez évaluer ces facteurs en fonction de vos exigences afin de prendre les décisions appropriées.

Compréhension des limites dans SharePoint Server 2013

La compréhension des limites logicielles de SharePoint Server 2013 vous aidera à prendre les décisions correctes pour sélectionner l’architecture appropriée pour un environnement SharePoint d’architecture mutualisée. Pour de plus amples informations sur les limites clés pour une base de données de contenu et une collection de sites qui s’appliquent à un environnement d’architecture mutualisée de SharePoint Server 2013, reportez-vous à Limites des bases de données de contenu et Site collection limits.

Batterie de serveurs partagée et batterie de serveurs dédiée

L’utilisation d’une batterie de serveurs partagée pour héberger des collections de sites mutualisées sur une application web unique offre une meilleure évolutivité par rapport à l’utilisation d’une application web dédiée par client.

Utilisez une application web dédiée et un pool d’applications par client uniquement si vous devez répondre à des exigences d’isolation.

Ne déployez pas de code totalement approuvé sur des sites.

N’autorisez pas de personnalisations qui affectent des ressources partagées, telles que le fichier web.config.

Utilisez des collections de sites nommées par l’hôte pour créer plusieurs collections de sites de niveau racine (sites nommés par le domaine) dans une application web.

Une application web et plusieurs applications web

Utilisez des applications web dédiées pour des clients qui requièrent des personnalisations affectant des ressources partagées sur une application web, telles que le fichier web.config.

Lorsque vous combinez plusieurs clients dans une seule batterie de serveurs, utilisez une application web SharePoint dédiée pour tout le contenu authentifié et une application web dédiée séparée pour tout le contenu anonyme. Il faudra deux ID d’abonnement distincts pour les clients ayant les deux types de contenu. Cela permettra également de simplifier la gestion des licences.

Certaines fonctionnalités de SharePoint sont liées au niveau de l’application web, comme le paramètre de création libre-service de collection de sites. Une fois activé, tous les clients de la même application web pourront créer des collections de sites.

Conception d’un environnement unique de batterie de serveurs

Dans un environnement d’hébergement de plusieurs organisations dans lequel les données des clients et l’administration sont isolées, la configuration de services partitionnés et partagés est très importante. Cet exemple fournit une mise en œuvre pratique des services partitionnés et également des recommandations sur la façon de déployer des sites clients.

Cet exemple détaille les façons suivantes de déployer des sites clients dans une batterie de serveurs :

  • Pool d’applications dédiées et application web

  • Pool d’applications partagées et application web dédiée

  • Application web partagée

    • Sites authentifiés

    • Sites non authentifiés

Utilisez un pool d’applications dédiées par client uniquement si vous devez répondre à des exigences d’isolation. Utilisez des applications web dédiées pour les clients qui nécessitent des personnalisations affectant des ressources qui sont partagées dans une application web, telles que le fichier web.config.

Lorsque vous combinez plusieurs clients dans une seule application web, utilisez une application web dédiée pour tout le contenu authentifié et une application web dédiée séparée pour tout le contenu anonyme. Cette opération exigera deux ID d’abonnement distincts pour les clients ayant les deux types de contenu. Cela simplifiera également la gestion des licences.

Ne déployez pas de code totalement approuvé sur des sites.

N’autorisez pas de personnalisations qui affectent des ressources partagées, telles que le fichier web.config.

Dans l’exemple suivant (sites authentifiés), une collection de sites nommée par l’hôte différente est utilisée pour chaque société. La Société C comprend deux collections de sites nommées par l’hôte différentes. Sous chaque collection de sites nommée par l’hôte de haut niveau, un chemin géré est utilisé pour créer un second niveau de collections de sites de haut niveau pour des sites tels que les sites d’équipe, Mes sites, le contenu intranet publié, ou les sites des divisions distincts.

Conception d’un environnement à plusieurs niveaux

Comme décrit précédemment, il y a de nombreux points à prendre en compte lorsque vous planifiez votre plateforme d’hébergement SharePoint Server 2013 mutualisée. Parmi ces facteurs figurent le coût, la gestion simplifiée, l’isolation des ressources, les performances et l’évolutivité.

Au fur et à mesure que votre clientèle se développe, il sera peut-être plus difficile pour vous de répondre aux exigences de tous vos clients dans un environnement unique. À ce stade, certains compromis devront être faits lorsque vous chercherez à équilibrer ces facteurs.

Dans un cas comme celui-ci, une alternative serait la conception d’un environnement à plusieurs niveaux dans lequel de multiples environnements SharePoint répondent aux divers besoins de vos clients. Chaque environnement se concentrera sur différents aspects de vos offres de services, tels que le faible coût, la haute densité, l’isolation des ressources plus élevée et une meilleure qualité de services (QoS) avec des coûts plus élevés, etc.

Cette approche de conception à plusieurs niveaux pourrait fournir différents contrats de niveau de service à vos clients. Ainsi, vous pourriez servir un large éventail de clients, simplifier votre gestion et vos opérations, réduire vos coûts de gestion, et augmenter vos marges de profit.

Considérations en matière de sécurité

Cette section décrit différentes considérations en matière de sécurité pour la planification et la conception d’une plateforme d’hébergement SharePoint Server 2013 mutualisée. À partir de maintenant, toute section, telle que la section Unité d’organisation, qui traite de la configuration du Sélecteur des personnes, fonctionne uniquement sans personnalisation supplémentaire avec l’authentification Windows.

SharePoint Server 2013 prend en charge plusieurs méthodes et fournisseurs d’authentification pour les types d’authentification suivants :

  • Authentification Windows

  • Authentification basée sur les formulaires

  • Authentification basée sur les jetons SAML

Le type d’authentification Windows bénéficie de votre fournisseur d’authentification Windows actuel et des protocoles d’authentification utilisés par un environnement de domaine Windows pour valider les informations d’identification des clients qui se connectent. Les méthodes d’authentification Windows, qui sont utilisées par l’authentification basée sur les revendications et par le mode classique, incluent les éléments suivants :

  • NTLM

  • Kerberos

  • Digest

  • Basic

L’authentification basée sur les formulaires est un système de gestion d’identité basée sur les formulaires qui repose sur l’authentification par fournisseur de rôles et d’appartenance ASP.NET. L’authentification basée sur les formulaires peut être utilisée sur des informations d’identification stockées chez un fournisseur d’authentification, par exemple :

  • Services de domaine Active Directory (AD DS) ;

  • Une base de données telle que SQL Server ;

  • Un magasin de données LDAP (Lightweight Directory Access Protocol) tel que Novell eDirectory, NDS (Novell Directory Services) ou Sun ONE.

L’authentification basée sur les formulaires valide les utilisateurs en fonction des informations d’identification qu’ils ont entrées dans un formulaire d’ouverture de session (généralement, une page web). Les demandes non authentifiées sont redirigées vers une page de connexion dans laquelle l’utilisateur doit fournir des informations d’identification valides et envoyer le formulaire. Le système émet un cookie pour les demandes authentifiées qui contient une clé permettant de rétablir l’identité pour les demandes suivantes.

Pour utiliser l’authentification basée sur les formulaires afin d’authentifier les utilisateurs dans un système de gestion d’identité qui n’est pas basé sur Windows ou qui est externe, vous devez enregistrer le fournisseur d’appartenances et le gestionnaire de rôles dans plusieurs fichiers web.config. SharePoint Server 2013 utilise l’interface du gestionnaire de rôles ASP.NET standard pour collecter des informations de groupe sur l’utilisateur actuel. Chaque rôle ASP.NET est traité comme un groupe de domaines par le processus d’autorisation dans SharePoint Server 2013. Pour enregistrer un gestionnaire de rôles dans le fichier web.config, procédez exactement comme pour enregistrer un fournisseur d’appartenances pour l’authentification.

Si vous souhaitez gérer les utilisateurs d’appartenances ou les rôles à partir du site web Administration centrale, vous devez inscrire le fournisseur d’appartenances et le gestionnaire de rôles dans le fichier Web.config du site web Administration centrale. Vous devez également inscrire le fournisseur d’appartenances et le gestionnaire de rôles dans le fichier Web.config de l’application web qui héberge le contenu.

L’authentification basée sur les jetons SAML dans SharePoint Server 2013 utilise le protocole SAML 1.1 et la norme WS-F PRP (WS-Federation Passive Requestor Profile). Elle nécessite une coordination avec les administrateurs d’un environnement basé sur les revendications, qu’il s’agisse de votre propre environnement interne ou d’un environnement partenaire. Si vous utilisez Active Directory Federation Services (ADFS) 2.0, vous disposez d’un environnement d’authentification basée sur les jetons SAML.

Pour les applications web qui utilisent l’authentification basée sur les revendications, le Sélecteur de personnes est un contrôle disponible dans SharePoint Server 2013. Le contrôle Sélecteur de personnes utilise des fournisseurs de revendications pour répertorier, résoudre, rechercher et déterminer l’affichage « convivial » des utilisateurs, des groupes et des revendications. Pour plus d’informations sur la configuration du Sélecteur de personnes, reportez-vous à Vue d’ensemble du sélecteur de personnes et des fournisseurs de revendications.

Les zones représentent différents itinéraires logiques permettant d’accéder aux mêmes sites dans une application web. Chaque application web peut inclure jusqu’à cinq zones. Lors de la création d’une application web, Administration centrale crée la zone par défaut. Pour créer des zones supplémentaires, étendez l’application web et sélectionnez l’un des noms de zones restants : Intranet, Extranet, Internet ou Personnalisé.

Unités d’organisation

Les unités d’organisation organisent les objets utilisateurs et ordinateurs dans l’environnement Active Directory. À des fins d’hébergement, la structure de l’unité d’organisation pourrait être organisée comme sur le diagramme ci-dessous.

This diagram shows the Organization unit structure for a hosting environment

Au minimum, vous souhaiterez lier une stratégie de groupe à la racine de domaine, à l’unité d’organisation des contrôleurs de domaine, à l’unité d’organisation des serveurs SharePoint et à l’unité d’organisation des clients.

Racine de domaine

La sécurité qui s’appliquera à l’ensemble du domaine est appliquée dans la stratégie de domaine. Ces paramètres sont contenus dans les objets de stratégie de groupe qui s’appliquent à l’ensemble du domaine.

Unité d’organisation des contrôleurs de domaine

Les contrôleurs de domaine contiennent les données les plus sensibles de votre organisation, les données qui contrôlent la configuration de sécurité elle-même. Les objets de stratégie de groupe appliqués à ce niveau sont utilisés pour configurer et protéger les contrôleurs de domaine dans le domaine.

Unité d’organisation des serveurs SharePoint

Les serveurs SharePoint ont un rôle unique ne figurant pas dans d’autres serveurs du répertoire. Le fait de mettre ces serveurs dans leur propre unité d’organisation permet de leur appliquer des stratégies uniques. Ils peuvent également être séparés des autres serveurs dans le répertoire. Des sous-unités d’organisation peuvent être créées lorsque différents objets de stratégie de groupe doivent être créés (serveurs de contenu d’accès anonyme par rapport à serveurs de contenu authentifié, par exemple).

Unité d’organisation des clients

Cette unité d’organisation de niveau supérieur permet à tous les comptes d’utilisateur d’être séparés du reste du répertoire. Le niveau suivant d’unités d’organisation contient les unités d’organisation du client. Il existe une unité d’organisation pour chaque client. Ceci permet à tous les comptes d’utilisateur et comptes d’ordinateur d’un client d’être séparés de ceux d’autres clients. En outre, il s’agit de la structure d’unité d’organisation requise pour prendre en charge la synchronisation du profil utilisateur dans les déploiements mutualisés.

Pour donner aux utilisateurs l’impression qu’ils se connectent à leur propre domaine personnalisé, utilisez l’Active Directory Service Interfaces Editor (ADSI Edit) ou un autre outil AD pour modifier l’attribut uPNSuffixes de chaque unité d’organisation client comme illustré dans le diagramme suivant.

This diagram shows the ADSI Property Editor Dialog for the uPNSuffixes attribute

Une fois l’attribut uPNSuffixes d’une unité d’organisation client configuré, sa valeur pourra être associée à un compte d’utilisateur dans cette unité d’organisation, comme le montre le diagramme ci-dessous.

This diagram shows the new object dialog which lets you create a new user

Authentification d’utilisateur

L’authentification d’utilisateur est la validation de l’identité de l’utilisateur auprès d’un fournisseur d’authentification, c’est-à-dire un répertoire ou une base de données qui contient les informations d’identification de l’utilisateur et permet de confirmer qu’elles ont été entrées correctement. Les services de domaine Active Directory (AD DS), par exemple, est un fournisseur d’authentification. D’autres termes courants sont employés pour désigner un fournisseur d’authentification, comme annuaire d’utilisateurs et magasin d’attributs.

Une méthode d’authentification est un échange spécifique d’informations d’identification des comptes et d’autres informations qui prouvent l’identité d’un utilisateur. Le résultat de la méthode d’authentification permet de prouver, généralement sous la forme d’un jeton contenant des revendications, qu’un fournisseur d’authentification a authentifié un utilisateur.

Un type d’authentification est une méthode spécifique de validation des informations d’identification auprès d’un ou de plusieurs fournisseurs d’authentification, parfois selon un protocole standard de l’industrie. Un type d’authentification peut utiliser plusieurs méthodes d’authentification.

Une fois l’identité d’un utilisateur validée, le processus d’autorisation détermine à quels sites, contenus et autres fonctionnalités l’utilisateur peut accéder.

La planification des méthodes et des types d’authentification des utilisateurs doit déterminer les éléments suivants :

  • Les types et méthodes d’authentification des utilisateurs pour chaque zone et application web.

  • L’infrastructure d’authentification nécessaire pour prendre en charge les types et méthodes d’authentifications déterminés.

  • Le mode de migration de vos applications et zones web actives qui utilisent l’authentification en mode classique pour utiliser l’authentification basée sur les revendications.

Services AD FS (Active Directory Federation Services)

SharePoint Server 2013 prend en charge l’authentification basée sur les revendications. Active Directory Federation Services (AD FS) peut être configuré pour agir en tant qu’IP-STS pour une application web SharePoint Server 2013. Dans cette configuration, AD FS émet des jetons de sécurité SAML constitués de revendications afin que les ordinateurs clients puissent accéder aux applications web qui utilisent l’authentification basée sur les revendications. Vous pouvez utiliser un autre fournisseur d’identité qu’AD FS mais il doit prendre en charge la norme WS-Federation. De plus, un code personnalisé est requis lorsque vous utilisez la configuration AD FS.

Pour plus d’informations sur la façon de configurer l’authentification des revendications basée sur SAML avec AD FS pour SharePoint Server 2013, reportez-vous à Configurer l’authentification basée sur les revendications SAML avec les services ADFS dans SharePoint 2013.

Considérations en matière de gestion et d’utilisation

Cette section traite des différentes considérations en matière de gestion et d’utilisation pour un environnement SharePoint Server 2013 mutualisé.

Gestion de la capacité

La gestion de la capacité est un processus continu, car aucune implémentation ne reste statique sur le contenu et l’utilisation. Vous devez planifier la croissance et le changement afin que votre environnement SharePoint Server 2013 puisse continuer à offrir une solution métier efficace. Pour plus d’informations sur la gestion de la capacité dans SharePoint Server 2013, voir Vue d’ensemble de la gestion et du dimensionnement de la capacité pour SharePoint Server 2013.

Gestion des applications

Les apps pour SharePoint fournissent une nouvelle méthode de mise à disposition d’informations ou de fonctionnalités spécifiques sur un site SharePoint. Une application pour SharePoint est une petite application autonome, facile à utiliser, qui répond à un besoin spécifique de l’entreprise ou de l’utilisateur final. Les propriétaires de site peuvent découvrir et télécharger les apps pour SharePoint à partir d’un Banque SharePoint public ou du Catalogue d’applications interne à leur organisation et les installer sur leurs sites SharePoint. Ces apps pour SharePoint intègrent le meilleur du web à SharePoint Server 2013. Elles ne remplacent pas les fonctionnalités et packages de solution SharePoint qui personnalisent ou améliorent les sites SharePoint. Contrairement aux fonctionnalités et aux solutions, que les administrateurs de batterie de serveurs ou les administrateurs de collections de sites doivent installer, les apps pour SharePoint sont des applications autonomes que les propriétaires de site peuvent ajouter à leurs sites SharePoint. Les apps pour SharePoint ont un cycle de vie simple ; elles peuvent être installées, mises à niveau et désinstallées par les propriétaires de site.

Le service de gestion des applications dans SharePoint Server 2013 est sensible à l’architecture mutualisée. La majeure partie de la fonctionnalité de gestion et de configuration des applications est exposée sur le site d’administration des clients et permet à chaque administrateur client de configurer ses paramètres individuels.

Sauvegarde et restauration

Lors de l’exécution d’opérations de sauvegarde et de restauration sur une plateforme d’hébergement SharePoint Server 2013 mutualisée, vous pouvez suivre les recommandations générales de sauvegarde et de restauration sur des environnements SharePoint Server 2013, reportez-vous à Sauvegarder et restaurer dans SharePoint Server.

Notez que dans SharePoint Server 2013, la plateforme Workflow est distincte de la plateforme SharePoint. Par conséquent, les opérations de sauvegarde et de restauration sur le Gestionnaire de workflow doivent être coordonnées avec les opérations de sauvegarde et de restauration SharePoint afin de s’assurer qu’elles demeurent synchronisées les unes avec les autres. Pour obtenir des recommandations supplémentaires sur la façon de planifier les opérations de sauvegarde et de restauration pour Workflow Service Manager, voir Récupération d’urgence et restauration d’étendue dans Workflow Manager 1.0.

Lorsque vous effectuez des opérations de sauvegarde et de restauration propres à un client sur une plateforme d’hébergement SharePoint Server 2013 mutualisée, il se peut que vous deviez conserver les composants synchronisés entre eux et sensibles au client suivants : applications de service, flux de travail, bases de données de contenu et collections de sites.

Applications de service

Les applications de service qui sont configurées en mode de partition contiennent une ou plusieurs bases de données associées constituées de données propres à un client. Vous pouvez effectuer des opérations de sauvegarde et de restauration générales sur ces applications de service tant au niveau de la base de données qu’au niveau de l’application, mais il existe des commandes limitées pour effectuer des opérations de sauvegarde et de restauration détaillées propres à un client sur ces applications de service ou leurs bases de données.

Considérations en matière d’applications de service

Service de gestion des applications

Le service de gestion des applications est l’application de service utilisée pour la gestion de la fonction application pour SharePoint introduite dans SharePoint Server 2013. Les apps pour SharePoint fournissent une nouvelle méthode de mise à disposition d’informations ou de fonctionnalités spécifiques pour un site SharePoint. Une application pour SharePoint est une petite application autonome facile à utiliser qui permet de répondre au besoin spécifique d’un utilisateur final ou d’une entreprise. Le service de gestion des applications ne prend pas en charge le mode de partition, mais il est nativement sensible à l’abonnement de site. Dans l’environnement SharePoint mutualisé, la majeure partie de la fonctionnalité de gestion des applications (c’est-à-dire Gérer Catalogue d’applications, Gérer les licences d’application, Autorisations d’application, etc.) est obtenue à l’aide du site d’administration des clients.

Le diagramme suivant illustre la gestion des applications sur le site d’administration des clients.

The diagram shows the Tenant Administration Site for App Management

Service Business Data Connectivity

Une fois configuré en mode de partition, toute la configuration du service Business Data Connectivity passe à l’administration des clients. Toutefois, le modèle de site d’administration des clients ne comprend pas le lien vers cette page, qui peut être ajouté en utilisant la technique de personnalisation dans la section Extension du modèle de site d’administration des clients.

Service Banque d’informations sécurisé

Une fois configuré en mode de partition, la génération de clés de chiffrement reste une configuration de niveau batterie de serveurs effectuée soit au moyen de l’administration centrale soit de Windows PowerShell. Le reste de la configuration du service Banque d’informations sécurisé passe à l’administration des clients. Toutefois, le modèle de site d’administration des clients ne comprend pas le lien vers cette page, qui peut être ajouté en utilisant la technique de personnalisation dans la section Extension du modèle de site d’administration des clients.

Service de métadonnées gérées

Une fois configuré en mode de partition, toute la configuration passe à l’administration des clients, et la publication du type de contenu est activée par défaut.

Service de recherche

De nombreuses fonctions liées à la configuration de recherche propre à un client sont décrites dans le site d’administration des clients comme indiqué dans le diagramme suivant.

This diagram shows the Search Administration features located on the Tenant Administration site

Notes

Un grand nombre d’applets de commande *. EnterpriseSearch * Microsoft PowerShell sont maintenant sensibles à la partition et peuvent être utilisées pour automatiser certaines fonctions de configuration et de gestion exposées dans le site d’administration des clients.

Service de profil utilisateur

Un grand nombre d’éléments de configuration passent à l’administration des clients mais une grande partie de la configuration de la synchronisation du profil demeure au niveau de la batterie de serveurs et est applicable à tous les clients, comme illustré dans la figure suivante.

This figure illustrates the User Profile configuration

Flux de travail

Comme indiqué précédemment, la plateforme Workfow est séparée de la plateforme SharePoint dans SharePoint Server 2013. La plateforme Workflow elle-même utilise une ou plusieurs bases de données. Vous pouvez effectuer des opérations de sauvegarde et de restauration générales au niveau de la base de données, mais il n’existe aucune commande ni aucun utilitaire permettant d’effectuer des opérations de sauvegarde et restauration propres au client sur ces bases de données de flux de travail.

Bases de données de contenu

Si un client a l’usage exclusif d’une ou plusieurs bases de données de contenu dédiées, vous pouvez effectuer des opérations de sauvegarde et de restauration générales au niveau de la base de données sur ces bases de données.

Notes

Il est impossible d’avoir un usage exclusif d’une ou plusieurs bases de données de contenu dédiées en utilisant les fonctionnalités de produit standard comme, par exemple, la création de sites libre-service. Ceci est un exemple de cas où la personnalisation est nécessaire afin de répondre à une offre de niveau de service particulière.

Le script Microsoft PowerShell suivant indique comment effectuer une action de sauvegarde initiale sur une base de données de contenu de client.

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!"

Collections de sites

Vous pouvez effectuer des opérations de sauvegarde et de restauration spécifiques sur une collection de sites de client. L’outil que vous choisissez d’utiliser dépend de la taille de la collection de sites elle-même. Les applets de commande Microsoft PowerShell sont un choix approprié pour les collections de sites de petites et moyennes entreprises.

Le script Microsoft PowerShell suivant indique comment effectuer une action de sauvegarde sur une collection de sites de client.

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!"

Surveillance

Il existe de nombreux outils qui vous permettent de surveiller SharePoint Server 2013 et de résoudre les problèmes. Différents outils couvrent différents aspects de l’environnement, mais il peut y avoir un chevauchement des zones. Examinez les outils qui peuvent maximiser vos résultats de surveillance. Pour des recommandations supplémentaires sur la façon de planifier une surveillance pour SharePoint Server 2013, reportez-vous à Plan de surveillance de SharePoint Server.

Gestion du Feature Pack

Comme décrit précédemment, un Feature Pack peut être utilisé pour regrouper différentes fonctionnalités et les associer à un abonnement de site (donc client). Toutes les collections de sites dans l’abonnement de site (client) ne peuvent utiliser que les fonctions étendues aux sites ou au web qui font partie du Feature Pack. Ceci permet aux fournisseurs de services de fournir des offres de services à plusieurs niveaux sur la base de différents ensembles de fonctionnalités. Les Feature Packs sont créés pour utiliser l’applet de commande New-SPSiteSubscriptionFeaturePack pour créer le conteneur Feature Pack et l’applet de commande Add-SPSiteSubscriptionFeaturePackMember afin d’ajouter les fonctionnalités individuelles au conteneur.

Le script Microsoft PowerShell suivant indique comment créer un Feature Pack au niveau du client représentant les fonctions de SharePoint Foundation 2013, et enregistre l’ID du Feature Pack dans le conteneur des propriétés de la batterie de serveurs.

Notes

L’application de service Paramètres d’abonnement doit être présente avant l’exécution de scripts qui fonctionnent avec des Feature Packs.

<#
   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

Gestion des licences

Dans SharePoint Server 2013, une nouvelle fonctionnalité de gestion des licences a été ajoutée. Les administrateurs de batterie de serveurs peuvent désormais attribuer des licences aux utilisateurs et activer des contrôles de licence d’exécution. Grâce à cette nouvelle fonctionnalité, vous pouvez vous assurer que seuls les utilisateurs qui ont la licence appropriée peuvent utiliser une fonction spécifique. La fonctionnalité simplifie également le modèle de déploiement car vous n’avez plus à construire des batteries de serveurs distinctes pour les éditions Standard et Enterprise de SharePoint Server.

Les licences utilisateur sont attribuées en mappant des revendications à un type de licence connu. Par exemple, une revendication peut être un groupe de sécurité Services de domaine Active Directory (AD DS). En mappant le groupe de sécurité ContosoFinanceDept à une licence d’entreprise, vous attribuez effectivement une licence d’entreprise à tous les membres de ce groupe. Des revendications sont attribuées aux utilisateurs qui se connectent à SharePoint Server. SharePoint Server examine les revendications des utilisateurs afin de déterminer leur licence, et si un utilisateur ne dispose pas d’une licence pour utiliser une fonction particulière, SharePoint bloque l’accès à cette fonction au moment de l’exécution.

Cette mise en œuvre de SharePoint Server 2013 est gérée par l’utilisation de nouvelles applets de commande Microsoft PowerShell. Par défaut, la gestion de licences est désactivée dans SharePoint Server. Toutefois, les administrateurs peuvent l’activer à l’aide de Microsoft PowerShell. Pour plus d’informations sur la façon de configurer la gestion de licences dans SharePoint Server 2013, reportez-vous à Configurer la gestion des licences dans SharePoint Server 2013.

Gestion du cycle de vie

Ce livre blanc décrit les considérations clés en matière d’infrastructure lors de la conception d’une solution SharePoint 2013 mutualisée et fournit des scripts de base pour la configuration mais la gestion globale du cycle de vie des opérations est impératif. Par exemple, l’administration des clients personnalisée, la suppression de privilèges d’accès des abonnements, l’archivage, la gestion des utilisateurs, la réinitialisation des mots de passe libre-service et les quotas sont tous des domaines courants qui exigent une combinaison de Windows PowerShell et d’efforts de personnalisation supplémentaires pour proposer une offre de service complète. Chaque fournisseur de services aura des exigences différentes dans ce domaine et il est extrêmement important de veiller à ce que ces exigences fassent partie de l’étude initiale et du travail de conception pour la plateforme d’infrastructure.

Installation et configuration

Cette section décrit les étapes générales d’installation et de configuration d’une plateforme d’hébergement SharePoint Server 2013 mutualisée.

Remerciements

Cette section fournit des détails et contient des scripts PowerShell qui démontrent la création et la configuration de différents composants. Ces scripts sont généralement fournis pour démontrer les exigences de configuration pour l’architecture mutualisée et ne représentent donc pas l’ordre d’approvisionnement optimal, mais ils peuvent servir de base pour développer votre propre solution de script personnalisée de bout en bout.

Les scripts Microsoft PowerShell contenus dans les sous-sections suivantes sont basés (totalement ou en partie) sur les travaux de Spencer Harbar (http://www.harbar.net) et sont reproduits ici avec son consentement gracieux. Reportez-vous aux documents suivants pour son travail original.

Les scripts PowerShell fournis incluent des variables qui doivent être modifiées pour les adapter à votre environnement.

Exemple de déploiement

Cette section présente un exemple de déploiement qui se sert d’une application web d’hébergement unique utilisant des collections de sites nommées par l’hôte et des chemins gérés par des en-têtes d’hôte. Il est déployé sur un serveur unique pour des raisons de simplicité. Il s’agit du modèle de conception prévu pour l’architecture mutualisée avec SharePoint 2013 et il peut être étendu à un déploiement où les rôles d’instance de service sont articulés sur plusieurs ordinateurs. L’exemple de déploiement utilise le protocole HTTP pour l’application web. Dans un déploiement réel, SSL doit être utilisé pour protéger la connexion, le contenu et les jetons d’autorisation utilisés avec les applications SharePoint et d’autres services OAuth2 connexes tels que le Gestionnaire de workflow.

Configuration du DNS

Étant donné que les collections de sites nommées par l’hôte seront utilisées pour un environnement SharePoint mutualisé, vous devez configurer votre DNS (c’est-à-dire créer des enregistrements DNS appropriés, etc.) en conséquence en fonction de votre plan. Pour des recommandations supplémentaires sur la façon de planifier des collections de sites nommées par l’hôte pour SharePoint Server 2013, reportez-vous à Architecture et déploiement d’une collection de sites nommée par l’hôte dans SharePoint Server.

Si vous prévoyez également de prendre en charge apps pour SharePoint, vous devez également configurer DNS pour prendre en charge votre environnement. Pour plus d’informations sur la façon de configurer un environnement d’applications pour SharePoint Server 2013, reportez-vous à Configurer un environnement pour les applications de SharePoint Server.

Configuration d’Active Directory

Comme décrit plus haut, pour prendre en charge l’architecture mutualisée dans SharePoint, Active Directory doit être structuré correctement en créant une structure d’unité d’organisation hiérarchique prenant en charge la synchronisation de profil utilisateur pour chaque abonnement. Vous devez également créer des comptes de service appropriés pour votre environnement. Pour plus d’informations sur la façon de planifier des comptes de service pour SharePoint Server 2013, reportez-vous à Planifier des comptes d’administration et de service dans SharePoint Server. Dans cet exemple de déploiement, les trois comptes de service suivants sont utilisés :

  • SPFarm – le compte de la batterie de serveurs SharePoint

  • SPServices – l’identité du pool d’applications qui héberge les points de terminaison de l’application de service

  • SPContent – l’identité du pool d’applications qui héberge l’application web de contenu

Configuration et création d’une batterie de serveurs SharePoint

Le script Microsoft PowerShell suivant indique comment créer une batterie de serveurs SharePoint.

<#
    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!" 

Groupe de proxys, application web d’hébergement et chemins gérés

Initialement, un compte géré est créé pour le pool d’applications qui héberge l’application web de contenu. Un groupe de proxys est créé, suivi de l’application web. Pour finir, la configuration de l’application web permettant la création de sites libre-service et la création des chemins gérés partagés est effectuée. Il est très important de créer une collection de sites « racine » dans l’application web d’hébergement même si les utilisateurs finals n’auront pas accès à cette collection de sites. Ceci est nécessaire pour la prise en charge et le comportement opérationnel correct de SharePoint 2013.

Notes

Cet exemple utilise le protocole HTTP pour l’application web.

<#
    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!"

Services non partitionnés

À ce stade, les applications de service non partitionnés peuvent être créées. Ces applications de service sont requises dans la batterie de serveurs pour des opérations normales (le service d’état, par exemple) ou n’ont pas besoin d’être partitionnées pour prendre en charge l’architecture mutualisée car elles ne contiennent aucune donnée. Pour ce faire, un autre compte géré est requis, puis chaque application de service est créée l’une après l’autre.

Le script Microsoft PowerShell suivant indique comment créer des applications de service non partitionnés.

<#
    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!"

Configuration et création d’applications de service partitionnés

Les sections suivantes décrivent les procédures Microsoft PowerShell nécessaires pour créer et configurer chaque application de service qui prend en charge le partitionnement. Le même schéma général s’applique à chaque application de service à l’exception des profils de recherche et utilisateur. Cependant, il existe de petites différences liées aux proxys d’applications de service.

Service Business Data Connectivity

Le script Microsoft PowerShell suivant indique comment créer l’application de service Business Data Connectivity en mode de partition et l’ajouter à un groupe de proxys de service personnalisé.

$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

Service de métadonnées gérées

Le script Microsoft PowerShell suivant indique comment créer l’application de service de métadonnées gérées en mode de partition et l’ajouter à un groupe de proxys de service personnalisé.

$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

Service de traduction automatique

Le service de traduction automatique prend en charge l’architecture mutualisée en créant son application de service en mode de partition. Il n’y a aucune configuration propre aux clients et le service est géré au niveau de la batterie de serveurs. Sa base de données agit efficacement comme file d’attente et doit par conséquent être sensible à la partition/aux clients.

Le script Microsoft PowerShell suivant indique comment créer l’application de service de traduction automatique en mode de partition.

$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

Service Banque d’informations sécurisé

Une fois configuré en mode de partition, la génération de clés de chiffrement reste une configuration de niveau de batterie de serveurs effectué soit au moyen de l’administration centrale soit du Windows PowerShell. Le reste de la configuration du service Banque d’informations sécurisé passe à l’administration des clients. Toutefois, le modèle de site d’administration des clients ne comprend pas le lien vers cette page, qui peut être ajouté en utilisant la technique de personnalisation dans la section Extension du modèle de site d’administration des clients.

Le script Microsoft PowerShell suivant indique comment créer l’application Service Banque d’informations sécurisé en mode de partition et l’ajouter à un groupe de proxys de service personnalisé.

$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 

Service de recherche

Le script Microsoft PowerShell suivant indique comment créer l’application de service de recherche en mode de partition.

Notes

Le script pour cette application de service utilise le paramètre partitionné plutôt que le paramètre 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

L’application de service Word Automation Services prend en charge le mode de partition. Il n’y a aucune applet de commande pour la création d’un proxy.

Le script Microsoft PowerShell suivant indique comment créer l’application de service Word Automation Services en mode de partition.

$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 

Service de profil utilisateur

La création du service de profil utilisateur à l’aide de PowerShell comme requis lors de l’approvisionnement en mode partitionné représente un défi lorsque Windows PowerShell n’est pas en cours d’exécution comme compte de batterie de serveurs SharePoint. Pour contourner ce problème et démarrer le service de synchronisation de profil utilisateur, nous utilisons l’applet de commande Start-Process et simulons l’exécution du script comme compte de batterie de serveurs.

Deux scripts sont nécessaires : le premier script crée l’UPA et le second script appelle le premier script.

Le script Microsoft PowerShell suivant indique comment créer l’application de service de profil utilisateur en mode de partition et l’ajouter à un groupe de proxys de service personnalisé...

Notes

Ce script ne doit PAS être exécuté directement sinon il sera impossible de démarrer l’instance de service de synchronisation du profil utilisateur. Ce script doit être enregistré localement et son emplacement noté.

<#
    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} 

Le second script ci-dessous effectue le travail nécessaire pour appeler le script de création de l’UPA et démarrer les instances de service requises. L’emplacement du script de création de l’UPA doit être mis à jour dans la variable $upaScriptFile. De plus, certaines autorisations requises sont définies sur l’UPA.

$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

Configuration de la gestion des droits relatifs à l’information (IRM)

La prise en charge de la gestion des droits relatifs à l’information (IRM) pour l’architecture mutualisée peut être activée à l’aide de le site Web Administration centrale de SharePoint ou des applets de commande Microsoft PowerShell mises à jour.

Activez la gestion des droits relatifs à l’information à l’aide de Administration centrale

  1. Vérifiez que le compte d’utilisateur qui exécute cette procédure est membre du groupe SharePoint Administrateurs de batterie et du groupe Administrateurs sur l’ordinateur qui exécute l’Administration centrale.

  2. Sur le site web Administration centrale, accédez à Sécurité.

  3. Sur la page Sécurité, accédez à Configurer la gestion des droits relatifs à l’information

  4. Sur la page Gestion des droits relatifs à l’information, cliquez sur Utiliser ce serveur RMS.

  5. Activez la case à cocher Cochez cette case dans des configurations mutualisées pour permettre aux clients de configurer les paramètres de la Gestion des droits relatifs à l’information (IRM) au niveau du client.

Activez la gestion des droits relatifs à l’information à l’aide de Microsoft PowerShell

  1. Vérifiez votre statut de membre pour les éléments suivants :

    • Rôle serveur fixe securityadmin sur l’instance SQL Server

    • du rôle de base de données fixe db_owner sur toutes les bases de données à mettre à jour ;

    • du groupe Administrateurs sur le serveur sur lequel vous exécutez les applets de commande PowerShell.

    Un administrateur peut utiliser la cmdlet Add-SPShellAdmin pour accorder des autorisations d’utilisation des cmdlets SharePoint Server 2013.

    Notes

    Si vous ne disposez pas des autorisations, contactez votre administrateur d’installation ou votre administrateur SQL Server afin de les demander. Pour plus d’informations sur les autorisations PowerShell, reportez-vous à Add-SPShellAdmin.

  2. Ouvrez SharePoint Management Shell.

  3. À l’invite de commandes PowerShell, tapez la commande suivante :

    Set-SPIRMSettings -IrmEnabled -UseActiveDirectoryDiscovery -SubscriptionScopeSettingsEnabled
    

Il n’y a aucune option de configuration intégrée pour IRM au sein du site d’administration des clients. Pour appliquer la configuration, utilisez l’applet de commande Set-SPSiteSubscriptionIRMConfig comme illustré dans le script suivant :

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

Cette configuration est généralement effectuée dans le cadre de l’approvisionnement des clients.

Gestion et approvisionnement des clients

Cette section décrit les processus et les approches d’approvisionnement des clients et la personnalisation de l’environnement mutualisé.

Approvisionnement des clients

Pour créer un client, suivez les étapes décrites dans le tableau.

Tâches

Étapes

1. Créer un abonnement de site.

À l’invite de commandes Microsoft PowerShell, tapez la syntaxe suivante :

$sub = New-SPSiteSubscription

2. Attribuer un Feature Pack à l’abonnement de site et configurer une unité d’organisation personnalisée à l’aide du Sélecteur de personnes.

À l’invite de commandes Microsoft PowerShell, tapez la syntaxe suivante :

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

3. Créer une ou plusieurs collections de sites à affecter à l’abonnement de site.

À l’invite de commandes Microsoft PowerShell, tapez la syntaxe suivante :

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

Le script PowerShell suivant indique comment créer un site d’administration des clients qui utilise le modèle TENANTADMIN#0. Si le client est configuré pour utiliser un Feature Pack Enterprise, le script Microsoft PowerShell effectue des opérations supplémentaires : il crée la collection Mes sites.

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!"  

Cette approche peut être personnalisée davantage pour contenir une autre configuration de client comme pour le flux de travail, les applications et la gestion des droits à l’information. Généralement, un tel script est encapsulé dans une fonction ou des applets de commande qui lui permettent d’être exécuté à plusieurs reprises pour les futurs clients.

Service de flux de travail

SharePoint Server 2013 apporte une avancée majeure au flux de travail, y compris des fonctions d’entreprise telles que la création entièrement déclarative, REST et la messagerie Service Bus, l’évolutivité élastique, et la fiabilité du service géré. SharePoint 2013 peut utiliser un nouveau service de flux de travail intégré sur les composants Windows Workflow Foundation de .NET Framework 4.5. Le nouveau service est appelé Workflow Manager et est conçu pour jouer un rôle central dans l’entreprise.

Vous et vos outils pouvez utiliser la plateforme Workflow de SharePoint 2013 uniquement après avoir téléchargé et installé le nouveau service Workflow Manager et l’avoir configuré pour communiquer avec votre batterie de serveurs SharePoint Server 2013. Pour plus d’informations sur la façon d’installer et de configurer le service Workflow Manager pour SharePoint 2013, reportez-vous à Installer et configurer le flux de travail pour SharePoint Server 2013.

Pour configurer le service de flux de travail, utilisez l’applet de commande Register-SPWorkflowService pour enregistrer la batterie de serveurs avec le Gestionnaire de service de flux de travail en mode de partition. Pour ce faire, utilisez le paramètre SPSite pour transmettre l’URL d’une collection de sites de clients existante de votre batterie de serveurs et utilisez le paramètre ScopeName pour définir une étendue de flux de travail nommée pour votre batterie de serveurs.

Le script Windows PowerShell suivant indique comment enregistrer la batterie de serveurs SharePoint avec le Gestionnaire de service de flux de travail en mode de partition.

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!"

Pour activer un client spécifique pour le flux de travail SharePoint, vous devez configurer le proxy du service de flux de travail. Pour ce faire, obtenez une référence à la collection de sites racine du client et enregistrez-la avec le proxy du service de flux de travail.

Le script PowerShell suivant indique comment activer un client pour le flux de travail SharePoint.

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!" 

Une fois que le client est configuré pour utiliser le Gestionnaire de service de flux de travail, vous pouvez utiliser SharePoint Designer pour créer des flux de travail à l’aide de l’option de flux de travail de SharePoint 2013 comme indiqué dans le diagramme suivant.

This diagram shows the SharePoint 2013 Workflow option in SharePoint Designer

Extension du modèle de site d’administration des clients

Ajout ou suppression de liens

Utilisez le schéma de définition d’action personnalisée pour ajouter et supprimer des liens sur la page principale du site d’administration des clients.

La définition de fonction suivante montre indique comment ajouter un nouveau groupe, plusieurs liens, et supprimer le lien vers la page Gérer les collections de sites.

<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>

Pour plus d’informations sur les actions personnalisées, telles que les identifiants par défaut pour les liens intégrés, reportez-vous à Schéma de définition d’action personnalisée.

Personnalisation du ruban

Le ruban serveur dans SharePoint Server 2013 peut être personnalisé à l’aide du code XML du ruban serveur et ECMAScript (JavaScript, JScript). Le code XML définit les contrôles sur le ruban. L’ECMAScript exécute des actions sur une page ou un objet sur la page. Vous pouvez utiliser l’ECMAScript qui existe dans le modèle d’objet SharePoint FoundationECMAScript ou les fonctions ECMAScript intégrées. Vous pouvez également ajouter votre propre ECMAScript à la page et l’utiliser pour interagir avec le ruban.

Lorsque vous personnalisez le ruban serveur, vous pouvez ajouter, remplacer et supprimer des onglets, groupes et contrôles. Les personnalisations du ruban sont définies en utilisant le code XML du ruban serveur dans une fonction et peuvent être déployées dans un package de solution (fichier .wsp). Les personnalisations du ruban peuvent être étendues à un type de liste particulier à l’aide des attributs RegistrationId et RegistrationType. Les personnalisations peuvent aussi être étendues à un site ou à une application web particulière à l’aide de l’attribut Scope dans le fichier Feature.xml.

Le code XML suivant indique comment remplacer la fonctionnalité du bouton Quota de disque sur la page Gérer les collections de sites.

<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>

Pour plus d’informations sur la façon de personnaliser le ruban serveur, reportez-vous à Personnalisation du ruban serveur.

Extension d’un abonnement de site à l’aide de propriétés personnalisées

L’application de service Abonnement de site peut stocker à la fois des propriétés personnalisées d’administration et des propriétés personnalisées de clients. Les types de propriété pris en charge incluent les valeurs suivantes :

  • string

  • int

  • long

  • bool

  • Guid

  • DateTime

Vous pouvez utiliser les propriétés personnalisées pour étendre les fonctionnalités de gestion, telles que la gestion de quota de clients.

Le script PowerShell suivant indique comment accéder aux propriétés personnalisées.

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

Guide général pour hébergeurs SharePoint Server 2013