Partilhar via


Noções básicas de multilocação no SharePoint Server 2013

APLICA-SE A:yes-img-132013 no-img-162016 no-img-192019 no-img-seSubscription Edition no-img-sopSharePoint no Microsoft 365

Este artigo descreve os componentes e serviços relacionados com vários inquilinos no SharePoint Server 2013 e também fornece orientações de arquitetura, segurança, operacional e gestão para ajudar os fornecedores de serviços a compreenderem vários inquilinos no SharePoint Server 2013 para planear, conceber, criar e gerir uma plataforma de alojamento multi-inquilino do SharePoint Server 2013.

Observação

O Microsoft OneDrive com integração Viva Engage não funciona para aplicações de serviço com vários inquilinos ou particionadas para implementações no local.

Antes de começar

Introdução à multilocação no SharePoint Server 2013

O que é multilocação?

Antes de introduzirmos a funcionalidade multi-inquilinos no SharePoint Server 2013, deve compreender o conceito geral de multi-inquilinos e as respetivas características relacionadas. Compreender o multi-inquilino e as respetivas características relacionadas ajuda-o a tomar as decisões adequadas para planear, estruturar, operar e gerir a sua plataforma de alojamento multi-inquilino do SharePoint Server 2013.

Multi-inquilinos refere-se à capacidade de gerir e particionar dados de sites e de serviços ou software partilhados de outra forma para acomodar vários inquilinos. Esta capacidade contrasta com a execução de várias instâncias de um serviço ou com a configuração de hardware separado. Nos produtos e tecnologias da Microsoft, a multilocação de serviços cria um ambiente de hospedagem no qual os recursos de farm de servidores são maximizados. Antes de saber mais sobre ambientes de alojamento, é importante compreender a arquitetura dos serviços.

Componentes e serviços essenciais para permitir a multilocação no SharePoint Server 2013

Esta seção descreve os componentes e serviços essenciais para habilitar multilocatários no SharePoint Server 2013.

Aplicativo Web

Um aplicativo Web do SharePoint 2013 é composto de um site Serviços de Informações da Internet (IIS), que atua como uma unidade lógica de gestão e segurança para os conjuntos de sites que você criar. Cada aplicativo Web é representado por um site IIS diferente que usa um pool de aplicativos exclusivo ou compartilhado. Quando você cria um aplicativo Web, você também cria um banco de dados de conteúdo e define o método de autenticação usado para conectar ao(s) banco(s) de dados.

Conjunto de sites denominado de host

Conjuntos de sites denominados de host permitem atribuir um nome DNS exclusivo para conjuntos de sites. Por exemplo, você pode intitulá-los como http://TeamA.contoso.com e http://TeamB.fabrikam.com. Esta aprovisionamento permite-lhe implementar muitos sites que utilizam nomes DNS exclusivos na mesma aplicação Web. Ele também permite que os provedores de serviços escalonem um ambiente para muitos clientes. Se não utilizar coleções de sites com nome de anfitrião, a aplicação Web do SharePoint contém muitas coleções de sites baseadas no caminho que partilham o mesmo nome de anfitrião (nome DNS). Por exemplo, a Equipe A teria um conjunto de sites em https://contoso.com/sites/teamA e a Equipe B teria um conjunto de sites em https://fabrikam.com/sites/teamB.

Os conjuntos de sites denominados do host são fundamentalmente a única maneira de escalonar para ambientes de multilocação e proporcionar a máxima flexibilidade em relação ao namespace da URL usada. Se utilizar sites baseados em caminhos com vários inquilinos, o limite de software para caminhos geridos será atingido rapidamente.

Para obter mais informações sobre como planear coleções de sites com nome de anfitrião para o SharePoint Server 2013, consulte Arquitetura e implementação de coleções de sites com nome de anfitrião (SharePoint 2013).

Grupos de serviços (grupos de proxy)

Um grupo de serviços, também conhecido como grupo de proxy, é um grupo de aplicações de serviço que estão selecionadas para uma aplicação Web as utilizar.

Por padrão, todos os aplicativos de serviço são incluídos no grupo padrão a menos que outro grupo seja especificado no momento em que o aplicativo de serviço é criado. Você pode adicionar e remover aplicativos de serviço do grupo padrão a qualquer momento. Quando você cria um aplicativo Web, você pode selecionar o grupo padrão ou pode criar um grupo personalizado de serviços. Você cria um grupo personalizado de serviços, selecionando apenas os aplicativos de serviço que você deseja que o aplicativo Web use.

Os grupos personalizados não são reutilizáveis em várias aplicações Web. Sempre que seleciona "personalizado" quando cria uma aplicação Web, está a selecionar serviços apenas para a aplicação Web que está a criar.

Proxy do serviço

Quando você cria um aplicativo de serviço, é criado ao mesmo tempo um proxy para o aplicativo de serviço. Um proxy é uma entidade virtual que conecta aplicativos Web a aplicativos de serviço. Os proxies são listados na página Gerenciar aplicativos de serviço no site da Administração Central do SharePoint.

Os proxies são criados automaticamente se você usar Administração Central ou o Assistente de Configuração de Produtos do SharePoint 2016 para criar aplicativos de serviço. Se utilizar o Microsoft PowerShell para criar aplicações de serviço, os proxies nem sempre são criados automaticamente e têm de ser criados com o Microsoft PowerShell.

Alguns proxies podem incluir configurações que podem ser alteradas. Por exemplo, se um aplicativo Web estiver conectado a várias instâncias do serviço de metadados gerenciados, você deve indicar os proxies que estão conectados ao aplicativo de serviço principal que hospeda a taxonomia corporativa. Estas definições são movidas para a configuração ao nível do inquilino ao utilizar multi-inquilinos.

Aplicativos de serviço

Uma aplicação de serviço é uma representação lógica de um determinado serviço e a respetiva configuração de segurança e gestão, que define o respetivo comportamento operacional. Exemplos incluem Metadados Gerenciados e Perfis de usuário. Diferentes aplicações de serviço são implementadas de diferentes formas e esta flexibilidade irá influenciar a conceção de soluções multi-inquilino.

Para determinar a lista de aplicativos de serviço que está disponível em SharePoint Server 2013 e sua disponibilidade entre edições do SharePoint com o recurso de multilocação, consulte a seção Serviços e funcionalidades em Orientação geral para hosters no SharePoint Server 2013

Licenciamento e pacotes de recursos

