Compartir a través de


Introducción a la funcionalidad de multiinquilino en SharePoint Server 2013

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

En este artículo se describen los componentes y servicios relacionados con el multiinquilino en SharePoint Server 2013 y también se proporcionan instrucciones arquitectónicas, de seguridad, operativas y de administración para ayudar a los proveedores de servicios a comprender el multiinquilino en SharePoint Server 2013 para planear, diseñar, compilar y administrar una plataforma de hospedaje multiinquilino de SharePoint Server 2013.

Nota:

Microsoft OneDrive con Viva Engage integración no funciona para aplicaciones de servicio con particiones o multiinquilino para implementaciones locales.

Antes de empezar

Introducción a la funcionalidad de multiinquilino en SharePoint Server 2013

¿Qué es la funcionalidad de multiinquilino?

Antes de presentar la funcionalidad multiinquilino en SharePoint Server 2013, debe comprender el concepto general de multiinquilino y sus características relacionadas. Comprender el multiinquilino y sus características relacionadas le ayuda a tomar las decisiones adecuadas para planear, diseñar, operar y administrar la plataforma de hospedaje multiinquilino de SharePoint Server 2013.

Multiinquilino se refiere a la capacidad de administrar y particionar datos de sitios y, de lo contrario, servicios o software compartidos para dar cabida a varios inquilinos. Esta capacidad contrasta con la ejecución de varias instancias de un servicio o la configuración de hardware independiente. En productos y tecnologías de Microsoft, los servicios multiinquilino crean un entorno de hospedaje en el que se maximizan los recursos de la granja de servidores. Antes de aprender sobre los entornos de hospedaje, es importante comprender la arquitectura de los servicios.

Principales componentes y servicios para habilitar los servicios multiinquilino en SharePoint Server 2013

Esta sección describe los principales componentes y servicios para habilitar la funcionalidad de multiinquilino en SharePoint Server 2013.

Aplicación web

Una aplicación web de SharePoint 2013 está compuesta por un sitio web de Internet Information Services (IIS) que actúa como una unidad lógica de administración y seguridad para las colecciones de sitios que se crean. Cada aplicación web está representada por un sitio web de IIS diferente que usa un grupo de aplicaciones único o compartido. Cuando se crea una aplicación web, también se crea una base de datos de contenido y se define el método de autenticación que se usará para conectarse a las bases de datos.

Colección de sitios con nombre de host

Las colecciones de sitios con nombres de host permiten asignar un nombre DNS único a las colecciones de sitios. Por ejemplo, se pueden denominar http://TeamA.contoso.com y http://TeamB.fabrikam.com. Esta aprovisionamiento le permite implementar muchos sitios que usan nombres DNS únicos en la misma aplicación web. También permite a los proveedores de servicios escalar un entorno para varios clientes. Si no usa colecciones de sitios con nombre de host, la aplicación web de SharePoint contiene muchas colecciones de sitios basadas en rutas de acceso que comparten el mismo nombre de host (nombre DNS). Por ejemplo, el equipo A tendría una colección de sitios en y el https://contoso.com/sites/teamA equipo B tendría una colección de sitios en https://fabrikam.com/sites/teamB.

Las colecciones de sitios con nombre de host son fundamentalmente la única forma de escalar para entornos multiinquilino y proporcionan la máxima flexibilidad con relación al espacio de nombres URL utilizado. Si usa sitios basados en rutas de acceso con varios inquilinos, se alcanzará rápidamente el límite de software para las rutas de acceso administradas.

Para obtener más información sobre cómo planear colecciones de sitios con nombre de host para SharePoint Server 2013, vea Arquitectura e implementación de colecciones de sitios con nombre de host (SharePoint 2013).

Grupos de servicios (grupos proxy)

Un grupo de servicios, también conocido como grupo de proxy, es un grupo de aplicaciones de servicio que se seleccionan para que una aplicación web las use.

De forma predeterminada, todas las aplicaciones de servicio se incluyen en el grupo predeterminado a menos que se especifique otro grupo en el momento que se crea la aplicación de servicio. Puede agregar y quitar aplicaciones de servicio del grupo predeterminado en cualquier momento. Al crear una aplicación web, puede seleccionar el grupo predeterminado o puede crear un grupo personalizado de servicios. Para crear un grupo personalizado de servicios, seleccione solo las aplicaciones de servicio que quiera que la aplicación web use.

Los grupos personalizados no se pueden reutilizar en varias aplicaciones web. Cada vez que selecciona "personalizado" al crear una aplicación web, solo selecciona servicios para la aplicación web que va a crear.

Proxy de servicio

Cuando se crea una aplicación de servicio, se crea al mismo tiempo un proxy para la aplicación de servicio. Un proxy es una entidad virtual que conecta las aplicaciones web con las aplicaciones de servicio. Los servidores proxy aparecen en la página Administrar aplicaciones de servicio del sitio web de Administración central de SharePoint.

Los servidores proxy se crean automáticamente si usa Administración central o el Asistente para configuración de productos de SharePoint 2016 para crear aplicaciones de servicio. Si usa Microsoft PowerShell para crear aplicaciones de servicio, los servidores proxy no siempre se crean automáticamente y deben crearse mediante Microsoft PowerShell.

Algunos servidores proxy podrían incluir opciones de configuración que se pueden cambiar. Por ejemplo, si se conecta una aplicación web con varias instancias del servicio de metadatos administrados, debe indicar qué servidores proxy están conectados a la aplicación de servicio principal que hospeda la taxonomía corporativa. Esta configuración se mueve a la configuración de nivel de inquilino cuando se usa multiinquilino.

Aplicaciones de servicio

Una aplicación de servicio es una representación lógica de un servicio determinado y su configuración de seguridad y administración, que define su comportamiento operativo. Algunos ejemplos son los metadatos administrados y los perfiles de usuario. Las diferentes aplicaciones de servicio se implementan de diferentes maneras y esta flexibilidad influirá en el diseño de soluciones multiinquilino.

Para determinar la lista de aplicaciones de servicio que están disponibles en SharePoint Server 2013 y su disponibilidad en las ediciones de SharePoint con la característica de multiinquilino, vea la sección Services and Functionalities en Información general para proveedores de servicios de hosting en SharePoint Server 2013

Paquetes de características y licencias

