Mostrando las entradas con la etiqueta Administración SharePoint. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Administración SharePoint. Mostrar todas las entradas

viernes, 11 de noviembre de 2016

Combinación de Versiones soportadas por SharePoint Server y SQL Server Reporting Server


Es importante tener en cuenta esta información  ya que se avecina la fecha de vencimiento de soporte para SQL Server 2008 muchos clientes se están migrando a SQL Server 2012 y 2016.




La noticia importante a saber es que SharePoint Server 2013 no soportará SQL Server 2016.  Pero SharePoint 2016 si soportara SQL Server 2012/4 y 2016.

https://blogs.msdn.microsoft.com/ronalg/2016/06/13/sharepoint-20132016-and-sql-server-2016-supportability-with-ssrs-fun-facts/


SQL 2014 – n+1
SQL 2012 – n
SQL 2008 R2 – n-1
If we want to expand this list to SP 2016, we can assume we’ll support the following
SQL 201#/TBD – n+1
SQL 2016 – n
SQL 2014 w/SP1 – n-1

Ahora para SQL Server Reporting Services o SSRS es otra historia hay un mix de configuraciones que se pueden hacer.  Abajo la información:

https://msdn.microsoft.com/en-us/library/gg492257.aspx




Pienso que es importante conocer que versiones de SQL Server son soportadas por SharePoint Server.



Hasta la próxima,


Juan Manuel Herrera Ocheita

miércoles, 8 de junio de 2016

Cambios importantes en SharePoint 2016 a tomar en cuenta



SharePoint 2016 un nuevo producto nacido de la experiencia de Microsoft en mantener su solución en la nube como un servicio para millones de usuario, trae cambios importantes a tomar en cuenta especialmente para migraciones de versiones anteriores.