Um pacote de recursos no SharePoint é uma forma de agrupar um conjunto de recursos no escopo do site ou no escopo da Web. Assim que as funcionalidades do SharePoint estiverem agrupadas, podem ser associadas a uma subscrição de site (ou seja, inquilino). Todos os conjuntos de sites da assinatura do site (locatário) podem usar apenas os recursos no escopo do site ou da Web que fazem parte do pacote de recursos. Esta capacidade permite que os provedores de serviços forneçam ofertas de serviços em camadas com base em diferentes conjuntos de recursos.

No SharePoint Server 2013, um novo recurso foi adicionado para atribuir licenças diferentes do SharePoint para cada usuário. Esse recurso também ativa as verificações de licença do SharePoint no tempo de execução. Esta funcionalidade proporciona mais flexibilidade para um fornecedor de serviços criar diferentes ofertas de serviços ao longo de um modelo de implementação simplificado. Em versões anteriores do SharePoint, os provedores de serviços tinham que criar diferentes modelos de implantação do SharePoint para cada versão do SharePoint. Para obter mais informações sobre as funcionalidades do SharePoint, consulte a secção Disponibilidade de funcionalidades do SharePoint em soluções no local do seguinte artigo: Descrição do Serviço SharePoint.

Gerenciamento de Direitos de Informação

A Integração do Gerenciamento de Direitos de Informação no SharePoint Server 2013 adiciona suporte para multilocação, que permite a capacidade de gerenciar configurações do Gerenciamento de Direitos de Informação no nível de locatário.

Considerações sobre o projeto de arquitetura

Esta seção descreve várias considerações para arquitetar um ambiente de multilocação do SharePoint Server 2013. Conforme descrito anteriormente no documento, a multilocação traz algumas características únicas a considerar quando você arquitetar e projetar seu ambiente do SharePoint Server 2013. Você tem que considerar esses fatores com base em suas necessidades para tomar as decisões apropriadas.

Compreender os limites no SharePoint Server 2013

Entender os limites de software do SharePoint Server 2013 vai ajudá-lo a tomar as decisões corretas para selecionar a arquitetura adequada para um ambiente de multilocação do SharePoint. Para obter mais informações sobre limites chave e limites para uma base de dados de conteúdos e coleção de sites à medida que se aplicam a um ambiente multi-inquilinos do SharePoint Server 2013, veja Limites e limites de software para o SharePoint Server 2016e Limites de Software para o SharePoint Server 2016.

Farm compartilhado vs. farm dedicado

A utilização de um farm partilhado para alojar coleções de sites multi-inquilino numa única aplicação Web proporciona uma melhor escalabilidade em comparação com a utilização de uma aplicação Web dedicada por inquilino.

Use um aplicativo Web dedicado e pool de aplicativos por cliente somente se você precisa satisfazer as exigências de isolamento.

Não permita que o código de confiança total seja implementado em sites.

Não permita personalizações que afetem os recursos partilhados, como o ficheiro de web.config.

Use conjuntos de sites denominados de host para criar vários conjuntos de sites no nível da raiz (sites com nome de domínio) ao longo de um aplicativo Web.

Um aplicativo Web vs. vários aplicativos Web

Use aplicativos Web dedicados para os locatários que exigem personalizações que afetam os recursos compartilhados por meio de um aplicativo Web, como o arquivo web.config.

Ao combinar vários locatários em um único farm, use um aplicativo Web dedicado do SharePoint para todo o conteúdo autenticado e um aplicativo Web dedicado separado para todo o conteúdo anônimo. Este método requer dois IDs de subscrições separados para inquilinos com ambos os tipos de conteúdo. Este método também simplificará o licenciamento.

Alguns recursos do SharePoint estão vinculados no nível de aplicativo Web, como a configuração da Criação do Conjunto de sites de autoatendimento. Depois de ativo, todos os locatários sob o mesmo aplicativo Web serão capazes de criar conjuntos de sites.

Projeto de ambiente de farm único

Num ambiente de alojamento multi-organização no qual os dados e a administração do inquilino estão isolados, a configuração de serviços partilhados e particionados é importante. Este exemplo fornece uma implementação prática de serviços particionados e também fornece recomendações sobre como implantar sites de clientes.

Este exemplo detalha as seguintes maneiras em que os sites dos clientes podem ser implantados em um farm:

  • Pool de aplicativos dedicado e Web

  • Pool de aplicativo compartilhado e aplicativo Web dedicado

  • Aplicativo Web compartilhado

    • Sites autenticados

    • Sites não autenticados

Use um pool de aplicativos dedicados por cliente somente se você precisa satisfazer exigências de isolamento. Use aplicativos Web dedicados para os locatários que exigem personalizações que afetam os recursos que são compartilhados em um aplicativo Web, como o arquivo web.config.

Ao combinar vários locatários em um único aplicativo Web, use um aplicativo Web dedicado para todo o conteúdo autenticado e um aplicativo Web dedicado separado para todo o conteúdo anônimo. Este método requer dois IDs de subscrições separados para inquilinos com ambos os tipos de conteúdo. Este método também simplificará o licenciamento.

Não permita que o código de confiança total seja implementado em sites.

Não permita personalizações que afetem os recursos partilhados, como o ficheiro de web.config.

No exemplo a seguir (sites autenticados), um conjunto de sites diferente denominado de host diferente é usado para cada empresa. A Empresa C inclui dois diferentes conjuntos de sites denominados de host. Abaixo de cada conjunto de sites denominado de host de nível superior, um caminho gerenciado é usado para criar uma segunda camada de conjuntos de sites de nível superior para sites como sites de equipe, Meus Sites, conteúdo de intranet publicado ou sites de divisão separados.

Projeto de ambiente em camadas

Conforme descrito anteriormente, existem muitos aspetos a ter em conta quando planeia a sua plataforma de alojamento multi-inquilino do SharePoint Server 2013, entre estes fatores estão o custo, a gestão simplificada, o isolamento de recursos, o desempenho e a escalabilidade.

Conforme sua base de clientes cresce, você pode ter dificuldade para atender a todos os requisitos de todos os seus clientes em um único ambiente. Nesse ponto, certas escolhas teriam que ocorrer quando você procurar equilibrar esses fatores.

Em um caso como este, uma alternativa que convém você considerar é um projeto de ambiente em camadas no qual vários ambientes do SharePoint atendem às diversas necessidades de seus clientes. Cada ambiente iria incidir sobre diferentes aspectos de suas ofertas de serviços, tais como baixo custo, alta densidade, maior isolamento de recursos e melhor qualidade de serviços (QoS) com custos mais elevados, e assim por diante.