En SharePoint, un paquete de características es una forma de agrupar un conjunto de características con ámbito de sitio o con ámbito web. Una vez agrupadas las características de SharePoint, se pueden asociar a una suscripción de sitio (es decir, inquilino). Todas las colecciones de sitios de esa suscripción de sitio (inquilino) pueden usar solo las características del ámbito del sitio o del ámbito web que forman parte del paquete de características. Esta funcionalidad permite a los proveedores de servicio proporcionar ofertas de servicios por niveles en función de los diferentes conjuntos de características.

En SharePoint Server 2013, se ha agregado una nueva característica para asignar distintas licencias de SharePoint por usuario. También activa las comprobaciones de licencias de SharePoint en tiempo de ejecución. Esta característica proporciona más flexibilidad para que un proveedor de servicios cree ofertas de servicio diferentes a lo largo de un modelo de implementación simplificado. En las versiones anteriores de SharePoint, los proveedores de servicios tenían que crear modelos de implementación de SharePoint diferentes para cada versión de SharePoint. Para obtener más información sobre las características de SharePoint, vea la sección Disponibilidad de características de SharePoint en las soluciones locales del siguiente artículo: Descripción del servicio SharePoint.

Information Rights Management

La integración de Information Rights Management en SharePoint Server 2013 agrega compatibilidad con la funcionalidad de multiinquilino, que permite administrar la configuración de Information Rights Management en el nivel de inquilino.

Consideraciones acerca del diseño de la arquitectura

En esta sección se describen varias consideraciones para diseñar un entorno multiinquilino de SharePoint Server 2013. Como se describió anteriormente en el documento, el multiinquilino aporta algunas características únicas que se deben tener en cuenta al diseñar y diseñar el entorno de SharePoint Server 2013. Tiene que valorar estos factores según sus requisitos para tomar las decisiones apropiadas.

Descripción de los límites y las limitaciones en SharePoint Server 2013

Comprender los límites y límites de software de SharePoint Server 2013 le ayudará a tomar las decisiones adecuadas para seleccionar la arquitectura adecuada para un entorno de SharePoint multiinquilino. Para obtener más información sobre los límites y límites clave de una base de datos de contenido y una colección de sitios a medida que se aplican a un entorno multiinquilino de SharePoint Server 2013, vea Límites y límites de software para SharePoint Server 2016 y Límites y límites de software para SharePoint Server 2016.

Granja de servidores compartida frente a granja de servidores dedicada

El uso de una granja de servidores compartida para hospedar colecciones de sitios multiinquilino en una sola aplicación web proporciona una mejor escalabilidad en comparación con el uso de una aplicación web dedicada por inquilino.

Use una aplicación web dedicada y un grupo de aplicaciones por cliente solo si necesita satisfacer requisitos de aislamiento.

No permita que el código de plena confianza se implemente en sitios.

No permita personalizaciones que afecten a los recursos compartidos, como el archivo web.config.

Use colecciones de sitios con nombre de host para crear varias colecciones de sitios raíz (sitios con nombre de dominio) en una aplicación web.

Una aplicación web frente a varias aplicaciones web

Use aplicaciones web dedicadas para los inquilinos que requieren personalizaciones que afectan a los recursos compartidos en una aplicación web, como el archivo web.config.

Si se combinan varios inquilinos en una sola granja de servidores, use una aplicación web de SharePoint dedicada para todo el contenido autenticado y una aplicación web dedicada independiente para todo el contenido anónimo. Este método requiere dos identificadores de suscripciones independientes para los inquilinos con ambos tipos de contenido. Este método también simplificará las licencias.

Algunas características de SharePoint se enlazan en el nivel de aplicación web, por ejemplo, la opción para crear colecciones de sitios sin intervención del administrador. Una vez activado, todos los inquilinos de la misma aplicación web podrán crear colecciones de sitios.

Diseño de un entorno único de granja de servidores

En un entorno de hospedaje de varias organizaciones en el que los datos de inquilino y la administración están aislados, la configuración de los servicios compartidos y con particiones es importante. Este ejemplo proporciona una implementación práctica de servicios con particiones así como recomendaciones sobre cómo implementar sitios de clientes.

En este ejemplo se detallan las siguientes maneras de implementar sitios de clientes en una granja de servidores:

  • Grupo de aplicaciones dedicadas y aplicación web

  • Grupo de aplicaciones compartidas y aplicación web dedicada

  • Aplicación web compartida

    • Sitios autenticados

    • Sitios no autenticados

Use un grupo de aplicaciones dedicadas por cliente solo si necesita satisfacer requisitos de aislamiento. Use aplicaciones web dedicadas para los inquilinos que requieren personalizaciones que afectan a los recursos compartidos en una aplicación web, como el archivo web.config.

Si se combinan varios inquilinos en una sola aplicación web, use una aplicación web dedicada para todo el contenido autenticado y una aplicación web dedicada independiente para todo el contenido anónimo. Este método requiere dos identificadores de suscripciones independientes para los inquilinos con ambos tipos de contenido. Este método también simplificará las licencias.

No permita que el código de plena confianza se implemente en sitios.

No permita personalizaciones que afecten a los recursos compartidos, como el archivo web.config.

En el ejemplo siguiente (sitios autenticados), se utiliza una colección de sitios con nombre de host diferente para cada empresa. La compañía C incluye dos colecciones de sitios con nombre de host diferentes. Debajo de cada colección de sitios con nombre de host de nivel superior, se usa una ruta de acceso administrada para crear un segundo nivel de colecciones de sitios de nivel superior para sitios como sitios de equipo, Mis sitios, contenido de intranet publicado o sitios divisionales independientes.

Diseño del entorno en niveles

Como se describió anteriormente, hay muchas cosas que debe tener en cuenta al planear la plataforma de hospedaje multiinquilino de SharePoint Server 2013, entre estos factores se incluyen el costo, la administración simplificada, el aislamiento de recursos, el rendimiento y la escalabilidad.

A medida que su base de clientes crezca, puede que le resulte difícil cumplir todos los requisitos de todos los clientes en un entorno único. En ese momento, tendrá que hacer ciertas concesiones para equilibrar esos factores.

En este caso, una alternativa que quizás quiera tener en cuenta es un diseño del entorno en niveles en el que varios entornos de SharePoint cumplen las distintas necesidades de sus clientes. Cada entorno se centraría en diferentes aspectos de sus ofertas de servicios, por ejemplo, bajo costo, gran densidad, mayor aislamiento de los recursos y mejor calidad de los servicios con mayores costos, entre otros.