La dos noticias más impactantes para esta nueva versión son las siguientes:


  1. La edición gratuita SharePoint Foundation ya no estará disponible para la versión 2016 ( https://products.office.com/en-us/sharepoint/sharepoint-licensing-overview )
  2. El servicio de Excel services ya no esta disponible en ninguna edición de 2016

Para la versión Foundation Microsoft planea que utilicen un versión de prueba de su versión en la nube y se decidan los usuarios por adquirir una subscripción.  Así que para los usuarios de Foundation deberán planear su migración a la nube o bien mantener la versión del producto por mucho más tiempo.  Conozco empresas que aún tienen WSS 3.0 instalado en sus redes.

Para Excel services, Microsoft reemplazo esta funcionalidad con Office Online Server anteriormente conocido como Office Web Apps este producto permite editar los documentos de Office desde el navegador, esto es algo positivo aunque requiere de una inversión ya que es necesario instalar otro servidor con este producto Office Online Server.  Los requisitos de este producto serían los mismos para SharePoint 2016 mínimos.




Otra cosa a tomar en cuenta en la instalación de SharePoint 2016 aunque no es oficial aún es que requiere SQL Server 2014 con SP1 como mínima versión para la versión Standard y para la versión Enterprise requiere SQL Server 2016, y en Sql Server 2016 ya no hay versión BI solo Enterprise y Standard.    Así que habrá que ver si se desea utilizar la version Enterprise de SharePoint 2016 si requiere la versión Enterprise de SQL Server 2016 y no la standard. Esperaremos a la documentación oficial pero hay que tenerlo en cuenta y a la vista.




Así que amigos a prepararse para los desafíos y beneficios que nos traerá esta nueva versión de SharePoint 2016.

SharePoint4Fun!,

Juan Manuel Herrera Ocheita

martes, 31 de mayo de 2016

Exportando una biblioteca de 850 GB en SharePoint 2010

Para exportar una biblioteca de este tamaño se necesita espacio disponible mucho espacio disponible.  Alrededor de 2 TB, muy probablemente espacio de una SAN.

Lo interesante del tema es que es muy sencillo de hacerlo entre tanto se realicen los ajustes necesario para que todo funcione como un reloj suizo, es decir exacto y sincronizado.



Para esta mega tarea vamos a utilizar el comando de SharePoint Management Shell export-SPWeb. Pero antes de iniciar tenemos que realizar varias tareas de ajustes importantes para que sea un exíto el proceso.

Primero debemos de mapear el disco de red o Network Drive del File Share donde por lo menos tenemos que disponer de 2 TB por el tamaño de la biblioteca y si se preguntan cuantos elementos tiene alrededor de 265,000 archivos (imágenes y documentos).

net use z: \\ipaddress\share_folder

Luego necesitamos configurar la variable de ambiente del Sistema Operativo %Temp% para que no apunte al directorio del perfil del usuario sino al disco mapeado o Map Drive.  

Para ello abrimos la ventana de consola de línea de comando de Windows y escribimos el siguiente comando:

c:> set Temp = z:\Temp



Bueno ahora levantamos una ventana de SharePoint Management Shell y ejecutamos la siguientes líneas de comando:



net use z: \\ipaddress\share_folder


export-SPWeb -Identity http://hostname/sites/WebSite/SubWeb -ItemUrl "Nombre_Biblioteca" -IncludeUserSecurity -IncludeVersions 4 -Path "z:\MiBiblioteca.cmp" -NoFileCompression-Verbose

-Identity = La Url del subistio donde esta la biblioteca
-ItemUrl = El Nombre de la biblioteca
-IncludeUserSecurity = Incluye los permisos de la biblioteca
-IncludeVersions 4 = El Número 4 Indica todas las versiones
-Path = La ruta y el nombre del archivo donde incluirá todo el contenido migrado
-NoFileCompression = Para que solo cree un archivo y no demore 30% más del tiempo que requiere
-Verbose = Detalle de lo que esta exportando e incluyendo en el archivo

Bueno luego de esto paciencia y esperar que termine.   Para un tamaño tan grande podría demorar hasta 24 horas.

SharePoint4Fun,

Juan Manuel Herrera

jueves, 26 de mayo de 2016

Acceso denegado en la pagina de permisos para un usuario propietario o con permisos de Control Total en SharePoint

Escenario:

Se creo un sub-sitio en SharePoint, se definieron permisos exclusivos y se creo un grupo de propietarios para el sitio.  Luego se definieron permisos exclusivos en una biblioteca y por último en los permisos del sitio de configuró la solicitud de acceso;


 colocando el correo del usuario al que se le asignó la administración del sitio.



Cuando el usuario intenta ir asignar permisos a otros usuarios al sitio o a la biblioteca redirige al usuario a la página de solicitar permisos


El Problema:

Cual fue el problema en este caso.  La lista de solicitud de accesos tenia permisos exclusivos y por ello provocaba el error.

La Solución:

Esta descrita en el siguiente enlace: https://support.microsoft.com/en-us/kb/2911390

Pero basícamente hay que ir a la lista de solicitud de acceso que esta escondida.  Pueden utilizar SharePoint Designer para descubrirla o bien descubrirla desde el navegador.

En las herramientas del desarrollador F12 desde IE buscar la URL que termina con  "pendingreq.aspx." y en response body buscar el id de la lista llamada pagelistid entre corchetes copiar el GUID y luego ejecutar la página para editar la lista  https://URL of affected site or site collection>/_layouts/15/ListEdit.aspx?List=<{GUID}>.  Y luego el procedimiento acostumbrado seleccionar permisos de la lista  y seleccionar la opción Eliminar permisos exclusivos.


Y eso es todo. SharePoint4Fun!,

Juan Manuel Herrera Ocheita

viernes, 27 de noviembre de 2015

Script para saber el tamaño de una carpeta de una biblioteca en SharePoint 2010-2013

 

Esta solicitud me hicieron hace un momento y como no vi un ejemplo en especifico para esto decidi compartirlo con mis amigos lectores.

Los tres parametros que necesitamos son: url del sitio web en cuestion, el nombre de la biblioteca y el nombre de la carpeta.  Como se muestra abajo:

$urlWebSite = “http://hostname/siteurl/sub-siteurl

$nombreLibreria = "Nombre-Libreria"

$nombreCarpeta = "Nombre-Carpeta"

Luego debemos de obtener el objeto SPWeb para encontrar la bilioteca de la siguiente forma:

$web = get-SPWeb $urlWebSite

Una vez que lla obtuvimos el objeto SPWeb que representa el sitio web en SharePoint obtenemos la biblioteca con la colección Folders del objeto SPWeb, como se muestra a continuación:

$folder =  $web.Folders[$nombreLibreria]

Ahora que almacenamos en la variable $folder la bilbioteca en cuestion, necesitamos obtener la carpeta que buscamos a través de la colección SubFolerds del objeto SPFolder, de la siguiente forma:

$subfolder = $folder.SubFolders[$nombreCarpeta]

Con eso tenemos ya la ubicación deseada para iniciar el proceso de lectura de los bytes ocupados en la carpeta y sub carpetas, para ello necesitamos crear un funcion que llamemos de forma recursiva hasta que obtengamos el espacio total ocupado.

[long]$total = 0

$total = GetFolderSize($subfolder)

La función es la siguiente:

function GetFolderSize ($Folder)

{

    [long]$folderSize = 0 

    foreach ($file in $Folder.Files)

    {

        write-host "Nombre documento" $file.Name

        $folderSize += $file.Length;

        write-host "Total en bytes que va acumulando:" $folderSize

    }

    foreach ($fd in $Folder.SubFolders)

    {

        $folderSize += GetFolderSize -Folder $fd

    }

    return $folderSize

}

Lo que nos falta entonces es convertir los bytes en megas, y en gigas es es lo que hacemos a continuación:

$totalInMb = ($total/1024)/1024

$totalInMb = "{0:N2}" -f $totalInMb

$totalInGb = (($total/1024)/1024)/1024

$totalInGb = "{0:N2}" -f $totalInGb

write-host "Tamaño total de la carpeta" $StartWeb "es" $total " Bytes,"

write-host "son " $totalInMb "MB o " $totalInGb "GB"

Y ahora necesitamos indicarle a Windows que libere el recurso en memoria que ocupamos a través del objeto SPWeb la invocar el comando  $web = get-SPWeb $urlWebSite , y lo hacemos de la siguiente forma:

$web.Dispose()

Para poner todo en orden debemo de prepar un contenedor de este script en un archivo con extension .ps1, por ejemplo:

C:\>GetFolderSize.ps1

y debera contener el siguiente orden del código descripto arriba:

<!--- Begin of File –->

function GetFolderSize ($Folder)

{

    [long]$folderSize = 0 

    foreach ($file in $Folder.Files)

    {

        write-host "Nombre documento" $file.Name

        $folderSize += $file.Length;

        write-host "Total en bytes que va acumulando:" $folderSize

    }

    foreach ($fd in $Folder.SubFolders)

    {

        $folderSize += GetFolderSize -Folder $fd

    }

    return $folderSize

}

$urlWebSite = “http://hostname/siteurl/sub-siteurl

$nombreLibreria = "Nombre-Libreria"

$nombreCarpeta = "Nombre-Carpeta"

$web = get-SPWeb $urlWebSite

$folder =  $web.Folders[$nombreLibreria]

$subfolder = $folder.SubFolders[$nombreCarpeta]

$totalInMb = ($total/1024)/1024

$totalInMb = "{0:N2}" -f $totalInMb

$totalInGb = (($total/1024)/1024)/1024

$totalInGb = "{0:N2}" -f $totalInGb

write-host "Tamaño total de la carpeta" $StartWeb "es" $total " Bytes,"

write-host "son " $totalInMb "MB o " $totalInGb "GB"

$web.Dispose()

<!--- End of File –->

Y por ultimo utilizamo el Management Shell for SharePoint para ejecutar el script de la siguiente forma:

c:\>.\GetFolderSize.ps1

Eso es todo amigos.

SharePoint4Fun!,

Juan Manuel Herrera Ocheita

jueves, 15 de enero de 2015

Los roles de la autenticación por formularios pareciera no funcionar en SharePoint 2013

 

La autenticación por formularios en SharePoint existe desde la versión 2007 y es la respuesta de Microsoft para proveer otra forma de autenticación que no sea a través del Directorio Activo.  Este método de autenticación a evolucionado con las versiones más recientes de SharePoint y se ha convertido en una implementación más de la autenticación basada en reclamos permitiendo al administrador de IT o consultor de SharePoint personalizar el método de autenticación elegido de forma muy flexible.

En este artículo resolveremos el acertijo porque no funciona el rol de FBA dentro de un grupo de SharePoint y cual es la aplicación correcta.

En la imagen de abajo muestra el flujo de autenticación de una implementación por formularios.  Fundamentalmente el usuario navega a la URL del sitio de SharePoint y al momento de autenticarse es redirigido a una página aspx donde le solicita el usuario y la contraseña esta solicitud es trasladada al servicio en SharePoint para autenticar los usuarios el cual es conocido como Security Token Service o STS este valida el tipo de autenticación que en este caso es Autenticación basada en Reclamos y en una implementación de Formularios el cual conoce que su proveedor de membresía es una base de datos en SQL Server y allí valida que exista el usuario, que sea valida su contraseña y luego si es válida pasa al proceso de autorización sino lo es es rechazada la solicitud.

Forms-based authentication process

La implementación del repositorio de credenciales en la autenticación por formularios es a través de una implementación de base de datos denominada ASP.NET membership and role providers.  Dentro del esquema de base de datos se almacena los usuarios y los roles y la combinación de ambos. 

Expanded aspnetdb_claim node

Podemos concluir que los Roles es una forma de agrupar los usuarios dentro de esta implementación. 

EXEC aspnet_Roles_CreateRole 'MyAppName', 'Employee'
EXEC aspnet_Roles_CreateRole 'MyAppName', 'TeamManager'
EXEC aspnet_Roles_CreateRole 'MyAppName', 'CEO'

EXEC aspnet_UsersInRoles_AddUsersToRoles 'MyAppName', 'bob', 'Employee', 8
EXEC aspnet_UsersInRoles_AddUsersToRoles 'MyAppName', 'mary', 'TeamManager', 8
EXEC aspnet_UsersInRoles_AddUsersToRoles 'MyAppName', 'jack', 'CEO', 8
EXEC aspnet_UsersInRoles_AddUsersToRoles 'MyAppName', 'jack', 'Admin', 8

Por tanto los Roles a diferencia de los usuarios deben de aplicarse directamente a los permisos del sitio y no a otro grupo de SharePoint.  En ocasiones hemos aplicado a grupos de SharePoint y SharePoint no logra descubrir los permisos del usuario, en cambio por el otro lado si ha funcionado.


SharePoint4Fun!,


Juan Manuel Herrera Ocheita

martes, 16 de diciembre de 2014

Como configurar la topología del Servicio de Búsqueda en varios Servidores

Cuando contamos con más de 2 servidores para la granja de SharePoint Server 2013 podemos configurar un servidor para que se ocupe de algunos o todos los procesos del servicio de búsqueda y así distribuir la carga de trabajo entre los servidores de la granja de SharePoint.

Porque el servicio de búsqueda porque este en mi experiencia y en la documentación de Microsoft consume muchos recursos vea el siguiente cuadro.

Service Application

Web server CPU

Web server RAM

Application server CPU

Application server RAM

SQL Server CPU

SQL Server IOPS

SQL Server storage

SharePoint Foundation Service

XXX

XXX

 

 

XX

XXX

XXX

SharePoint Search Service

XXX

XXX

XXX

XXX

XXX

XXX

XXX

InfoPath Forms Service

XX

XX

XX

XX

X

X

X

Workflow capabilities *

XXX

XXX

 

 

 

 

 

Timer Service

XX

XX

XX

XX

 

 

 

X – Indica un costo insignificante del recurso. El servicio puede compartir el recurso con otros servicios.

XX – Indica un costo medio del recurso. El Servicio podría compartir el recurso con otros servicios con un impacto mínimo.

XXX – Indica un costo alto del recurso. El Servicio debería no compartir el recurso con otros servicios.

SharePoint Foundation Service   El servicio central de SharePoint para la colaboración de contenido. En las grandes implementaciones de SharePoint Server 2010, se recomienda asignar servidores Web redundantes basados ​​en carga prevista del tráfico, dimensionar adecuadamente las computadoras basadas en SQL Server que dan servicio a las bases de datos de contenido y asignar adecuadamente el almacenamiento basado en el tamaño de la granja.

SharePoint Search Service Application   La aplicación de servicio compartida que proporciona capacidades de indización y consulta. En general, este es un servicio relativamente intensiva de recursos, que puede escalar para servir a grandes despliegues de contenido. En 2010 implementaciones donde la búsqueda empresarial es muy importante gran SharePoint Server, le recomendamos que utilice una "granja de servicio" independiente para hospedar aplicaciones de servicio de búsqueda, con los recursos de base de datos dedicada, use múltiples servidores de aplicaciones de las funciones específicas de búsqueda de servicio (crawl o consulta), y servidores Web dedicados objetivo de las granjas de contenido para asegurar el rendimiento aceptable para el rastreo y la consulta.

Dentro de la arquitectura del Servicio de Búsqueda de SharePoint 2013 podemos elegir varias configuraciones dependiendo de nuestra necesidades.   Para ello debemos de conocer los componentes del Servicio.  La imagen a continuación nos ayudará a descubrirlo:

image

Podemos indicar que este servicio se compone de 5 componentes principales:

1) Componente de Indagación / Crawling