Esta abordagem de projeto de ambiente em camadas pode fornecer diferentes acordos de nível de serviço aos seus clientes. Como resultado, você pode servir a uma ampla variedade de clientes, simplificar o gerenciamento e as operações, reduzir os custos de gerenciamento e aumentar suas margens de lucro.

Considerações de segurança

Esta secção aborda várias considerações de segurança para planear e estruturar uma plataforma de alojamento multi-inquilino do SharePoint Server 2013. A partir deste ponto, qualquer secção, como a secção Unidade organizacional (UO), que fale sobre a configuração do seletor de pessoas só funciona sem personalização adicional com autenticação do Windows.

O SharePoint Server 2013 é compatível com vários métodos de autenticação e provedores de autenticação para os seguintes tipos de autenticação:

  • Autenticação do Windows

  • Autenticação baseada em formulários

  • Autenticação baseada em tokens do SAML

O tipo de autenticação do Windows aproveita seu provedor de autenticação do Windows existente e os protocolos de autenticação que um ambiente de domínio do Windows usa para validar as credenciais de clientes conectados. autenticação do Windows métodos, que são utilizados pela autenticação baseada em afirmações e pelo modo clássico, incluem:

  • NTLM

  • Kerberos

  • Digest

  • Básica

A autenticação com base em formulários é um sistema de gerenciamento de identidade baseado em declarações que se baseia na associação do ASP.NET e autenticação de provedor de função. Forms autenticação baseada em Forms podem ser utilizadas em credenciais armazenadas num fornecedor de autenticação, tais como:

  • Serviços de Domínio Active Directory (AD DS)

  • Um banco de dados como um banco de dados do SQL Server

  • Um armazenamento de dados do Lightweight Directory Access Protocol (LDAP) como o Novell eDirectory, Novell Directory Services (NDS) ou Sun ONE

Forms autenticação baseada em Forms valida os utilizadores com base nas credenciais que os utilizadores introduzem num formulário de início de sessão (normalmente uma página Web). Os pedidos não autenticados são redirecionados para uma página de início de sessão, onde um utilizador tem de fornecer credenciais válidas e submeter o formulário. O sistema emite um cookie para solicitações autenticadas que contém uma chave para restabelecer a identidade de pedidos posteriores.

Para utilizar a autenticação baseada em formulários para autenticar os utilizadores num sistema de gestão de identidades que não se baseia no Windows ou num sistema externo, tem de registar o fornecedor de associação e o gestor de funções em vários ficheiros web.config. O SharePoint Server 2013 usa a interface do gerenciador de funções padrão do ASP.NET para coletar informações do grupo sobre o usuário atual. Cada função ASP.NET é tratada como um grupo de domínios pelo processo de autorização no SharePoint Server 2013. Você registra um gerenciador de funções em um arquivo web.config exatamente como você registra um provedor de associação para autenticação.

Se você quiser gerenciar funções ou usuários de associação no site do Administração Central, você deve registrar o provedor de associação e o gerenciador de funções no arquivo web.config do site do Administração Central. Você também deve registrar o provedor de associação e o gerenciador de funções no arquivo web.config do aplicativo Web que hospeda o conteúdo e no arquivo web.config do Serviço de Token de Segurança.

A autenticação baseada em token SAML no SharePoint Server 2013 usa o protocolo SAML 1.1 e o protocolo WS-F PRP. Requer coordenação com os administradores de um ambiente baseado em afirmações, seja o seu próprio ambiente interno ou um ambiente de parceiro. Se usar o Serviços de Federação do Active Directory (AD FS) 2.0, você tem um ambiente de autenticação baseada em token SAML.

Para aplicativos Web que usam a autenticação baseada em declarações, o People Picker é um controle que está disponível no SharePoint Server 2013. O controle do People Picker usa provedores de declarações para listar, resolver, pesquisar e determinar a exibição "amigável" de usuários, grupos e declarações. Para obter mais informações sobre a configuração do seletor de pessoas, veja descrição geral Pessoas Picker e fornecedores de afirmações.

As zonas representam diferentes caminhos lógicos para obter acesso aos mesmos sites em um aplicativo da web. Cada aplicativo Web pode incluir até cinco zonas. Quando você cria um aplicativo Web, o Administração Central cria a zona denominada Padrão. Para criar mais zonas, expanda a aplicação Web e selecione um dos restantes nomes de zona: Intranet, Extranet, Internet ou Personalizado.

Unidades Organizacionais

As Unidades Organizacionais (OUs) organizam os usuários e objetos computadores no ambiente do Active Directory. Para fins de hospedagem, a estrutura da unidade organizacional poderia ser organizada conforme mostrado no diagrama a seguir.

Este diagrama exibe a estrutura de unidade da Organização para um ambiente de hospedagem

No mínimo, quer ligar uma Política de Grupo à raiz de Domínio, UO dos Controladores de Domínio, UO do SharePoint Servers e UO dos Clientes.

Raiz do domínio

A segurança que se aplica a todo o domínio é aplicada na Política de Domínio. Essas configurações estão contidas em Objetos de Diretiva de Grupo (GPOs) que se aplicam a todo o domínio.

OU dos controladores de domínio

Os controladores de domínio mantêm os dados mais confidenciais em sua organização, dados que controlam a própria configuração de segurança. Os GPOs aplicados a este nível são usados para configurar e proteger os controladores de domínio no domínio.

OU dos servidores do SharePoint

Os servidores do SharePoint têm uma função única não incluída em outros servidores do diretório. Colocar esses servidores em seu próprio OU permite que políticas únicas sejam aplicadas a esses servidores. Eles também podem ser separados de outros servidores no diretório. Sub-OUs podem ser criadas quando GPOs diferentes precisam ser criados (como servidores de conteúdo de acesso anônimo versus servidores de conteúdo autenticado).

OU de clientes

Esta OU de nível superior permite que todas as contas de usuário sejam segregadas do resto do diretório. O próximo nível de OUs contém as OUs de cliente. Existe uma UO para cada cliente. Esta UO permite que todas as contas de utilizador e contas de computador de um cliente sejam separadas dessas contas de outros clientes. Além disso, esta estrutura de UO é a necessária para suportar a Sincronização de Perfis de Utilizador em implementações multi-inquilino.