Este enfoque de diseño del entorno en niveles puede proporcionar diferentes acuerdos de nivel de servicio a los clientes. Como resultado, podría dar servicio a un mayor número de clientes, simplificar la administración y las operaciones, disminuir los costos de administración y aumentar los márgenes de beneficio.

Consideraciones acerca de la seguridad

En esta sección se describen varias consideraciones de seguridad para planear y diseñar una plataforma de hospedaje multiinquilino de SharePoint Server 2013. A partir de este momento, cualquier sección, como la sección Unidad organizativa (UO), que hable sobre la configuración del selector de personas solo funciona sin necesidad de personalizar más con autenticación de Windows.

SharePoint Server 2013 admite muchos métodos de autenticación y proveedores de autenticación para los siguientes tipos de autenticación:

  • Autenticación de Windows

  • Autenticación basada en formularios

  • Autenticación basada en token SAML

El tipo de autenticación de Windows aprovecha las ventajas de su proveedor de autenticación de Windows existente y los protocolos de autenticación que utiliza un entorno de dominio de Windows para validar las credenciales de conexión de clientes. autenticación de Windows métodos, que se usan tanto en la autenticación basada en notificaciones como en el modo clásico, incluyen:

  • NTLM

  • Kerberos

  • Implícita

  • Basic

La autenticación basada en formularios es un sistema de administración de identidades basado en las notificaciones que se basa en la autenticación de proveedor de pertenencia y roles ASP.NET. la autenticación basada en Forms se puede usar con las credenciales almacenadas en un proveedor de autenticación, como:

  • Servicios de dominio de Active Directory (AD DS)

  • Una base de datos como SQL Server

  • Un almacén de datos de protocolo ligero de acceso a directorios (LDAP) como Novell eDirectory, Novell Directory Services (NDS) o Sun ONE

la autenticación basada en Forms valida a los usuarios en función de las credenciales que los usuarios escriben en un formulario de inicio de sesión (normalmente una página web). Las solicitudes no autenticadas se redirigen a una página de inicio de sesión, donde un usuario debe proporcionar credenciales válidas y enviar el formulario. El sistema emite una cookie para las solicitudes autenticadas que contiene una clave para restablecer la identidad para las solicitudes posteriores.

Para usar la autenticación basada en formularios para autenticar a los usuarios en un sistema de administración de identidades que no se basa en Windows o en uno externo, debe registrar el proveedor de pertenencia y el administrador de roles en varios archivos web.config. SharePoint Server 2013 usa la interfaz estándar ASP.NET administrador de roles para recopilar información de grupo sobre el usuario actual. El proceso de autorización de SharePoint Server 2013 trata cada rol de ASP.NET como un grupo de dominios. Registre un administrador de roles en el archivo web.config tal y como registra los proveedores de pertenencia para la autenticación.

Si desea administrar los usuarios o roles de pertenencia desde el sitio web de Administración central, debe registrar el proveedor de pertenencia y el administrador de roles en el archivo web.config del sitio web de Administración central. También debe registrar el proveedor de suscripciones y el Administrador de roles en el archivo web.config de la aplicación web que hospeda el contenido y en el archivo web.config del Servicio de token de seguridad.

La autenticación basada en tokens saml en SharePoint Server 2013 usa el protocolo SAML 1.1 y el perfil de solicitante pasivo WS-Federation (PRP WS-F). Requiere coordinación con los administradores de un entorno basado en notificaciones, ya sea su propio entorno interno o un entorno de asociado. Si utiliza Active Directory Federation Services (AD FS) 2.0, tendrá un entorno de autenticación basado en un token SAML.

Para las aplicaciones web que usan la autenticación basada en notificaciones, Personas selector es un control que está disponible en SharePoint Server 2013. El control Selector de personas usa proveedores de notificaciones para enumerar, resolver, buscar y determinar la presentación "descriptiva" de usuarios, grupos y notificaciones. Para obtener más información sobre la configuración del selector de personas, consulte Personas Información general sobre los proveedores de notificaciones y selectores.

Las zonas representan diferentes rutas de acceso lógicas para obtener acceso a los mismos sitios en una aplicación web. Cada aplicación web puede incluir hasta cinco zonas. Al crear una aplicación web, Administración central crea la zona denominada Default. Para crear más zonas, amplíe la aplicación web y seleccione uno de los nombres de zona restantes: Intranet, Extranet, Internet o Personalizado.

Unidades organizativas

Las unidades organizativas (OU) organizan los objetos de usuario y equipo en el entorno de Active Directory. Con fines de hospedaje, la estructura de las unidades organizativas se podría organizar tal y como se muestra en el diagrama siguiente.

En este diagrama se muestra la estructura de unidades de la organización para un entorno de hospedaje.

Como mínimo, quiere vincular un directiva de grupo a la raíz del dominio, la unidad organizativa Controladores de dominio, la unidad organizativa servidores de SharePoint y la unidad organizativa Clientes.

Dominio raíz

La seguridad que se aplica a todo el dominio se aplica en la directiva de dominio. Estas opciones están incluidas en objetos de directiva de grupo (GPO) que se aplican a todo el dominio.

Unidad organizativa de controladores de dominio

Los controladores de dominio contienen los datos más confidenciales de la organización, los datos que controlan la propia configuración de seguridad. Los GPO que se aplican en este nivel se usan para configurar y proteger los controladores de dominio del dominio.

Unidad organizativa de servidores de SharePoint

Los servidores de SharePoint tienen un rol único que no se incluye en otros servidores del directorio. Colocar estos servidores en su propia unidad organizativa permite aplicar directivas específicas a estos servidores. También pueden separarse de otros servidores del directorio. Se pueden crear subunidades organizativas cuando hay que crear GPO diferentes (tales como servidores de contenido de acceso anónimo frente a los servidores de contenido autenticados).

Unidad organizativa de clientes

Esta unidad organizativa de nivel superior permite separar todas las cuentas de usuario del resto del directorio. El siguiente nivel de unidades organizativas contiene las unidades organizativas de clientes. Hay una unidad organizativa para cada cliente. Esta unidad organizativa permite que todas las cuentas de usuario y las cuentas de equipo de un cliente se segregan de esas cuentas de otros clientes. Además, esta estructura de unidad organizativa es la necesaria para admitir la sincronización de perfiles de usuario en implementaciones multiinquilino.