Este componente es responsable de indagar el contenido.  Utiliza conectores para obtener la información de las fuentes de contenido, pero no procesa ningún texto o documentos.  El resultado de la indagación es el contenido y su metadatos. Y son pasados el siguiente componente de Procesamiento de Contenido. En otras palabras este proceso prácticamente hace un inventario burdo sin procesar del contenido.

2) Componente de Procesamiento de Contenido / Content Processing

Este procesa los elementos indagados y alimenta al Componente de Índice.  Este procesa el contenido según los manejadores de formatos.  Incluye lo siguientes formatos: HTML, DOCX, PPTX, TXT, Image, XML and PDF. En 2013 aún los manejadores de formatos IFilters son soportados (el ifilter para PDF ya no es necesario instalarlo ya que esta versión ya lo incluye).  Este ordena y procesa el inventario hecho por el indagador.

3) Componente de Índice / Index

Este componente es utilizado para los procesos de alimentación y consulta.  Por un lado recibe los elementos procesados del componente de Procesamiento de Contenido para luego persistirlos en el índice. Por el otro lado recibe las consultas del componente de Procesamiento de Consulta y devuelve el conjunto de resultados solicitados. También es responsable de la ubicación del contenido indizado, según la topología se haya definido en el componente de Administración. En otras palabras este almacena el índice del contenido que se utilizará para las consultas.