Para dar aos utilizadores a impressão de que estão a iniciar sessão no seu próprio domínio personalizado, utilize as Interfaces de Serviço do Active Directory Editor (Edição ADSI) ou outra ferramenta do AD para editar o atributo uPNSuffixes de cada UO do Cliente, conforme mostrado no diagrama seguinte.

Este diagrama mostra a caixa de diálogo de editor de propriedades do ADSI para o atributo uPNSuffixes

Assim que o atributo uPNSuffixes de uma UO do Cliente estiver configurado, o respetivo valor está disponível para associar a uma conta de utilizador nessa UO do Cliente, conforme mostrado no diagrama seguinte.

Este diagrama exibe o novo objeto de diálogo que permite a criação de um novo usuário

Autenticação do usuário

Autenticação é a validação da identidade de um usuário em um provedor de autenticação, que é um diretório ou banco de dados que contém as credenciais do usuário e pode confirmar se ele as enviou corretamente. Um exemplo de um provedor de autenticação é Serviços de Domínio Active Directory (AD DS). Outros nomes comuns para um provedor de autenticação são diretório do usuário e repositório de atributos.

Um método de autenticação é uma troca específica de credenciais da conta e outras informações que confirmam a identidade de um usuário. O resultado do método de autenticação prova que, normalmente na forma de um token que contém declarações, um provedor de autenticação autenticou um usuário.

Um tipo de autenticação é uma maneira específica de validar as credenciais em um ou mais provedores de autenticação, às vezes usando um protocolo padrão do setor. Um tipo de autenticação pode usar vários métodos de autenticação.

Após a identidade de um usuário ser validada, o processo de autorização determina os sites, conteúdos e outros recursos que o usuário pode acessar.

O planejamento de métodos e tipos de autenticação de usuário deve determinar os seguintes itens:

  • Os métodos e tipos de autenticação de usuário para cada aplicativo Web e zona.

  • A infraestrutura de autenticação necessária para suportar os métodos e tipos de autenticação determinados.

  • Como migrar seus aplicativos web e zonas atuais que usam autenticação de modo clássico para usar a autenticação baseada em declarações.

Serviços de Federação do Active Directory (AD FS)

O SharePoint Server 2013 suporta autenticação com base em declarações. Os Serviços de Federação do Active Directory (AD FS) podem ser configurados para atuar como um Serviço de Token de Segurança do Provedor de Identidade (IP-STS) de um aplicativo Web do SharePoint Server 2013. Nesta configuração, o AD FS emite tokens de segurança baseados em SAML consistindo em declarações para que computadores cliente possam acessar aplicativos Web que usam a autenticação baseada em declarações. Pode utilizar um fornecedor de identidade que seja uma alternativa ao AD FS. Mas ele deve suportar o padrão WS-Federation. Também ao usar a configuração do AD FS, o código personalizado é necessário.

Para obter mais informações sobre como configurar a autenticação de afirmações baseadas em SAML com o AD FS para SharePoint Server 2013, veja Configurar a autenticação de afirmações baseadas em SAML com o AD FS no SharePoint Server.

Considerações de gerenciamento e operacionais

Esta secção aborda várias considerações de gestão e operacionais para um ambiente multi-inquilino do SharePoint Server 2013.

Gerenciamento de capacidade

O gerenciamento de capacidade é um processo contínuo porque nenhuma implementação permanece estática sobre o conteúdo e uso. Você tem que planejar para o crescimento e mudança, para que o ambiente do SharePoint Server 2013 possa continuar a fornecer uma solução de negócios eficaz. Para obter mais informações sobre a gestão de capacidade no SharePoint Server 2013, veja Capacity management and sizing overview for SharePoint Server 2013 (Descrição geral da gestão e dimensionamento de capacidade do SharePoint Server 2013).

Gerenciamento de aplicativos

O aplicativos para SharePoint fornece um novo método para fornecer informações ou funcionalidades específicas para um site do SharePoint. Um aplicativo para SharePoint é um aplicativo pequeno, autônomo e fácil de usar que resolve uma necessidade específica do usuário final ou da empresa. Os proprietários do site podem descobrir e baixar aplicativos para SharePoint de um Repositório do SharePoint público ou do Catálogo de Aplicativos interno da empresa e instalá-los em seus sites do SharePoint. Esses aplicativos para SharePoint integram o melhor da Web com SharePoint Server 2013. Não substituem as funcionalidades e os pacotes de soluções do SharePoint, que personalizam ou aumentam os sites do SharePoint. Ao contrário de recursos e soluções, que os administradores do farm ou do conjunto de sites precisam instalar, o aplicativos para SharePoint são aplicativos autônomos que os proprietários de sites podem adicionar aos seus sites do SharePoint. O aplicativos para SharePoint têm um ciclo de vida simples: eles podem ser instalados, atualizados e desinstalados pelos proprietários do site.

O Serviço de Gerenciamento de Aplicativos no SharePoint Server 2013 é habilitado à multilocação. A maioria das configurações de aplicativo e funcionalidade de gerenciamento é exposta por meio do site de Administração de locatário e permite que cada administrador de locatários defina suas configurações individuais.

Backup e restauração

Ao realizar operações de cópia de segurança e restauro agnósticas de inquilino numa plataforma de alojamento multi-inquilino do SharePoint Server 2013, pode seguir as orientações gerais para realizar operações de cópia de segurança e restauro em ambientes do SharePoint Server 2013. Veja Cópia de segurança e restauro no SharePoint Server.

Observe que no SharePoint Server 2013, a plataforma de fluxo de trabalho é independente da plataforma do SharePoint. Portanto, as operações de backup e restauração no Gerenciador de Fluxo de Trabalho devem ser coordenadas com as operações de backup e restauração do SharePoint para garantir que ambas permaneçam em sincronia uma com a outra. Para obter mais informações sobre como planear operações de cópia de segurança e restauro para Service Manager de Fluxo de Trabalho, veja Recuperação Após Desastre e Restauro do Âmbito no Gerenciador de Fluxos de Trabalho 1.0

Quando efetua operações de cópia de segurança e restauro específicas do inquilino numa plataforma de alojamento multi-inquilino do SharePoint Server 2013, poderá ter de manter os seguintes componentes com deteção de inquilino sincronizados entre si: aplicações de serviço, fluxo de trabalho, bases de dados de conteúdos e coleções de sites.

Aplicativos de serviço