Para dar a los usuarios la impresión de que inician sesión en su propio dominio personalizado, use las interfaces de servicio de Active Directory Editor (edición adsi) u otra herramienta de AD para editar el atributo uPNSuffixes de cada unidad organizativa de cliente, como se muestra en el diagrama siguiente.

En este diagrama se muestra el cuadro de diálogo de Editor de propiedades ADSI para el atributo uPNSuffixes

Una vez configurado el atributo uPNSuffixes de una unidad organizativa de cliente, su valor está disponible para asociarse a una cuenta de usuario dentro de esa unidad organizativa de cliente, como se muestra en el diagrama siguiente.

En este diagrama se muestra el nuevo cuadro de diálogo de objeto que le permite crear un nuevo usuario.

Autenticación de usuario

La autenticación de usuario es la validación de la identidad de un usuario frente a un proveedor de autenticación, que es un directorio o una base de datos que contiene las credenciales del usuario y puede confirmar que el usuario las envió correctamente. Un ejemplo de un proveedor de autenticación es Servicios de dominio de Active Directory (AD DS). Otros nombres comunes para un proveedor de autenticación son directorio de usuarios y almacén de atributos.

Un método de autenticación es un intercambio específico de credenciales de cuenta y otra información que afirma la identidad del usuario. El resultado del método de autenticación es la prueba, normalmente en forma de un token que contiene las notificaciones, de que un proveedor de autenticación ha autenticado a un usuario.

Un tipo de autenticación es una forma específica de validar las credenciales consultando a uno o más proveedores de autenticación, a veces mediante un protocolo estándar del sector. Un tipo de autenticación puede utilizar varios métodos de autenticación.

Después de validar la identidad de un usuario, el proceso de autorización determina los sitios, el contenido y demás características a los que puede obtener acceso el usuario.

La planeación de los métodos y tipos de autenticación de usuario debe determinar los siguientes elementos:

  • Los tipos de autenticación de usuario y métodos para cada zona y aplicación web.

  • La infraestructura de autenticación necesaria para admitir los tipos y métodos de autenticación determinados.

  • Cómo migrar las zonas y aplicaciones web actuales que utilizan la autenticación de modo clásico para usar la autenticación basada en notificaciones.

Servicios de federación de Active Directory (ADFS)

SharePoint Server 2013 admite la autenticación basada en notificaciones. Servicios de federación de Active Directory (AD FS) (AD FS) se puede configurar para que actúe como servicio de token de seguridad del proveedor de identidades (IP-STS) para una aplicación web de SharePoint Server 2013. En esta configuración, AD FS emite tokens de seguridad basados en SAML compuestos por notificaciones para que los equipos cliente puedan tener acceso a las aplicaciones web que usan la autenticación basada en notificaciones. Puede usar un proveedor de identidades que sea una alternativa a AD FS. Pero debe admitir el estándar de WS-Federation. También se requiere código personalizado mediante la configuración de AD FS.

Para obtener más información sobre cómo configurar la autenticación de notificaciones basada en SAML con AD FS para SharePoint Server 2013, vea Configurar la autenticación de notificaciones basada en SAML con AD FS en SharePoint Server.

Consideraciones acerca del funcionamiento y la administración

En esta sección se describen diversas consideraciones operativas y de administración para un entorno multiinquilino de SharePoint Server 2013.

Administración de la capacidad

La administración de la capacidad es un proceso continuo, ya que ninguna implementación permanece estática con respecto al contenido y el uso. Tiene que planear el crecimiento y el cambio para que el entorno de SharePoint Server 2013 pueda seguir ofreciendo una solución empresarial eficaz. Para obtener más información sobre la administración de capacidad en SharePoint Server 2013, vea Información general sobre la administración de capacidad y el tamaño de SharePoint Server 2013.

Administración de aplicaciones

Las aplicaciones para SharePoint proporcionan un nuevo método para aportar información o características determinadas a un sitio de SharePoint. Una aplicación para SharePoint es una aplicación pequeña, fácil de usar e independiente que satisface una necesidad concreta del usuario final o de la empresa. Los propietarios de sitios pueden descubrir y descargar aplicaciones para SharePoint desde un Almacén de SharePoint público o desde el Catálogo de aplicaciones interno de su organización e instalarlos en sus sitios de SharePoint. Estas aplicaciones para SharePoint integran lo mejor de la web con SharePoint Server 2013. No reemplazan las características de SharePoint y los paquetes de soluciones, que personalizan o aumentan los sitios de SharePoint. A diferencia de las características y soluciones, que los administradores de la granja o de la colección de sitios tienen que instalar, aplicaciones para SharePoint son aplicaciones autosuficientes que los propietarios de los sitios pueden agregar a sus sitios de SharePoint. Las aplicaciones para SharePoint tienen un ciclo de vida sencillo: los propietarios del sitio pueden instalarlas, actualizarlas y desinstalarlas.

App Management Service en SharePoint Server 2013 es compatible con varios inquilinos. La mayor parte de la funcionalidad de administración y configuración de aplicaciones se expone en el sitio de administración de inquilinos y permite a cada administrador de inquilinos configurar sus propias opciones.

Crear copias de seguridad y restaurar

Al realizar operaciones de copia de seguridad y restauración independientes del inquilino en una plataforma de hospedaje multiinquilino de SharePoint Server 2013, puede seguir las instrucciones generales para realizar operaciones de copia de seguridad y restauración en entornos de SharePoint Server 2013, vea Copia de seguridad y restauración en SharePoint Server.

Observe que en SharePoint Server 2013, la plataforma flujo de trabajo es independiente de la plataforma de SharePoint. Por lo tanto, las operaciones de copia de seguridad y restauración del Administrador de flujos de trabajo tienen que estar coordinadas con las operaciones de copia de seguridad y restauración de SharePoint para garantizar que ambas permanecen sincronizadas entre sí. Para obtener más información sobre cómo planear operaciones de copia de seguridad y restauración para Service Manager de flujo de trabajo, consulte Recuperación ante desastres y Restauración de ámbito en Administrador de flujos de trabajo 1.0

Al realizar operaciones de copia de seguridad y restauración específicas del inquilino en una plataforma de hospedaje multiinquilino de SharePoint Server 2013, es posible que tenga que mantener sincronizados los siguientes componentes compatibles con inquilinos: aplicaciones de servicio, flujo de trabajo, bases de datos de contenido y colecciones de sitios.

Aplicaciones de servicio

