Partager via


Architecture mutualisée SharePoint Server 2013

S’APPLIQUE À :yes-img-132013 no-img-162016 no-img-192019 no-img-seSubscription Edition no-img-sopSharePoint dans Microsoft 365

Cet article décrit les composants et services liés à l’architecture multilocataire dans SharePoint Server 2013 et fournit également des conseils d’architecture, de sécurité, d’exploitation et de gestion pour aider les fournisseurs de services à comprendre l’architecture multilocataire dans SharePoint Server 2013 pour la planification, la conception, la création et la gestion d’une plateforme d’hébergement SharePoint Server 2013 multilocataire.

Remarque

L’intégration de Microsoft OneDrive avec Viva Engage ne fonctionne pas pour les applications de service mutualisées ou partitionnée pour les déploiements locaux.

Avant de commencer

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

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

Avant d’introduire la fonctionnalité multilocataire dans SharePoint Server 2013, vous devez comprendre le concept général de multilocation et ses caractéristiques connexes. La compréhension de l’architecture mutualisée et de ses caractéristiques associées vous aide à prendre les décisions appropriées pour la planification, la conception, l’exploitation et la gestion de votre plateforme d’hébergement SharePoint Server 2013 mutualisée.

Multilocataire fait référence à la possibilité de gérer et de partitionner des données de sites et de services ou logiciels partagés pour prendre en charge plusieurs locataires. Cette capacité contraste avec 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 d’en savoir plus sur 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. Cette configuration vous permet de déployer de nombreux sites qui utilisent 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 contient de nombreuses collections de sites basées sur le chemin d’accès 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 hôtes sont fondamentalement le seul moyen de mettre à l’échelle pour les environnements multilocataires et offrent une flexibilité ultime en ce qui concerne l’espace de noms d’URL utilisé. Si vous utilisez des sites basés sur des chemins d’accès avec multilocataire, la limite logicielle des chemins d’accès gérés est atteinte rapidement.

Pour plus d’informations sur la planification des collections de sites nommées par l’hôte pour SharePoint Server 2013, voir Architecture et déploiement de collections de sites nommées par l’hôte (SharePoint 2013).

Groupes de services (groupes de proxys)

Un groupe de services, également appelé groupe proxy, est un groupe d’applications de service qui sont sélectionnées pour qu’une application web les utilise.

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 sur 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 à l’aide de 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. Ces paramètres sont déplacés vers la configuration au niveau du locataire 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 implémentées de différentes manières et cette flexibilité influence la conception des solutions multilocataires.

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 les fonctionnalités SharePoint regroupées, elles peuvent être associées à un abonnement de site (c’est-à-dire, locataire). 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é offre plus de flexibilité à un fournisseur de services pour créer différentes offres de service dans 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 SharePoint, consultez la section Disponibilité des fonctionnalités SharePoint dans les solutions locales de l’article suivant : Description du service SharePoint.

Gestion des droits relatifs à l’information

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 plus d’informations sur les limites et limites clés d’une base de données de contenu et d’une collection de sites telles qu’elles s’appliquent à un environnement mutualisé de SharePoint Server 2013, voir Limites et limites logicielles pour SharePoint Server 2016 et Limites et limites logicielles pour SharePoint Server 2016.

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

L’utilisation d’une batterie partagée pour héberger des collections de sites multilocataires sur une seule application web offre une meilleure scalabilité que l’utilisation d’une application web dédiée par locataire.

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

N’autorisez pas le déploiement de code de confiance totale sur des sites.

N’autorisez pas les personnalisations qui affectent les 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. Cette méthode nécessite deux ID d’abonnements distincts pour les locataires avec les deux types de contenu. Cette méthode simplifie également 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 multi-organization dans lequel les données et l’administration des locataires sont isolées, la configuration des services partitionnés et partagés est 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 méthode nécessite deux ID d’abonnements distincts pour les locataires avec les deux types de contenu. Cette méthode simplifie également la gestion des licences.

N’autorisez pas le déploiement de code de confiance totale sur des sites.