Os aplicativos de serviço que estão configurados no Modo de partição têm um ou mais bancos de dados associados que contêm dados específicos ao locatário. Embora você possa executar operações de backup e restauração gerais nesses aplicativos de serviços tanto nos níveis de banco de dados e do aplicativo, existem comandos limitados para realizar operações de backup e restauração detalhadas específicas ao locatário nesses aplicativos de serviço ou em seus bancos de dados.

Considerações de aplicativo de serviço

Serviço de gerenciamento de aplicativos

O serviço de Gerenciamento de aplicativos é o aplicativo de serviço usado para controlar o recurso do aplicativo para SharePoint apresentado no SharePoint Server 2013. O aplicativos para SharePoint fornece um novo método para fornecer informações ou funcionalidades específicas para um site do SharePoint. Um aplicativo para SharePoint aplicativo pequeno, autônomo e fácil de usar que resolve uma necessidade específica do usuário final ou da empresa. O Serviço de Gestão de Aplicações não suporta o Modo de Partição. No entanto, tem conhecimento de Subscrição de Site nativamente. No ambiente multi-inquilino do SharePoint, a maioria das funcionalidades de Gestão de Aplicações (ou seja, Gerir Catálogo de Aplicações, Gerir Licenças de Aplicações, Permissões de Aplicações, etc.) é obtida através do Site de Administração de Inquilinos.

O diagrama a seguir mostra o gerenciamento de aplicativos no site de administração de locatários.

O diagrama mostra o Site de Administração de Inquilino para Gerenciamento de Aplicativos

Serviço Conectividade de Dados Corporativos

Uma vez configurado no modo de partição, toda a configuração do serviço Conectividade de Dados Corporativos move-se para a administração de locatários. No entanto, o modelo de site Administração de Inquilinos não inclui a ligação para esta página, que pode ser adicionada com a técnica de personalização na secção Expandir o modelo de site de Administração de Inquilinos

Serviço de repositório seguro

Uma vez configurado no modo de partição, a geração de chaves de criptografia permanece uma configuração de nível de farm realizada tanto via Administração Central ou Windows PowerShell. O restante da configuração do serviço de repositório seguro se transfere para a administração de locatário. No entanto, o modelo de site Administração de Inquilinos não inclui a ligação para esta página, que pode ser adicionada com a técnica de personalização na secção Expandir o modelo de site Administração de Inquilinos.

Serviço de metadados gerenciados

Uma vez configurado no modo de partição, toda a configuração se transfere para administração de locatários, e a publicação de Tipo de conteúdo é ativada por padrão.

Serviço de pesquisa

Muitas funções relacionadas à configuração de pesquisa específica do locatário são expostas no site de administração de locatários como mostra o diagrama a seguir.

Este diagrama mostra os recursos de Administração de Pesquisa localizados no site de Administração Locatária

Observação

Muitos dos *. EnterpriseSearch* Os cmdlets do Microsoft PowerShell estão agora com deteção de partições e podem ser utilizados para automatizar algumas funções de configuração e gestão expostas no site de Administração de Inquilinos.

Serviço Perfil de Usuário

Um grande número de elementos de configuração são transferidos para administração de locatários; no entanto, grande parte da configuração de sincronização do perfil permanece em um nível de farm e é aplicável a todos os locatários, conforme ilustrado na figura a seguir.

Esta figura ilustra a configuração de perfil de usuário

Fluxo de trabalho

Conforme observado anteriormente, no SharePoint Server 2013, a plataforma de fluxo de trabalho é separada da plataforma do SharePoint. A plataforma de fluxo de trabalho em si usa um ou mais bancos de dados. Embora você possa executar operações de backup e restauração gerais em nível de banco de dados nesses bancos de dados, não existem comandos, nem utilitários para a realização de operações de backup e restauração específicas do locatário nesses bancos de dados de fluxo de trabalho.

Bancos de dados de conteúdo

Se um locatário tiver uso exclusivo de um ou mais bancos de dados de conteúdo dedicados, você pode realizar operações de restauração e backup gerais em nível de banco de dados nesses bancos de dados.

Observação

[!OBSERVAçãO] Não é possível atingir um uso exclusivo de um ou mais bancos de dados de conteúdo dedicados por meio do uso de recursos padrão do produto, por exemplo, a criação de site pessoal. Este é um exemplo de onde a personalização é necessária a fim de atender a uma determinada oferta de nível de serviço.

O seguinte scrip do Microsoft PowerShell mostra como executar uma ação de backup inicial em um banco de dados de conteúdo de locatário.

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

Conjuntos de sites

Você pode executar operações de backup e restauração específicas em um conjunto de sites de locatário. A ferramenta que você escolher usar depende do tamanho do próprio conjunto de sites. Os cmdlets do Microsoft PowerShell são uma escolha apropriada para conjuntos de sites de pequeno e médio porte.

O seguinte script do Microsoft PowerShell mostra como executar uma ação de backup em um conjunto de sites de locatário.

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

Monitoramento

Existem muitas ferramentas que permitem monitorar o SharePoint Server 2013 e solucionar problemas. Diferentes ferramentas abrangem diferentes aspectos do ambiente, embora possa haver áreas sobrepostas. Considere quais ferramentas podem maximizar seus benefícios de monitoramento. Para obter mais informações sobre como planear a monitorização do SharePoint Server 2013, consulte Planear a monitorização no SharePoint Server.

Gerenciamento de pacote de serviços

Conforme descrito anteriormente, um pacote de recursos pode ser usado para agrupar diferentes recursos e associá-los a uma assinatura do site (ou seja, locatário). Todos os conjuntos de sites na assinatura do site (locatário) podem usar apenas os recursos no escopo do site ou da Web que fazem parte do pacote de recursos. Esta capacidade permite que os provedores de serviços forneçam ofertas de serviços em camadas com base em diferentes conjuntos de recursos. São criados pacotes de recursos que usam o cmdlet do New-SPSiteSubscriptionFeaturePack para criar o contêiner de pacote de recursos e o cmdlet Add-SPSiteSubscriptionFeaturePackMember adicionar os recursos individuais para o contêiner.

O seguinte script do Microsoft PowerShell mostra como criar um pacote de recursos em nível de locatário representando recursos do SharePoint Foundation 2013 e armazena a ID do pacote de recursos no recipiente de propriedades do farm.

Observação

O aplicativo de serviço de configurações de inscrição deve estar presente antes de executar scripts que funcionam com pacotes de serviços.

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

Gerenciamento de licenciamento