Las aplicaciones de servicio que están configuradas en modo de partición tienen una o más bases de datos asociadas que contienen datos específicos del inquilino. Aunque puede realizar operaciones generales de copia de seguridad y restauración en estas aplicaciones de servicio tanto en el nivel de aplicación como de base de datos, hay comandos limitados para realizar operaciones detalladas de copia de seguridad y restauración específicas del inquilino en estas aplicaciones de servicios y sus bases de datos.

Consideraciones acerca de las aplicaciones de servicio

Servicio de administración de aplicaciones

App Management Service es la aplicación de servicio que se usa para administrar la característica de aplicación para SharePoint que se introduce en SharePoint Server 2013. Las aplicaciones para SharePoint proporcionan un nuevo método para aportar información o características determinadas a un sitio de SharePoint. Una aplicación para SharePoint es una aplicación pequeña, fácil de usar e independiente que satisface una necesidad concreta del usuario final o de la empresa. App Management Service no admite el modo de partición, pero es compatible de forma nativa con la suscripción de sitio. En el entorno multiinquilino de SharePoint, la mayor parte de la funcionalidad de administración de aplicaciones (es decir, Administrar catálogo de aplicaciones, Administrar licencias de aplicación, Permisos de aplicación, etc.) se obtiene mediante el sitio de administración de inquilinos.

El diagrama siguiente muestra Administración de aplicaciones en el Sitio de administración de inquilinos.

En el diagrama se muestra el sitio de administración de inquilinos para App Management.

Servicio de conectividad a datos empresariales

Una vez configurada en el modo de partición, toda la configuración del servicio de conectividad a datos empresariales se mueve a la administración de inquilinos. Sin embargo, la plantilla de sitio Administración de inquilinos no incluye el vínculo a esta página, que se puede agregar mediante la técnica de personalización en la sección Extensión de la plantilla de sitio administración de inquilinos

Servicio de almacenamiento seguro

Una vez configurada en el modo de partición, la generación de claves de cifrado continúa siendo una configuración de nivel de granja que se realiza mediante Administración Central o Windows PowerShell. El resto de la configuración del servicio de almacenamiento seguro se mueve a la administración de inquilinos. Sin embargo, la plantilla de sitio Administración de inquilinos no incluye el vínculo a esta página, que se puede agregar mediante la técnica de personalización en la sección Extensión de la plantilla de sitio Administración de inquilinos.

Servicio de metadatos administrados

Una vez configurada en el modo de partición, toda la configuración se mueve a la administración de inquilinos y publicación del tipo de contenido se habilita de forma predeterminada.

Servicio de búsqueda

Muchas funciones relativas a la configuración de la búsqueda específica de inquilinos se exponen en el sitio Administración de inquilinos, como muestra el diagrama siguiente.

En este diagrama se muestran las características de administración de búsqueda que se encuentran en el sitio administración de inquilinos.

Nota:

Muchos de los *. Los cmdlets de Microsoft PowerShell de EnterpriseSearch* ahora son compatibles con particiones y se pueden usar para automatizar algunas funciones de configuración y administración expuestas en el sitio administración de inquilinos.

Servicio de Perfil de usuario

Un gran número de elementos de configuración se mueven a la administración de inquilinos, aunque mucha de la configuración de la sincronización de perfiles permanece en el nivel de granja y se aplicable a todos los inquilinos, tal y como se ilustra en la figura siguiente.

En esta ilustración se muestra la configuración del perfil de usuario.

Flujo de trabajo

Como se indicó anteriormente, en SharePoint Server 2013 la plataforma flujo de trabajo es independiente de la plataforma de SharePoint. La plataforma de flujo de trabajo usa una o varias bases de datos. Aunque puede realizar operaciones generales de copia de seguridad y restauración en el nivel de base de datos en estas bases de datos, no hay comandos ni utilidades para realizar operaciones detalladas de copia de seguridad y restauración específicas de los inquilinos en estas bases de datos de flujo de trabajo.

Bases de datos de contenido

Si un inquilino tiene el uso exclusivo de una o más bases de datos dedicadas, puede realizar operaciones generales de copia de seguridad y restauración en el nivel de base de datos en estas bases de datos.

Nota:

Tener un uso exclusivo de una o más bases de datos dedicadas no puede lograrse usando características de producto estándar, por ejemplo, la creación de sitios sin intervención del administrador. Este es un ejemplo de dónde es necesaria la personalización para satisfacer una oferta de nivel de servicio determinada.

El siguiente script de Microsoft PowerShell muestra cómo realizar una acción de copia de seguridad inicial en una base de datos de contenido de inquilino.

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

Colecciones de sitios

Puede realizar operaciones específicas de copia de seguridad y restauración en una colección de sitios de inquilino. La herramienta que elija usar dependerá del tamaño de la colección de sitios. Los cmdlets de Microsoft PowerShell son una opción adecuada para colecciones de sitios de tamaño pequeño a mediano.

El siguiente script de Microsoft PowerShell muestra cómo realizar una acción de copia de seguridad en una colección de sitios de inquilino.

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

Supervisión

Hay muchas herramientas que le permiten supervisar SharePoint Server 2013 y solucionar problemas. Las distintas herramientas tratan los diversos aspectos del entorno, aunque puede haber áreas que se superpongan. Considere qué herramientas pueden maximizar sus beneficios de supervisión. Para obtener más información sobre cómo planear la supervisión para SharePoint Server 2013, vea Planear la supervisión en SharePoint Server.

Administración de paquetes de características

Como se describió anteriormente, puede utilizarse un paquete de características para agrupar diferentes características y asociarlas con una suscripción de sitio (es decir, el inquilino). Todas las colecciones de sitios de la suscripción de sitio (inquilino) pueden usar solo las características con ámbito de sitio o con ámbito web que forman parte del paquete de características. Esta funcionalidad permite a los proveedores de servicio proporcionar ofertas de servicios por niveles en función de los diferentes conjuntos de características. Los paquetes de características se crean usando el cmdlet New-SPSiteSubscriptionFeaturePack para crear el contenedor del paquete de características y el cmdlet Add-SPSiteSubscriptionFeaturePackMember para agregar cada característica al contenedor.

El siguiente script de Microsoft PowerShell muestra cómo crear un paquete de características de nivel de inquilino que representa características de SharePoint Foundation 2013 y almacena el identificador del Feature Pack en el contenedor de propiedades de la granja.

Nota:

La aplicación de servicio de configuración de la suscripción debe estar presente antes de ejecutar scripts que funcionan con paquetes de características.

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

Administración de licencias