N’autorisez pas les personnalisations qui affectent les 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 éléments à prendre en compte lorsque vous planifiez votre plateforme d’hébergement SharePoint Server 2013 multilocataire. Parmi ces facteurs, citons le coût, la gestion simplifiée, l’isolation des ressources, les performances et la scalabilité.

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 relatives à la sécurité pour la planification et la conception d’une plateforme d’hébergement SharePoint Server 2013 mutualisée. À partir de là, toute section, telle que la section Unité d’organisation (UO), qui parle de la configuration du sélecteur de personnes ne fonctionne que sans personnalisation supplémentaire avec 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. Authentification Windows méthodes, qui sont utilisées à la fois par l’authentification basée sur les revendications et le mode classique, sont les suivantes :

  • 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 Forms peut être utilisée sur des informations d’identification stockées dans un fournisseur d’authentification, telles que :

  • 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 Forms valide les utilisateurs en fonction des informations d’identification que les utilisateurs entrent dans un formulaire de connexion (généralement une page web). Les demandes non authentifiées sont redirigées vers une page de connexion, où un 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 auprès d’un système de gestion des identités qui n’est pas basé sur Windows ou externe, vous devez inscrire 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). Il 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, consultez Personnes vue d’ensemble du sélecteur 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 d’autres zones, étendez l’application web et sélectionnez l’un des noms de zone 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.

Ce diagramme montre la structure d’unité d’organisation d’un environnement d’hébergement

Au minimum, vous souhaitez lier un stratégie de groupe à la racine du domaine, à l’unité d’organisation Contrôleurs de domaine, à l’unité d’organisation Serveurs SharePoint et à l’unité d’organisation Clients.

Racine de domaine

La sécurité qui s’applique à 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. Cette unité d’organisation permet de séparer tous les comptes d’utilisateur et d’ordinateur d’un client de ces comptes d’autres clients. En outre, cette structure d’unité d’organisation est celle requise pour prendre en charge la synchronisation des profils utilisateur dans les déploiements multilocataires.

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

Ce diagramme montre la boîte de dialogue de l’éditeur de propriétés ADSI pour l’attribut uPNSuffixes

Une fois que l’attribut uPNSuffixes d’une unité d’organisation Client est configuré, sa valeur peut être associée à un compte d’utilisateur au sein de cette unité d’organisation client, comme illustré dans le diagramme suivant.

Ce diagramme montre la boîte de dialogue de nouvel objet, qui vous permet de créer un nouvel utilisateur

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. 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. Services ADFS (AD FS) peut être configuré pour agir en tant que service d’émission de jeton de sécurité (IP-STS) du fournisseur d’identité pour une application web SharePoint Server 2013. Dans cette configuration, les services AD FS émettent des jetons de sécurité SAML consistant en des revendications pour permettre à des ordinateurs clients d'accéder aux applications Web qui ont recours à l'authentification basée sur les revendications. Vous pouvez utiliser un fournisseur d’identité qui est une alternative à AD FS. Mais il doit prendre en charge la norme WS-Federation. En outre, en utilisant la configuration AD FS, du code personnalisé est requis.

Pour plus d’informations sur la configuration de l’authentification par revendications SAML avec AD FS pour SharePoint Server 2013, voir Configurer l’authentification par revendications SAML avec AD FS dans SharePoint Server.

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

Cette section décrit diverses considérations de gestion et opérationnelles pour un environnement SharePoint Server 2013 multilocataire.

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 pour 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. Ils ne remplacent pas les fonctionnalités et packages de solutions SharePoint, qui personnalisent ou augmentent 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

Lorsque vous effectuez des opérations de sauvegarde et de restauration indépendantes du locataire sur une plateforme d’hébergement SharePoint Server 2013 multilocataire, vous pouvez suivre les instructions générales pour effectuer des opérations de sauvegarde et de restauration sur les environnements SharePoint Server 2013. Voir Sauvegarde et restauration 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 plus d’informations sur la planification des opérations de sauvegarde et de restauration pour workflow Service Manager, consultez Récupération d’urgence et restauration d’étendue dans Gestionnaire de flux de travail 1.0

Lorsque vous effectuez des opérations de sauvegarde et de restauration spécifiques au locataire sur une plateforme d’hébergement SharePoint Server 2013 multilocataire, vous devrez peut-être synchroniser les composants tenants 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 partition, mais il prend en charge l’abonnement de site en mode natif. Dans l’environnement SharePoint mutualisé, la plupart des fonctionnalités de gestion des applications (c’est-à-dire, Gérer le catalogue d’applications, Gérer les licences d’application, autorisations d’application, etc.) sont obtenues à l’aide du site d’administration du locataire.

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