No SharePoint Server 2013, foi adicionada uma nova capacidade de gestão de licenciamento. Os administradores de farm agora podem atribuir licenças a usuários e permitir verificações de licença do tempo de execução. Ao utilizar esta nova funcionalidade, você pode garantir que apenas os usuários que têm a licença apropriada usem um recurso específico. A funcionalidade também simplifica o modelo de implantação, porque você não precisa mais compilar farms separados para as edições Standard e Enterprise do SharePoint Server.

As licenças de usuário são atribuídas por meio do mapeamento de declarações para um tipo de licença conhecido. Por exemplo, uma declaração pode ser um grupo de segurança dos Serviços de Domínio Active Directory (AD DS). Ao mapear o grupo de segurança ContosoFinanceDept para uma licença Enterprise, você atribui efetivamente uma licença Enterprise a todos os membros do grupo. São atribuídas afirmações aos utilizadores que iniciam sessão no SharePoint Server. O SharePoint Server examina as afirmações dos utilizadores para determinar a respetiva licença. Se um utilizador não tiver uma licença para utilizar uma determinada funcionalidade, o SharePoint bloqueia o acesso a essa funcionalidade no tempo de execução.

Essa implementação de licença do SharePoint Server 2013 é gerenciada pelo uso de novos cmdlets do Microsoft PowerShell. Por padrão, o licenciamento é desativado no SharePoint Server. No entanto, os administradores podem optar por ativá-la usando o Microsoft PowerShell. Para obter mais informações sobre como configurar o licenciamento no SharePoint Server 2013, veja Configurar o licenciamento no SharePoint Server.

Gerenciamento do ciclo de vida

Embora este documento técnico delineia as principais considerações de infraestrutura ao conceber uma solução multi-inquilino do SharePoint 2013 e fornece scripts de linha de base para configuração, a gestão geral do ciclo de vida das operações é imperativa. Por exemplo, a administração personalizada de inquilinos, o desaprovisionamento de subscrições, arquivo, gestão de utilizadores, reposição personalizada de palavra-passe e quotas são áreas comuns que requerem alguma combinação de mais Windows PowerShell e esforço de personalização para fornecer uma oferta de serviço completa. Cada fornecedor de serviços tem requisitos diferentes nesta esfera e é incrivelmente importante garantir que estes requisitos fazem parte do âmbito inicial e do trabalho de conceção para a plataforma de infraestrutura.

Instalação e configuração

Esta secção descreve os passos gerais para configurar uma plataforma de alojamento multi-inquilino do SharePoint Server 2013.

Confirmações

Esta seção fornece detalhes e contém os scripts do PowerShell que demonstram a criação e a configuração de vários componentes. Estes scripts são fornecidos para demonstrar os requisitos de configuração para multi-inquilinos e, por conseguinte, não representam a ordem de aprovisionamento ideal. No entanto, podem servir de base para desenvolver a sua própria solução de scripting ponto a ponto personalizada.