En SharePoint Server 2013, se agregó una nueva funcionalidad de administración de licencias. Ahora, los administradores de la granja de servidores pueden asignar licencias a los usuarios y habilitar comprobaciones de licencias en tiempo de ejecución. Con esta nueva funcionalidad, se asegura de que solo los usuarios con la licencia correspondiente puedan usar una característica determinada. La funcionalidad también simplifica el modelo de implementación porque ya no tiene que crear granjas de servidores independientes para las ediciones estándar y enterprise de SharePoint Server.

Las licencias de usuario se asignan mediante la asignación de notificaciones a un tipo conocido de licencia. Por ejemplo, una notificación puede ser un grupo de seguridad de servicios de dominio de Active Directory (AD DS). Al asignar el grupo de seguridad ContosoFinanceDept a una licencia Enterprise, se asigna de forma eficaz una licencia Enterprise a todos los miembros de ese grupo. A los usuarios que inician sesión en SharePoint Server se les asignan notificaciones. SharePoint Server examina las notificaciones de los usuarios para determinar su licencia; si un usuario no tiene una licencia para usar una característica determinada, SharePoint bloquea el acceso a esa característica en tiempo de ejecución.

Esta implementación de licencias de SharePoint Server 2013 se administra mediante nuevos cmdlets de Microsoft PowerShell. De forma predeterminada, las licencias se han deshabilitado en SharePoint Server. Sin embargo, los administradores pueden optar por activarlo mediante Microsoft PowerShell. Para obtener más información sobre cómo configurar licencias en SharePoint Server 2013, vea Configurar licencias en SharePoint Server.

Administración del ciclo de vida

Aunque en este documento técnico se describen las consideraciones clave de infraestructura al diseñar una solución multiinquilino de SharePoint 2013 y se proporcionan scripts de línea base para la configuración, la administración general del ciclo de vida de las operaciones es imperativa. Por ejemplo, la administración personalizada de inquilinos, la desaprovisionamiento de suscripciones, el archivado, la administración de usuarios, el autoservicio de restablecimiento de contraseña y las cuotas son áreas comunes que requieren alguna combinación de más Windows PowerShell y esfuerzo de personalización para ofrecer una oferta de servicio completa. Cada proveedor de servicios tiene requisitos diferentes en este ámbito y es increíblemente importante asegurarse de que estos requisitos forman parte del trabajo inicial de ámbito y diseño para la plataforma de infraestructura.

Instalación y configuración

En esta sección se describen los pasos generales para configurar y configurar una plataforma de hospedaje multiinquilino de SharePoint Server 2013.

Reconocimientos

En esta sección se proporcionan detalles y se incluyen scripts de PowerShell que muestran la creación y configuración de varios componentes. Estos scripts se proporcionan para mostrar los requisitos de configuración para varios inquilinos y, por lo tanto, no representan el orden de aprovisionamiento óptimo, pero pueden servir como base para desarrollar su propia solución de scripting de un extremo a otro personalizada.