4) Componente de Procesamiento de Consulta / Query Processing

Este recibe una consulta de búsqueda del Front-End y analiza y procesa la consulta.  La consulta procesada es enviada al componente de Índice. El Índice retorna el conjunto de resultados el cual procesa antes de ser devueltos al Front-End.  En otras palabras este traduce la consulta hecha por el usuario al índice y traduce los traduce de vuelta resultados retornados por el índice.

5) Componente de Procesamiento Analítico

Este rastrea y analiza los elementos indagados y como los usuarios utilizan los resultados de búsqueda, con el objetivo de mejorar de forma continua la relevancia de los resultados de la búsqueda.  Los resultados de este componente son devueltos  al componente de Procesamiento de Contenido para ser incluido en el Índice. En otras palabras este perfecciona y prioriza el ordenamiento del contenido que será almacenado en el índice.

6) Componente de Administración

Este componente es responsable por la topología del servicio y su configuración.  Este coordina los componentes de Procesamiento de Contenido, Consulta, Índice y Analítico.  En otras palabras este coordina los procesamientos de ordenamiento, priorización, índice y Consulta.

La Configuración

Utilizáremos PowerShell (Es necesario cargar en memoria las librerias de SharePoint con el comando Add-PSSnapin “Microsoft.SharePoint.PowerShell”) o el Management Shell para SharePoint (este ya incluye las librerías precargadas de SharePoint) para modificar la configuración predeterminada del servicio de búsqueda.  Es una tarea muy fácil luego de entender como funciona cada componente y la configuración que se desea.