Os scripts do Microsoft PowerShell contidos nas seguintes subsecções baseiam-se (inteiros ou parcialmente) no trabalho de Spencer Harbar (http://www.harbar.net) e são reproduzidos aqui com o seu consentimento gracioso. Para obter mais informações sobre o trabalho original de Spencer Harbar, consulte os seguintes documentos:

Os scripts do PowerShell fornecidos incluem variáveis, que devem ser modificadas para se adequarem ao seu ambiente.

Exemplo de implantação

Esta secção apresenta um exemplo de implementação que utiliza uma única aplicação Web de alojamento através de coleções de sites chamadas de anfitrião e caminhos geridos por cabeçalhos de anfitrião. É implementado num único servidor por uma questão de simplicidade. Este exemplo de implementação é o modelo de design pretendido para multi-inquilinos com o SharePoint 2013 e pode ser expandido para uma implementação em que as funções de instância de serviço são articuladas em vários computadores. O exemplo de implantação usa HTTP para o aplicativo Web. Numa implementação real, o SSL deve ser utilizado para proteger o início de sessão, o conteúdo e os tokens de autorização utilizados com o SharePoint Apps e outros serviços relacionados com o OAuth2, como Gerenciador de Fluxos de Trabalho.

Configuração de DNS

Uma vez que as coleções de sites com nome de anfitrião serão utilizadas para um ambiente do SharePoint multi-inquilino, tem de configurar o seu DNS (ou seja, criar registos DNS adequados, etc.) em conformidade com o seu plano. Para obter mais informações sobre como planear coleções de sites com nome de anfitrião para o SharePoint Server 2013, consulte Arquitetura e implementação de coleções de sites com nome de anfitrião (SharePoint 2013).

Se você também pretende oferecer suporte ao aplicativos para SharePoint, você também deve configurar o DNS para suportar o seu ambiente. Para obter mais informações sobre como configurar um ambiente de aplicações para o SharePoint Server 2013, veja Configurar um ambiente para aplicações para o SharePoint Server.

Configuração do Active Directory

Conforme descrito anteriormente, para dar suporte à multilocação no SharePoint, o Active Directory deve ser corretamente estruturado, criando uma estrutura de unidade organizacional hierárquica para suportar a sincronização de perfil de usuário para cada assinatura. Você também tem que criar contas de serviços apropriadas para o seu ambiente. Para obter mais informações sobre como planear contas de serviço para o SharePoint Server 2013, veja Planear contas administrativas e de serviço no SharePoint Server. Neste exemplo de implantação, as três contas de serviço a seguir são usadas:

  • SPFarm - a Conta do Farm do SharePoint

  • SPServices – a identidade do Conjunto Aplicacional que aloja os pontos finais da Aplicação de Serviço

  • SPContent – a identidade do Conjunto Aplicacional que aloja a Aplicação Web de Conteúdo

A criação e configuração do farm do SharePoint

O script a seguir Microsoft PowerShell mostra como criar um farm do 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!" 

Grupo de proxies, aplicativo Web de hospedagem e caminhos gerenciados

Inicialmente, é criada uma Conta Gerida para o conjunto aplicacional que aloja a aplicação Web de conteúdo. Um novo grupo de proxies é criado, seguido pelo aplicativo Web. Finalmente, a configuração do aplicativo Web para permitir a criação de site pessoal e a criação de caminhos gerenciados compartilhados é realizada. É importante criar uma coleção de sites "raiz" na aplicação Web de alojamento, mesmo que esta coleção de sites não seja acedida pelos utilizadores finais. Esta coleção de sites "raiz" é necessária para suporte e comportamento operacional correto do SharePoint 2013.

Observação

Este exemplo usa HTTP para o aplicativo 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!"

Serviços não particionados

Nesta fase, as aplicações de serviço não particionadas podem ser criadas. Estas aplicações de serviço são necessárias no farm para operações normais (por exemplo, o Serviço de Estado) ou não precisam de ser particionadas para suportar multi-inquilinos, uma vez que não armazenam dados. Para tal, é necessária outra conta gerida e, em seguida, cada aplicação de serviço é criada por sua vez.

O seguinte script do Microsoft PowerShell mostra como criar os aplicativos de serviço não particionados.

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

Criação e configuração de aplicativos de serviço particionados

As secções seguintes descrevem os procedimentos do Microsoft PowerShell necessários para criar e configurar cada aplicação de serviço que suporte a criação de partições. O mesmo padrão geral aplica-se a cada aplicação de serviço, exceto a Pesquisa e Perfis de Utilizador. No entanto, existem pequenas diferenças relacionadas aos proxies de aplicativos de serviço.

Serviço Conectividade de Dados Corporativos

O seguinte script do Microsoft PowerShell apresenta como criar o aplicativo do serviço Conectividade de Dados Corporativos no modo de partição e adicioná-lo a um grupo de proxies de serviço personalizado.

$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

Serviço de metadados gerenciados

O seguinte script do Microsoft PowerShell apresenta como criar o aplicativo de serviço de metadados gerenciados no modo de partição e adicioná-lo a um grupo de proxy de serviço personalizado.

$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

Serviço de tradução automática

O serviço de tradução automática suporta a multilocação, criando seu aplicativo de serviço no modo de partição. Não existe nenhuma configuração específica do inquilino e o serviço é gerido ao nível do farm. Seu banco de dados está atuando efetivamente como uma fila e, portanto, tem que ser habilitado à partição/locatário.

O seguinte script do Microsoft PowerShell mostra como criar o aplicativo de serviço de Tradução Automática no Modo de Partição.

$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

Serviço de repositório seguro

Uma vez configurado no modo de partição, a geração de chaves de criptografia permanece uma configuração de nível de farm realizada tanto via Administração Central ou Windows PowerShell. O restante da configuração do serviço de repositório seguro se transfere para a administração de locatário. No entanto, o modelo de site Administração de Inquilinos não inclui a ligação para esta página, que pode ser adicionada com a técnica de personalização na secção Expandir o modelo de site de Administração de Inquilinos.

O seguinte script do Microsoft PowerShell mostra como criar o aplicativo do Serviço de Repositório Seguro no modo de partição e como adicioná-lo a um grupo de proxies de serviço personalizado.

$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 

Serviço de Pesquisa

O seguinte script do Microsoft PowerShell mostra como criar o aplicativo de serviço de pesquisa no modo de partição.

Observação

O script para este aplicativo de serviço usa o parâmetro Partitioned em vez do parâmetro 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!"

Serviços de Automação do Word

O aplicativo de serviço Serviços de Automação do Word suporta o Modo de partição. Não existe nenhum cmdlet para criar um proxy.

O seguinte script do Microsoft PowerShell mostra como criar o aplicativo de serviço do Word Automation Services no Modo de Partição.

$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 

Serviço Perfil de Usuário

A criação do serviço Perfil de Usuário usando o PowerShell conforme necessário quando o provisionamento no modo particionado apresenta um desafio quando não estiver executando o Windows PowerShell como a conta do farm do SharePoint. Para contornar este desafio e para iniciar com êxito o serviço de Sincronização de Perfis de Utilizador, utilizamos o cmdlet Start-Process e simulamos a execução do script como a conta do farm.

São necessários dois scripts. O primeiro script cria a UPA e o segundo script chama o primeiro script.

O seguinte script do Microsoft PowerShell mostra como criar a aplicação Serviço de Perfis de Utilizador no Modo de Partição e adicioná-la a um grupo de Proxy de Serviço personalizado...

Observação

[!OBSERVAçãO] Este script NÃO deve ser executado diretamente, pois nesse caso será impossível iniciar a instância de serviço de Sincronização de Perfil de Usuário. Este script deve ser salvo localmente e seu local deve ser anotado.

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

O segundo script abaixo realiza o trabalho necessário para chamar o script de criação de UPA e iniciar as instâncias de serviço necessárias. A localização do script de criação de UPA deve ser atualizada na variável $upaScriptFile. Além disso, algumas permissões necessárias são definidas na 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

Configuração do gerenciamento de direitos de informação

O suporte da Gestão de Direitos de Informação para multi-inquilinos pode ser ativado através do site da Administração Central do SharePoint ou dos cmdlets atualizados do Microsoft PowerShell.

Ativar o Gerenciamento de Direitos de Informação usando o Administração Central

  1. Verifique se a conta de usuário que está executando esse procedimento é membro do grupo Administradores de Farm do SharePoint e do grupo de Administradores no computador que está executando o Administração Central.

  2. No site do Administração Central, vá para Segurança.

  3. Na página Segurança, vá para Configurar gerenciamento de direitos de informação

  4. Na página Gestão de Direitos de Informação , selecione Utilizar este Servidor RMS.

  5. Certifique-se de marcar a caixa de seleção chamada Marque esta caixa em configurações multilocatário para permitir que os locatários definam as configurações de IRM no nível do locatário.

Ativar o Gerenciamento de Direitos de Informação usando o Microsoft PowerShell

  1. Verifique se você possui as seguintes associações:
  • A função de servidor fixa securityadmin na instância do SQL Server.

  • A função de banco de dados fixa db_owner em todos os bancos de dados que devem ser atualizados.

  • Grupos de administradores no servidor no qual está a executar os cmdlets do PowerShell.

    Um administrador pode usar o cmdlet Add-SPShellAdmin para conceder permissões para usar cmdlets do SharePoint Server 2013.

    Observação

    [!OBSERVAçãO] Se você não possui permissões, entre em contato com o Administrador da configuração ou com o administrador do SQL Server para solicitar permissões. Para obter mais informações sobre as permissões do PowerShell, veja Add-SPShellAdmin.

  1. Abra o Shell de Gerenciamento do SharePoint.

  2. No prompt de comando do PowerShell, digite o seguinte comando:

Set-SPIRMSettings -IrmEnabled -UseActiveDirectoryDiscovery -SubscriptionScopeSettingsEnabled

Não há opções de configuração interna para IRM dentro do site de Administração de locatário. Para aplicar a configuração, use o cmdlet Set-SPSiteSubscriptionIRMConfig conforme mostrado no seguinte script:

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

Essa configuração é efetuada como parte do aprovisionamento de inquilinos.

Provisionamento e gerenciamento de locatários

Esta secção descreve os processos e abordagens para aprovisionar inquilinos e personalizar o ambiente multi-inquilino.

Provisionamento de locatários

Para criar um locatário, siga as etapas na tabela.

Tasks
Steps
1. Criar uma assinatura do site.
No prompt de comando do Microsoft PowerShell, digite a seguinte sintaxe:
$sub = New-SPSiteSubscription
2. Atribua um pacote de recursos para a assinatura do site e configure a OU personalizada usando o people picker.
No prompt de comando do Microsoft PowerShell, digite a seguinte sintaxe:
Set-SPSiteSubscriptionConfig -id $sub -FeaturePack $customerFeatures -UserAccountDirectoryPath "OU=$customerName,OU=Customers,DC=contoso,DC=com"
3. Crie um ou mais conjuntos de sites a serem atribuídos à assinatura do site.
No prompt de comando do Microsoft PowerShell, digite a seguinte sintaxe:
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

O seguinte script do PowerShell como criar um site de administração de locatários que usa o modelo TENANTADMIN#0. Se o inquilino estiver configurado para utilizar um Enterprise Feature Pack, o script do Microsoft PowerShell efetua mais operações, ou seja, cria a coleção Os Meus 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!"  

Esta abordagem pode ser ainda mais personalizada para conter outra configuração de inquilino, como para Fluxo de Trabalho, Aplicações e IRM. Este script é encapsulado numa função ou cmdlets personalizados, o que permite que seja executado repetidamente para futuros inquilinos.

Serviço de fluxo de trabalho

O SharePoint Server 2013 traz um grande avanço para o fluxo de trabalho, incluindo recursos corporativos, como a autoria totalmente declarativa, mensagens REST e Service Bus, escalabilidade elástica e confiabilidade de serviços gerenciados. O SharePoint 2013 pode usar um novo serviço de fluxo de trabalho compilado nos componentes da Windows Workflow Foundation do NET Framework 4.5. O novo serviço chama-se Gerenciador de Fluxos de Trabalho e foi concebido para desempenhar um papel central na empresa.

A plataforma de fluxo de trabalho do SharePoint 2013 torna-se disponível para você e suas ferramentas, somente depois que você baixar e instalar o novo serviço do gerenciador de fluxo de trabalho e configurá-lo para se comunicar com o farm do SharePoint Server 2013. Para obter mais informações sobre como instalar e configurar o Serviço Gerenciador de Fluxos de Trabalho para o SharePoint 2013, consulte Instalar e configurar o fluxo de trabalho do SharePoint Server.

Para configurar o serviço de fluxo de trabalho, use o cmdlet Register-SPWorkflowService para registrar o farm com o gerenciador de serviço de fluxo de trabalho no modo de partição. Ao efetuar este registo de farm, utilize o parâmetro SPSite para transmitir o URL de qualquer coleção de sites de inquilino existente a partir do farm e utilize o parâmetro ScopeName para definir um âmbito de fluxo de trabalho com nome para o farm.

O seguinte script do Windows PowerShell mostra como registrar o farm do SharePoint com o gerenciador de fluxo de trabalho no modo de partição.

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

Para permitir um locatário específico para o fluxo de trabalho do SharePoint, você deve configurar o proxy do serviço de fluxo de trabalho. Ao efetuar esta configuração, obtenha uma referência à coleção de sites de raiz do inquilino e registe-a com o proxy do serviço de fluxo de trabalho.

O seguinte script do Microsoft PowerShell mostra como habilitar um locatário para o Fluxo de trabalho do 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!" 

Depois de configurar o inquilino para utilizar o Fluxo de Trabalho Service Manager, poderá utilizar o SharePoint Designer para criar fluxos de trabalho com a opção Fluxo de Trabalho do SharePoint 2013, conforme mostrado no diagrama seguinte.

Este diagrama mostra a opção de Fluxo de Trabalho do SharePoint 2013 no SharePoint Designer

Estender o modelo de site de administração de locatário

Use o esquema de definição de ação personalizada para adicionar e remover links na página principal do site de administração de locatários.

A seguinte definição de funcionalidade mostra como adicionar um novo grupo, várias ligações e como remover a ligação para a página Gerir Coleções 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>

Para obter mais informações sobre ações personalizadas, como os IDs predefinidos para ligações incorporadas, veja Esquema de Definição de Ação Personalizada.

Personalizar a faixa de opções

A faixa de opções do servidor no SharePoint Server 2013 pode ser personalizada usando o XML da faixa de opções do servidor e ECMAScript (JavaScript, JScript). O XML define os controles na faixa de opções. O ECMAScript realiza ações em uma página ou em um objeto na página. Você pode usar ECMAScript que existe no modelo de objeto do SharePoint do FoundationECMAScript ou funções ECMAScript embutidas. Você também pode adicionar seu próprio ECMAScript à página e usá-lo para interagir com a faixa de opções.

Ao personalizar a faixa de opções do servidor, você pode adicionar, substituir e remover controles, grupos e guias. As personalizações da faixa de opções são definidas usando o XML da faixa de opções do servidor em um recurso e podem ser implantadas em um pacote de solução (arquivo .wsp). As personalizações da faixa de opções podem ser delimitadas para um tipo de lista específico usando os atributos RegistrationId e RegistrationType. As personalizações também podem ser delimitadas para um site ou um aplicativo Web em particular usando o atributo Scope no arquivo Feature.xml.

O XML a seguir mostra como substituir a funcionalidade do botão Cota de Disco na página Gerenciar Conjuntos 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>

Para obter mais informações sobre como personalizar o friso Servidor, consulte Personalizar o Friso do Servidor.

Estendendo uma assinatura de site usando propriedades personalizadas

O aplicativo de serviço de assinatura de site pode armazenar tanto as propriedades personalizadas administrativas quanto as propriedades personalizadas de locatário. Os tipos de propriedade suportados incluem os seguintes valores:

  • string

  • int

  • long

  • bool

  • Guid

  • DateTime

Você pode usar as propriedades personalizadas para estender a funcionalidade de gerenciamento de locatário, como o gerenciamento de cotas de locatário.

O seguinte script do PowerShell mostra como acessar as propriedades personalizadas.

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();
    }

Confira também

Conceitos

Orientação geral para hosters no SharePoint Server 2013