Le diagramme montre le site d’administration des clients pour la gestion des applications

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 Administration du locataire n’inclut pas le lien vers cette page, qui peut être ajouté à l’aide de la technique de personnalisation dans la section Extension du modèle de site Administration du locataire

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 Administration du locataire n’inclut pas le lien vers cette page, qui peut être ajouté à l’aide de la technique de personnalisation dans la section Extension du modèle de site Administration du locataire.

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.

Ce diagramme montre les fonctionnalités d’administration de la recherche situées sur le site d’administration des clients

Remarque

La plupart des *. Les applets de commande Microsoft PowerShell EnterpriseSearch* prennent désormais en charge les partitions et peuvent être utilisées pour automatiser certaines fonctions de configuration et de gestion exposées dans le site Administration du locataire.

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.

Cette figure illustre la configuration du profil utilisateur

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.

Remarque

[!REMARQUE] 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!"

les 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 plus d’informations sur la planification de l’analyse pour SharePoint Server 2013, voir Planifier l’analyse dans 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.

Remarque

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.

User licenses are assigned by mapping claims to a known type of license. For example, a claim can be an Active Directory Domain Services (AD DS) Security group. By mapping the ContosoFinanceDept security group to an Enterprise license, you effectively assign an Enterprise license to all members of that group. Les utilisateurs qui se connectent à SharePoint Server se voient attribuer des revendications. SharePoint Server examine les revendications des utilisateurs pour déterminer leur licence. Si un utilisateur n’a pas de licence pour utiliser une fonctionnalité particulière, SharePoint bloque l’accès à cette fonctionnalité 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 configuration des licences dans SharePoint Server 2013, voir Configurer la gestion des licences dans SharePoint Server.

Gestion du cycle de vie

Bien que ce livre blanc présente les principales considérations relatives à l’infrastructure lors de la conception d’une solution SharePoint 2013 mutualisée et qu’il fournit des scripts de base pour la configuration, la gestion globale du cycle de vie des opérations est impérative. Par exemple, l’administration de locataire personnalisé, le déprovisionnement des abonnements, l’archivage, la gestion des utilisateurs, la réinitialisation de mot de passe en libre-service et les quotas sont tous des domaines courants qui nécessitent une certaine combinaison d’efforts de Windows PowerShell et de personnalisation afin de fournir une offre de service complète. Chaque fournisseur de services a des exigences différentes dans ce domaine et il est extrêmement important de s’assurer que ces exigences font partie du travail initial d’étendue et de conception pour la plateforme d’infrastructure.

Installation et configuration

Cette section décrit les étapes générales de configuration et de configuration d’une plateforme multilocataire hébergeant SharePoint Server 2013.

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 fournis pour illustrer 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 de bout en bout personnalisée.