En este escenario vamos a mover los componentes de mayor carga para los servidores el de procesamiento de Contenido, el Analítico e indagación de contenido al servidor identificado como CRAWLING-SERVER y el resto lo dejaremos en el servidor FRONT-END-SERVER que son el de procesamiento de consulta, índice y administración.

image

Primero deberemos identificar los servidores que vamos a utilizar para modificar la topología del servicio de Búsqueda.  Para ello es necesario tener instalado SharePoint en ambos servidores y que pertenezcan a la misma granja, una vez que hayamos completado con estos requerimientos.   Abrimos como administrador la ventana de Management Shell para SharePoint y ejecutamos las siguientes líneas:

$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "FRONT-END-SERVER"

$hostB = Get-SPEnterpriseSearchServiceInstance -Identity "CRAWLING-SERVER"

Start-SPEnterpriseSearchServiceInstance -Identity $hostA
Start-SPEnterpriseSearchServiceInstance -Identity $hostB

#Luego instanceamos en memoria el servicio y la topología que deseamos configurar

$ssa = Get-SPEnterpriseSearchServiceApplication

$newTopology = New-SPEnterpriseSearchTopology -SearchApplication $ssa

#Luego debemos indicar en que servidor estará cada componente

New-SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA
New-SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostA -IndexPartition 0
New-SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology -SearchServiceInstance $hostB
New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostB
New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostB

#Y por ultimo persistir esta configuración

Set-SPEnterpriseSearchTopology -Identity $newTopology

 

Problemas:

Si en caso le despliega este error:

##Set-SPEnterpriseSearchTopology : Could not connect to the HostController service on server Topology Activation could not be started.

Intente con la siguiente línea de comando

Start-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance -Identity "SERVERNAME"

En este artículo explicamos de forma muy breve los componentes de la arquitectura del servicio de búsqueda y luego como podemos distribuir estos componentes en diferentes servidores, la cual es muy sencilla gracias a PowerShell y el modelo de objetos de SharePoint que nos permite administrar estos componentes como objetos lógicos en memoria.


Eso es todo amigos hasta la próxima.


SharePoint4Fun!,