Los scripts de Microsoft PowerShell contenidos en las subsecciones siguientes se basan (total o parcialmente) en el trabajo de Spencer Harbar (http://www.harbar.net) y se reproducen aquí con su amable consentimiento. Para obtener más información sobre la obra original de Spencer Harbar, consulte los siguientes documentos:

Los scripts de PowerShell proporcionados incluyen variables que se deben modificar para adaptarse a su entorno.

Ejemplo de implementación

En esta sección se presenta un ejemplo de implementación que usa una sola aplicación web de hospedaje mediante colecciones de sitios con nombre de host y rutas de acceso administradas de encabezado de host. Se implementa en un único servidor por motivos de simplicidad. Este ejemplo de implementación es el modelo de diseño previsto para varios inquilinos con SharePoint 2013 y se puede ampliar a una implementación donde los roles de instancia de servicio se articulan entre varios equipos. El ejemplo de implementación usa HTTP para la aplicación web. En una implementación real, SSL debe usarse para proteger el inicio de sesión, el contenido y los tokens de autorización que se usan con Aplicaciones de SharePoint y otros servicios relacionados con OAuth2, como Administrador de flujos de trabajo.

Configuración de DNS

Dado que las colecciones de sitios con nombre de host se usarán para un entorno de SharePoint multiinquilino, debe configurar el DNS (es decir, crear los registros DNS adecuados, etc.) en función del plan. Para obtener más información sobre cómo planear colecciones de sitios con nombre de host para SharePoint Server 2013, vea Arquitectura e implementación de colecciones de sitios con nombre de host (SharePoint 2013).

Si también tiene previsto admitir aplicaciones para SharePoint, también debe configurar DNS para admitir su entorno. Para obtener más información sobre cómo configurar un entorno de aplicaciones para SharePoint Server 2013, vea Configurar un entorno para aplicaciones para SharePoint Server.

Configuración de Active Directory

Como se describió anteriormente, para admitir la funcionalidad de multiinquilino en SharePoint, Active Directory debe estructurarse correctamente mediante la creación de una estructura jerárquica de unidades organizativas para permitir la sincronización de perfiles de usuario en cada suscripción. También debe crear las cuentas de servicio adecuadas para su entorno. Para obtener más información sobre cómo planear cuentas de servicio para SharePoint Server 2013, vea Planear cuentas administrativas y de servicio en SharePoint Server. En este ejemplo de implementación, se usan las siguientes tres cuentas de servicio:

  • SPFarm : la cuenta de granja de servidores de SharePoint

  • SPServices : la identidad del grupo de aplicaciones que hospeda los puntos de conexión de la aplicación de servicio

  • SPContent : la identidad del grupo de aplicaciones que hospeda la aplicación web de contenido

Creación y configuración de la granja de servidores de SharePoint

El siguiente script de Microsoft PowerShell muestra cómo crear una granja de servidores de 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 proxy, aplicación web de hospedaje y rutas de acceso administradas

Inicialmente, se crea una cuenta administrada para el grupo de aplicaciones que hospeda la aplicación web de contenido. Se crea un nuevo grupo de proxy, seguido de la aplicación web. Por último, se realiza la configuración de la aplicación web para permitir la creación de sitios sin intervención del administrador y la creación de rutas de acceso administradas compartidas. Es importante crear una colección de sitios "raíz" en la aplicación web de hospedaje aunque los usuarios finales no tengan acceso a esta colección de sitios. Esta colección de sitios "raíz" es necesaria para la compatibilidad y el comportamiento operativo correcto de SharePoint 2013.

Nota:

En este ejemplo se utiliza HTTP para la aplicación 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!"

Servicios sin particiones

En esta fase, se pueden crear las aplicaciones de servicio sin particiones. Estas aplicaciones de servicio son necesarias en la granja de servidores para operaciones normales (por ejemplo, el servicio de estado) o no requieren particiones para admitir multiinquilino, ya que no almacenan datos. Para ello, se requiere otra cuenta administrada y, a su vez, se crea cada aplicación de servicio.

El siguiente script de Microsoft PowerShell muestra cómo crear las aplicaciones de servicio sin particiones.

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

Creación y configuración de aplicaciones de servicio con particiones

En las secciones siguientes se describen los procedimientos de Microsoft PowerShell necesarios para crear y configurar cada aplicación de servicio que admite la creación de particiones. El mismo patrón general se aplica a cada aplicación de servicio, excepto a los perfiles de usuario y de búsqueda. Sin embargo, hay pequeñas diferencias respecto a los servidores proxy de aplicación de servicio.

Servicio de conectividad a datos empresariales

El siguiente script de Microsoft PowerShell muestra cómo crear la aplicación de servicio de conectividad a datos profesionales en modo de partición y agregarla a un grupo de Proxy de servicio 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

Servicio de metadatos administrados

El siguiente script de Microsoft PowerShell muestra cómo crear la aplicación de servicio de metadatos administrados en modo de partición y agregarla a un grupo de Proxy de servicio 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

Servicio de traducción automática

El servicio de traducción automática admite la funcionalidad de multiinquilino mediante la creación de su aplicación de servicio de modo de partición. No hay ninguna configuración específica del inquilino y el servicio se administra en el nivel de granja de servidores. Su base de datos actúa de forma eficaz como una cola y, por lo tanto, tiene que ser compatible con particiones e inquilinos.

El siguiente script de Microsoft PowerShell muestra cómo crear la aplicación de servicio de traducción automática en modo de partición.

$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

Servicio de almacenamiento seguro

Una vez configurada en el modo de partición, la generación de claves de cifrado continúa siendo una configuración de nivel de granja que se realiza mediante Administración Central o Windows PowerShell. El resto de la configuración del servicio de almacenamiento seguro se mueve a la administración de inquilinos. Sin embargo, la plantilla de sitio Administración de inquilinos no incluye el vínculo a esta página, que se puede agregar mediante la técnica de personalización en la sección Extensión de la plantilla de sitio Administración de inquilinos.

El siguiente script de Microsoft PowerShell muestra cómo crear la aplicación servicio de almacenamiento seguro en modo de partición y agregarla a un grupo de Proxy de servicio 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 

Servicio de búsqueda

El siguiente script de Microsoft PowerShell muestra cómo crear la aplicación servicio Search en modo de partición.

Nota:

El script para esta aplicación de servicio usa el parámetro Partitioned en lugar del 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!"

Word Automation Services

La aplicación de servicio Word Automation Services admite el modo de partición. No hay ningún cmdlet para crear un proxy.

El siguiente script de Microsoft PowerShell muestra cómo crear la aplicación de servicio Word Automation Services en modo de partición.

$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 

Servicio de perfiles de usuario

La creación del servicio de perfiles de usuario mediante PowerShell según sea necesario al aprovisionar en modo con particiones presenta un desafío al no ejecutar la Windows PowerShell como cuenta de la granja de servidores de SharePoint. Para solucionar este desafío y para iniciar correctamente el servicio de sincronización de perfiles de usuario, usamos el cmdlet Start-Process y simulamos la ejecución del script como la cuenta de la granja de servidores.

Se requieren dos scripts. El primer script crea el UPA y el segundo llama al primer script.

El siguiente script de Microsoft PowerShell muestra cómo crear la aplicación servicio de perfiles de usuario en modo de partición y agregarla a un grupo personalizado de Proxy de servicio...

Nota:

Este script NOT debe ejecutarse directamente; si lo hace, no se podrá iniciar la instancia del servicio de sincronización de perfiles de usuario. Este script debe guardarse localmente y anotar su ubicación.

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

El segundo script siguiente realiza el trabajo necesario para llamar al script de creación de la UPA e iniciar las instancias de servicio necesarias. La ubicación del script de creación de la UPA se debe actualizar en la variable $upaScriptFile . Además, algunos permisos necesarios se establecen en el 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

Configuración de Information Rights Management

La compatibilidad con Information Rights Management para varios inquilinos se puede activar mediante el sitio web de Administración central de SharePoint o los cmdlets de Microsoft PowerShell actualizados.

Activar Information Rights Management mediante Administración central

  1. Compruebe que la cuenta de usuario que realiza este procedimiento es miembro del grupo Administradores de la granja de servidores de SharePoint y del grupo Administradores en el equipo que ejecuta Administración central.

  2. En el sitio web de Administración central, vaya a Seguridad.

  3. En la página Seguridad, vaya a Configurar Information Rights Management

  4. En la página Information Rights Management , seleccione Usar este servidor RMS.

  5. Asegúrese de activar la casilla Marque esta casilla en las configuraciones de varios inquilinos para que los inquilinos puedan configurar IRM en el nivel de inquilino.

Activar Information Rights Management mediante Microsoft PowerShell

  1. Compruebe que cumple con las pertenencias siguientes:
  • Rol fijo de servidor securityadmin en la instancia de SQL Server.

  • Rol fijo de base de datos db_owner en todas las bases de datos que se van a cargar.

  • Los administradores se agrupan en el servidor en el que se ejecutan los cmdlets de PowerShell.

    Un administrador puede usar el cmdlet Add-SPShellAdmin para conceder permisos de uso de cmdlets de SharePoint Server 2013.

    Nota:

    Si no dispone de permisos, póngase en contacto con el administrador para la instalación o con el administrador de SQL Server para solicitarlos. Para obtener más información sobre los permisos de PowerShell, consulte Add-SPShellAdmin.

  1. Abra el Shell de administración de SharePoint.

  2. En el símbolo del sistema de PowerShell, escriba el comando siguiente:

Set-SPIRMSettings -IrmEnabled -UseActiveDirectoryDiscovery -SubscriptionScopeSettingsEnabled

No hay opciones de configuración integradas para IRM en el sitio Administración de inquilinos. Para aplicar la configuración, use el cmdlet Set-SPSiteSubscriptionIRMConfig tal y como se muestra en el script siguiente:

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

Esta configuración se realiza como parte del aprovisionamiento de inquilinos.

Aprovisionamiento y administración de inquilinos

En esta sección se describen los procesos y enfoques para aprovisionar inquilinos y personalizar el entorno multiinquilino.

Aprovisionamiento de inquilinos

Para crear un inquilino, siga los pasos descritos en la tabla.

Tasks
Pasos
1. Crear una suscripción de sitio.
En el símbolo del sistema de Microsoft PowerShell, escriba la sintaxis siguiente:
$sub = New-SPSiteSubscription
2. Asignar un paquete de características a la suscripción de sitio y configurar una unidad organizativa personalizada mediante el selector de personas.
En el símbolo del sistema de Microsoft PowerShell, escriba la sintaxis siguiente:
Set-SPSiteSubscriptionConfig -id $sub -FeaturePack $customerFeatures -UserAccountDirectoryPath "OU=$customerName,OU=Customers,DC=contoso,DC=com"
3. Crear una o más colecciones de sitios que se asignará a la suscripción de sitio.
En el símbolo del sistema de Microsoft PowerShell, escriba la sintaxis siguiente:
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

El siguiente script de PowerShell muestra cómo crear un sitio de administración de inquilinos que usa la plantilla TENANTADMIN#0 . Si el inquilino está configurado para usar un Enterprise Feature Pack, el script de Microsoft PowerShell realiza más operaciones, es decir, crea la colección Mis sitios.

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

Este enfoque se puede personalizar aún más para contener otra configuración de inquilino, como Para flujo de trabajo, Aplicaciones e IRM. Este script se encapsula en una función o cmdlets personalizados, lo que permite ejecutarlo repetidamente para futuros inquilinos.

Servicio de flujo de trabajo

SharePoint Server 2013 supone una gran ventaja para los flujos de trabajo, que incluye características empresariales como la autoría totalmente declarativa, mensajería REST y Service Bus, escalabilidad elástica y confiabilidad de los servicios administrados. SharePoint Server 2013 puede usar un nuevo servicio de flujo de trabajo integrado en los componentes de Windows Workflow Foundation de .NET Framework 4.5. El nuevo servicio se denomina Administrador de flujos de trabajo y está diseñado para desempeñar un papel central en la empresa.

La plataforma de flujo de trabajo de SharePoint 2013 solo está disponible después de descargar e instalar el nuevo servicio Administrador de flujos de trabajo y configurarlo para que se comunique con la granja de servidores de SharePoint Server 2013. Para obtener más información sobre cómo instalar y configurar el servicio de Administrador de flujos de trabajo para SharePoint 2013, vea Instalar y configurar el flujo de trabajo para SharePoint Server.

Para configurar el servicio de flujos de trabajo, use el cmdlet Register-SPWorkflowService para registrar la granja de servidores con Workflow Service Manager en el modo de partición. Al realizar este registro de granja de servidores, use el parámetro SPSite para pasar la dirección URL de cualquier colección de sitios de inquilino existente de la granja de servidores y use el parámetro ScopeName para definir un ámbito de flujo de trabajo con nombre para la granja de servidores.

El script de Windows PowerShell siguiente muestra cómo registrar la granja de servidores de SharePoint con Workflow Service Manager en el modo de partición.

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 habilitar un inquilino específico para el flujo de trabajo de SharePoint, debe configurar el proxy del servicio de flujos de trabajo. Al realizar esta configuración, obtenga una referencia a la colección de sitios raíz del inquilino y regístrela con el proxy del servicio de flujo de trabajo.

El siguiente script de PowerShell muestra cómo habilitar un inquilino para el flujo de trabajo de 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!" 

Una vez configurado el inquilino para usar Service Manager de flujo de trabajo, podrá usar SharePoint Designer para crear flujos de trabajo mediante la opción Flujo de trabajo de SharePoint 2013, como se muestra en el diagrama siguiente.

En este diagrama se muestra la opción Flujo de trabajo de SharePoint 2013 en SharePoint Designer

Ampliar la plantilla de sitio Administración de inquilinos

Use el esquema de definición de acciones personalizadas para agregar y quitar vínculos de la página principal del sitio Administración de inquilinos.

En la siguiente definición de características se muestra cómo agregar un nuevo grupo, varios vínculos y cómo quitar el vínculo a la página Administrar colecciones de sitios.

<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 obtener más información sobre las acciones personalizadas, como los identificadores predeterminados para vínculos integrados, vea Esquema de definición de acción personalizada.

Personalizar la cinta

La cinta server en SharePoint Server 2013 se puede personalizar mediante EL XML de la cinta de servidor y ECMAScript (JavaScript, JScript). XML define los controles de la cinta. ECMAScript realiza acciones en una página o en un objeto de la página. Puede usar el código ECMAScript que existe en el modelo de objetos FoundationECMAScript de SharePoint o las funciones de ECMAScript integradas. También puede agregar su propio ECMAScript a la página y usarlo para interactuar con la cinta.

Al personalizar la cinta de Server, puede agregar, reemplazar y eliminar controles, grupos y pestañas. Las personalizaciones de la cinta se definen mediante el XML de la cinta de Server de una característica y se pueden implementar en un paquete de solución (archivo .wsp). El ámbito de las personalizaciones de la cinta se puede establecer en un tipo de lista determinado mediante los atributos RegistrationId y RegistrationType . El ámbito de las personalizaciones también se puede establecer en un sitio o en una aplicación web concreta mediante el atributo Scope en el archivo Feature.xml.

El código XML siguiente muestra cómo reemplazar la funcionalidad del botón Cuota de disco en la página Administrar colecciones de sitios.

<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 obtener más información sobre cómo personalizar la cinta servidor, consulte Personalización de la cinta de opciones del servidor.

Ampliar una suscripción de sitio mediante propiedades personalizadas

La aplicación de servicio de suscripción de sitio puede almacenar tanto propiedades personalizadas administrativas como propiedades personalizadas de inquilino. Los tipos de propiedades admitidos incluyen los valores siguientes:

  • string

  • Entero

  • largo

  • bool

  • Guid

  • DateTime

Puede usar propiedades personalizadas para ampliar la funcionalidad de administración de inquilinos, como la administración de la cuota de inquilinos.

El siguiente script de PowerShell muestra cómo acceder a las propiedades 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();
    }

Recursos adicionales

Conceptos

Instrucciones generales para proveedores de servicios de hosting en SharePoint Server 2013