Les scripts Microsoft PowerShell contenus dans les sous-sections suivantes sont basés (en tout ou en partie) sur le travail de Spencer Harbar (http://www.harbar.net) et sont reproduits ici avec son consentement gracieux. Pour plus d’informations sur l’œuvre originale de Spencer Harbar, consultez les documents suivants :

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 utilise une application web d’hébergement unique à l’aide de collections de sites nommées d’hôte et de chemins gérés par l’en-tête de l’hôte. Il est déployé sur un serveur unique par souci de simplicité. Cet exemple de déploiement est le modèle de conception prévu pour l’architecture mutualisée avec SharePoint 2013 et peut être étendu à un déploiement où les rôles de instance de service sont articulés sur plusieurs ordinateurs. L’exemple de déploiement utilise 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 associés À OAuth2 tels que Gestionnaire de flux de travail.

Configuration du DNS

Étant donné que les collections de sites nommées par l’hôte seront utilisées pour un environnement SharePoint multilocataire, vous devez configurer votre DNS (autrement dit, créer les enregistrements DNS appropriés, etc.) en fonction de votre plan. Pour plus d’informations sur la planification des collections de sites nommées par l’hôte pour SharePoint Server 2013, voir Architecture et déploiement de collections de sites nommées par l’hôte (SharePoint 2013).

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 configuration d’un environnement d’applications pour SharePoint Server 2013, voir Configurer un environnement pour les applications pour 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 planification des comptes de service pour SharePoint Server 2013, voir Planifier les 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 : identité du pool d’applications qui héberge les points de terminaison d’application de service

  • SPContent : 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 managé est créé pour le pool d’applications hébergeant 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 important de créer une collection de sites « racine » dans l’application web d’hébergement, même si cette collection de sites n’est pas accessible par les utilisateurs finaux. Cette collection de sites « racine » est nécessaire pour la prise en charge et le comportement opérationnel correct de SharePoint 2013.

Remarque

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

<#
    2. Proxy Group, Web Application &amp; 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ée peuvent être créées. Ces applications de service sont requises dans la batterie de serveurs pour les opérations normales (par exemple, le service d’état) ou n’ont pas besoin d’être partitionnée pour prendre en charge l’architecture mutualisée, car elles ne stockent aucune donnée. Pour ce faire, un autre compte managé est nécessaire, puis chaque application de service est créée à son tour.

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

<#
    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 modèle 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’existe aucune configuration spécifique au locataire 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 &amp; 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 Administration du locataire n’inclut pas le lien vers cette page, qui peut être ajouté à l’aide de la technique de personnalisation dans la section Extension du modèle de site Administration du locataire.

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 &amp; 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.

Remarque

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’existe aucune applet de commande pour créer 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 &amp; 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 défi et pour démarrer correctement le service de synchronisation de profils utilisateur, nous utilisons l’applet de commande Start-Process et simulons l’exécution du script en tant que compte de batterie de serveurs.

Deux scripts sont requis. Le premier script crée l’UPA et le deuxième script appelle le premier script.

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

Remarque

[!REMARQUE] 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 &amp; Proxy, and User Profile Service Instance
     If omitted, -ProfileSyncDBServer, -SocialDBServer &amp; -ProfileDBServer are the SharePoint Default DB Server
     If omitted, -SyncInstanceMachine is the local machine 
#>
Write-Host "Creating $upaName Application &amp; 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. En outre, 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 pour l’architecture mutualisée peut être activée à l’aide du site web De l’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. Dans la page Gestion des droits relatifs à l’information, sélectionnez 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 que vous êtes membre :
  • du 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 ;

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

    Remarque

    [!REMARQUE] 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, consultez Add-SPShellAdmin.

  1. Ouvrez SharePoint Management Shell.

  2. À partir de l’invite de commandes PowerShell, entrez 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 "http://www.contoso.com"
Set-SPSiteSubscriptionIRMConfig -identity $subscription -IrmEnabled -CertificateServerUrl "http://rms.contoso.com" 

Cette configuration est effectuée dans le cadre de l’approvisionnement du locataire.

Gestion et approvisionnement des clients

Cette section décrit les processus et les approches pour l’approvisionnement des locataires et la personnalisation de l’environnement multilocataire.

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 locataire est configuré pour utiliser un Feature Pack d’entreprise, le script Microsoft PowerShell effectue d’autres opérations, c’est-à-dire qu’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 davantage personnalisée pour contenir d’autres configurations de locataire, telles que pour le flux de travail, les applications et l’IRM. Ce script est encapsulé dans une fonction ou des applets de commande personnalisées, ce qui lui permet d’être exécuté à plusieurs reprises pour les locataires futurs.

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é Gestionnaire de flux de travail et il 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 l’installation et la configuration du service Gestionnaire de flux de travail pour SharePoint 2013, voir Installer et configurer le flux de travail pour SharePoint Server.

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. Dans cette inscription de batterie de serveurs, utilisez le paramètre SPSite pour transmettre l’URL de toute collection de sites de locataire existante à partir 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. Dans cette configuration, obtenez une référence à la collection de sites racine du locataire et inscrivez-la auprès du proxy de service de workflow.

Le script Microsoft 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 locataire est configuré pour utiliser workflow Service Manager, vous pouvez utiliser SharePoint Designer pour créer des flux de travail à l’aide de l’option Flux de travail SharePoint 2013, comme illustré dans le diagramme suivant.

Ce diagramme montre l’option Flux de travail de SharePoint 2013 dans SharePoint Designer

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

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 fonctionnalité suivante montre comment ajouter un nouveau groupe, plusieurs liens et comment supprimer le lien vers la page Gérer les collections de sites.

<Elements xmlns="http://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 ID par défaut pour les liens intégrés, consultez 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="http://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 personnalisation du ruban serveur, consultez 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();
    }

Voir aussi

Concepts

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