Juan Manuel Herrera Ocheita

miércoles, 12 de noviembre de 2014

Reconociendo otros dominios del directorio activo en SharePoint 2013, 2010 y 2007

El Problema

Cuando deseamos asignar permisos o tareas a usuarios de otros dominios no es posible encontrarlos en las ventanas de búsqueda de usuarios de SharePoint denominada PeoplePicker.  Qué debemos de configurar en SharePoint para que pueda realizar búsquedas en otros dominios a los predeterminados?.  Eso es lo que resolveremos en este artículo.

image

NOTA: Este artículo aplica a las versiones de 2007 a la 2013 de SharePoint tanto Services, Foundation y Server debido a que todavía se puede utilizar el comando stsadm.exe aunque en powershell esta disponible el equivalente es mucho mas sencillo utilizar el stsadm.exe.

Escenario

La granja de SharePoint esta en una Zona Desmilitarizada o DMZ y los usuarios de la intranet pertenecen a diferentes bosques o forest.  En total son 3 bosques del directorio Activo, el bosque predeterminado donde esta instalado la granja de SharePoint que denominaremos xyz.local y los otros bosques denominaremos como abc.com y fgh.local.  Como esta en una DMZ la mayoría de puertos están bloqueados entonces es necesario desbloquear los puertos que utiliza la implementación del directorio activo para su descubrimiento, el cual si es la implementación del AD predeterminado sería el puerto 389.  

Requisitos

Antes de realizar las pruebas  a través de la aplicación telnet deberemos asegurarnos que el dominios puedan resolverse desde el front-end de SharePoint ya sea por DNS o archivos host.  Para ello vamos a levantar una ventana de línea de comando y ejecutar el comando ping de la siguiente manera:

c:\>ping abc.com

c:\>ping fhg.local

Esto nos debería de responder con la ip de algún controlador de dominio que nos responda de estos dominios.

Para comprobar la comunicación en el servidor de front-end hacia estos bosques y puerto podemos realizar las siguientes pruebas por medio de la aplicación telnet.  Si la aplicación no esta disponible en el servidor puede habilitarse por medio de las características de Windows Server en la opción del Panel de control, Programas y Características.

Si ya tenemos la aplicación telnet habilitada podemos ejecutar las siguientes líneas de comando como administradores locales del servidor de front-end de SharePoint:

c:\>telnet xyz.local 389

c:\>telnet abc.com 389

c:\>telnet fgh.local 389

El resultado debería ser que la pantalla se borra y el prompt esta disponible para escribir, sino marcará un error indicando que el puerto no esta disponible o que esta cerrado.  Entonces deberá solicitarse que se abran estos para la comunicación entre dominios.

Si la implementación de los otros bosques incluyen SSL o kerberos consultar el siguiente artículo:

http://blogs.technet.com/b/wbaer/archive/2009/01/21/people-picker-port-protocol-requirements.aspx

Validaciones

Se deberá validar que estos bosques y/o dominios del directorio activo tenga relación de confianza ya sea full trust o completa o en una sola vía.   Si es una sola vía deberemos incluir las credenciales de una cuenta del dominio al que deseamos realizar la búsqueda del usuarios desde SharePoint. Si por el contrario es una relación de confianza completa o full trust entonces no es y no debemos de pasar las credenciales de usuario para que funcione.  Esto lo podemos hacer por medio de la consola administrativa Active Directory Domains and Trust.

http://technet.microsoft.com/en-us/library/cc753821.aspx

El proceso de habilitación de los otros dominios

Bueno ahora vamos a ejecutar la línea de comando stsadm.exe para ello debemos de abrir la consola de administración de SharePoint o bien dirigirnos a la siguiente ruta según la versión de SharePoint:

c:\program files\common files\microsoft shared\web server extensions\12\bin

c:\program files\common files\microsoft shared\web server extensions\14\bin

c:\program files\common files\microsoft shared\web server extensions\15\bin

12 para 2007, 14 para 2010 y 15 para 2013.

primero vamos asegurarnos que no hay ninguna ruta definida.  Para consultarla podemos ejecutar la siguiente línea de comando:

stsadm.exe –o getproperty -pn peoplepicker-searchadforests –url http://sharepoint-web-application:80

Para limpiar los valores que tenga y no sean los correctos podemos ejecutar la siguiente línea de comando

stsadm.exe –o setproperty -pn peoplepicker-searchadforests –url http://sharepoint-web-application:80 –pv “”

Ahora para registrar los bosques y dominios tanto el predeterminado como los otros deberemos ejecutar la siguiente línea de comando

