Sharepoint Server 2010 - .Net vs PowerShell - Listar usuarios pertenecientes a los grupos de cada site collection de una granja.

Hola a todos.

¿Qué tal estáis?

Me gustaría compartir una experiencia con vosotros. Últimamente cuando hablo con algún cliente sobre usar PowerShell para temas de administración, la mayoría se llevan las manos a la cabeza. Existe la concepción de que para usar PowerShell tienes que ser un programador de alto nivel cuando en verdad con tener unas nociones básicas de programación orientada a objetos sirve.

Hoy me gustaría mostraros una cosa tan sencilla como mostrar todos los usuarios pertenecientes a todos los grupos de cada uno de los site collections de una granja. Esta tarea se puede convertir en algo un poco grande en .NET o en una cosa muy sencilla usando PowerShell y las extensiones de SPS 2010 . (De las dos formas estamos haciendo llamadas a la API de .NET y de SPS 2010)

Y para ello un ejemplo:

/// EL SIGUIENTE CÓDIGO ES ENTREGADO “AS IS” SIN GARANTÍA POR PARTE DE SOPORTE MICROSOFT.
/// LA EJECUCIÓN DE ÉL EN VUESTRO ENTORNO ES SOLAMENTE RESPONSABILIDAD VUESTRA.
///
/// This source code is freeware and is provided on an "as is" basis without warranties of any kind,
/// whether express or implied, including without limitation warranties that the code is free of defect,
/// fit for a particular purpose or non-infringing. The entire risk as to the quality and performance of
/// the code is with the end user. MICROSOFT DO NOT SUPPORT THIS CODE.

POWERSHELL

foreach ($site in Get-SPSite){
Write-Host "************** URL Site Collection => " $site.Url "***************"
$groups= $site.RootWeb.sitegroups
foreach ($grp in $groups) {"Nombre Grupo: " + $grp.name; foreach ($user in $grp.users) {" Nombre Usuario: " + $user.name} }

.NET

La solución .NET esta adjunta al post en un rar con password calvarro . Este código funciona también en MOSS 2007 pero con la particularidad que lo tenéis que compilar en x86 en vez de x64.

Como véis para una cosa tan sencilla hemos tenido que escribir un poco más en .NET. Eso si, en el código .NET he añadido un volcado a archivo XML que lo hace más legible.

Por lo cual, os animo a experimentar con PowerShell ya que para tareas administrativas sencillas con un par de lineas nos saca del apuro y no necesitamos Visual Studio instalado en la máquina.

Espero que os haya gustado.

Un saludo a todos

Héctor Calvarro Martín. SharePoint Dev. Microsoft Support Engineer for DEV EMEA

TestUsuarios.rar