stsadm.exe –o setproperty -pn peoplepicker-searchadforests –url http://sharepoint-web-application:80 –pv “forest:xyz.local;doamin:xyz.local;forest:abc.com;domain:abc.com;forest:fgh.local;domain:fgh.local”

Para relaciones de confianza de una sola vía deberemos incluir la cuenta domain admin o enterprise admin para que pueda realizar las búsquedas dentro de esos bosques.  Entonces el comando se transformaría en lo siguiente:

stsadm.exe –o setproperty -pn peoplepicker-searchadforests –url http://sharepoint-web-application:80 –pv “forest:xyz.local;doamin:xyz.local;forest:abc.com,xyz\domainadmin,password;domain:abc.com;forest:fgh.local,xyz\domainadmin,password;domain:fgh.local”

Va seperado por comas luego de definir el nombre del forest.

Y eso es todo.  En la red hay artículos que hacen referencia a una propiedad de SPSite llamada UserAccountDirectoryPath, esta bloquea más que corregir el problema asegurese que esta en blanco.  Esta es por colección de sitios y una aplicación Web puede tener “n” colecciones de sitios así que deberá ejectar el comando por cada colección de sitios de la siguiente forma, desde PowerShell de SharePoint:

Set-SPSite -Identity http://sharepoint-web-application -UserAccountDirectoryPath "”

Set-SPSite -Identity http://sharepoint-web-application\sites\rrhh -UserAccountDirectoryPath "”

Set-SPSite -Identity http://sharepoint-web-application\sites\IT -UserAccountDirectoryPath "”

Para validar si tiene algún valor puede ejecutar la siguientes líneas de comando vía powershell:

$site = Get-SPSite –Identity http://sharepoint-web-application

$site.UserAccountDirectoryPath

Este deberá devoler algún valor si lo tienen ingresado.

Los interesados en ejecutar este procedimiento en PowerShell ver el siguiente enlace:

http://xblogs.kompas-xnet.si/post/The-People-picker-and-domain-trusts.aspx

Bueno amigo con ello debería poder desde el peoplepiker o las opciones de Compartir o asignar permisos los usuarios de los otros dominios.  Esto no esta ligado con los perfiles de usuario que para ello deberá crearse una conexión para cada dominio, pero esto es otra historia para otro artículo.

SharePoint4Fun,

Juan Manuel Herrera Ocheita

sábado, 11 de octubre de 2014

Total de sub-sitios en SharePoint 2013 en una sola línea de comando con PowerShell

A veces necesitamos un comando rápido que nos de algo tan sencillo como el total de sub-sitios en SharePoint data una dirección URL en una sola línea de comando.  Abajo les muestro la línea de comando:

((Get-SPWeb “http://hostname/site1/site2”).Site).AllWebs.count

Eso es todo amigos.   Si desea algo más elaborado y que no requiera el SharePoint Management Shell sino la consola standard de PowerShell puede ser algo como le muestro abajo:

Add-PSSnapin “Microsoft.SharePoint.PowerShell” –ErrorAction SilentlyContinue

$url = Read-Host “Ingrese la URL del sitio padre: ”

((Get-SPWeb $url).Site).AllWebs.count

Eso es todo amigos fácil y rápido.

SharePoint4Fun!,

Juan Manuel Herrera Ocheita

martes, 29 de julio de 2014

Creando una aplicación web con host header en SharePoint 2013

Antes de crear cualquier aplicación Web dentro de SharePoint para manejo de contenido es recomendado planificar como vamos a organizar el contenido. Una buena guía para ello es el plan de gobernabilidad de SharePoint.  Puede iniciar leyendo el siguiente enlace: http://technet.microsoft.com/es-gt/library/ff598584(v=office.15).aspx

Un modelo sugerido para las colecciones de sitios

A veces encuentro aplicaciones web dentro de instalaciones no planficadas con puertos raros 4534 y 3452, etc.   Y esto se debe al desconocimiento del uso de Host header que nos permite utilizar el mismo puerto 80 para diferentes aplicaciones Web.  

Abajo de SharePoint tenemos el IIS que es el Servidor Web y cuando creamos una aplicación Web en SharePoint.  SharePoint crea un Sitio Web en el IIS entonces, como diferencia el IIS a que aplicación esta solicitando el usuario si utiliza el mismo puerto 80.  Bueno a través de los Host Header habrán varios sitios Web a nivel del IIS escuchando sobre el puerto 80 pero con diferente nombre ese el el host header.

En este ejemplo ya tenemos una aplicación Web creada en el puerto 80 mysite.Infocloud.com y ahora vamos a crear otra aplicación Web en el puerto 80 llamada sharepoint.infocloud.com.

Ahora para que el navegador, el IIS y SharePoint puedan resolver este nombre necesitamos ayuda de nuestro amigo el DNS Server.  Allí debemos de registrar el nombre sharepoint.infocloud.com para que el navegador de los usuarios dentro de la red y el servidor de SharePoint donde esta el IIS puedan resolver el nombre.

Paso 1:

Debemos entonces registrar en el DNS Server el nombre sharepoint.  Con una cuenta administradora de dominio podemos accesar al servidor DNS de la organización y crear un nuevo registro Host AAAA

image

image

image

Ahora desde el servidor de SharePoint probamos el nombre para ver si nos responde:

PS C:\Users\spadmin> ping sharepoint

Pinging sharepoint.INFOCLOUD.COM [212.117.213.8] with 32 bytes of data:
Reply from 212.117.213.8: bytes=32 time<1ms TTL=128
Reply from 212.117.213.8: bytes=32 time<1ms TTL=128
Reply from 212.117.213.8: bytes=32 time<1ms TTL=128
Reply from 212.117.213.8: bytes=32 time<1ms TTL=128

Ping statistics for 212.117.213.8:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
PS C:\Users\spadmin>

Listo ahora vamos a crear la aplicación Web desde SharePoint a través del CA.  Luego Application Management y luego Manage web applications.

image

Allí presionamos el botón New.  Se levantará una ventana de dialogo allí cambiamos el puerto por el 80, luego en Host header escribimos el FQDN que recién registramos, es decir: sharepoint.infocloud.com

image

Bueno y la parte de autenticación se la dejamos en NTLM standard Windows para autenticar y nos enfocamos en el grupo de aplicaciones para el IIS, sugiero sea separada a las otras y utilicemos una cuenta de dominio que no sea adminsitradora local sino solo una cuenta sin privilegios en mi caso SPWebApp.  Nombramos la base de datos por ejemplo: WSS_Content_PortalPrimario (Esto para mantener el estándar que dice que debemos colocar el prefijo WSS_Content_ para las bases de datos de contenido de SharePoint).

image

Presionamos el botón OK para que inicie la creación del sitio Web en el IIS y lo deje registrado en la base de datos de Configuración de la granja SharePoint_Config.

image

Listo cuando finaliza con éxito mostrará la siguiente imagen.

image

Y para que podamos acceder a ella necesitamos crear la estructura lógica para que tenga por lo menos una página destino donde dirigirse para atender las solicitudes de los usuarios.  Para ello presionamos la opción “Create Site Collection”, en vez de presionar el botón OK.

image

Ingresamos un título, la plantilla que para este ejemplo Team Site esta bien, porque tiene elementos básicos como Biblioteca, noticias y tareas.

Bueno para finalizar colocamos los administradores de la colección de sitios y listo podemos presionar el botón OK

image

Cuando termina recibiremos este mensaje.

image

Ahora si hacemos clic sobre el enlace ingresaremos al sitio con la dirección sharepoint.infocloud.com.  Si nos pide repetidas veces la clave es problema del Loopback que valida que si no es el nombre del hostname y tiene la misma ip no admite la dirección en el navegador desde el servidor.  Para deshabilitar esto en el registro de windows podemos hacerlo vía PowerShell, escribiendo la siguiente línea:

Windows PowerShell
Copyright (C) 2012 Microsoft Corporation. All rights reserved.

PS C:\Users\spadmin> New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa -Name "DisableLoopbackCheck" -value "1"
-PropertyType dword


DisableLoopbackCheck : 1
PSPath               : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa
PSParentPath         : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control
PSChildName          : Lsa
PSDrive              : HKLM
PSProvider           : Microsoft.PowerShell.Core\Registry

Listo intentamos de nuevo y listo ya funciona.

image[59]

Si revisamos el IIS, encontraremos dos Sitios Web que escuchan en el puerto 80 pero con diferente host header

image

Listo, hemos completado nuestra misión que era tener dos aplicaciones Web escuchando sobre el puerto 80.

Por los que preguntan y la otra aplicación Web como la accedemos… bueno luego de configurar el servicio de Perfiles de Usuario, puedes en la parte superior derecha donde aparece el login del usuario conectado acceder a esta aplicación Web como lo muestro en la imagen de abajo.

image

Bueno eso es todo por este artículo.  No olvide leer el documento Plan de Gobierno de SharePoint 2013.

SharePoint4Fun!,

Juan Manuel Herrera