Usar powershell para listar propietarios de sitios de SharePoint: errores que se deben evitar
🔍 WiseChecker

Usar powershell para listar propietarios de sitios de SharePoint: errores que se deben evitar

Necesita encontrar todos los propietarios de sitios en su entorno de SharePoint para una auditoría o tarea de limpieza. PowerShell es la forma más rápida de extraer estos datos, pero ejecutar el comando incorrecto u omitir un parámetro puede darle resultados incompletos o errores. Este artículo explica los errores comunes al usar PowerShell para listar propietarios de sitios de SharePoint y cómo escribir el script correcto en todo momento.

Puntos clave: Evite estos errores de PowerShell para informes de propietarios de SharePoint

  • Connect-SPOService -Url: Use la URL del centro de administración de SharePoint, no una URL de colección de sitios, para establecer la sesión correcta.
  • Get-SPOSite -Limit All: Sin el parámetro Limit, el cmdlet devuelve solo los primeros 200 sitios, omitiendo muchos propietarios.
  • Propiedad $_.Owner vs. $_.SiteOwner: La propiedad Owner es el administrador principal de la colección de sitios; la propiedad SiteOwner es el propietario del grupo para sitios conectados a grupos.

ADVERTISEMENT

Por qué las listas de propietarios de PowerShell pueden ser incorrectas

SharePoint Online almacena la información del propietario del sitio en dos lugares separados. Una colección de sitios tiene un administrador principal de la colección de sitios almacenado en la propiedad Owner. Un sitio de equipo conectado a un grupo de Microsoft 365 tiene un propietario de grupo adicional almacenado en la propiedad SiteOwner. Cuando ejecuta un script de PowerShell sin comprender esta división, puede listar solo el administrador principal y omitir los propietarios del grupo que tienen control total. Otra causa común de listas incompletas es el límite de página predeterminado de 200 sitios en el cmdlet Get-SPOSite. Si su inquilino tiene más de 200 sitios, el script se detiene antes y omite el resto. Los errores descritos en este artículo se derivan de no leer la documentación de SharePoint Online Management Shell para estos parámetros y propiedades específicos.

Script de PowerShell correcto para listar todos los propietarios de sitios

Antes de ejecutar cualquier script, instale SharePoint Online Management Shell y conéctese a su inquilino. Abra Windows PowerShell como administrador y ejecute los siguientes comandos.

  1. Instalar SharePoint Online Management Shell
    Ejecute Install-Module -Name Microsoft.Online.SharePoint.PowerShell y confirme la instalación. Este módulo contiene todos los cmdlets que necesita.
  2. Conectar a SharePoint Online
    Ejecute Connect-SPOService -Url https://yourtenant-admin.sharepoint.com. Reemplace la URL con la URL del centro de administración de su inquilino, no con una URL de colección de sitios. Se le solicitarán credenciales de administrador global o administrador de SharePoint.
  3. Recuperar todos los sitios con propietarios
    Ejecute $sites = Get-SPOSite -Limit All -IncludeOwnerSiteOwner. El parámetro -Limit All elimina el límite predeterminado de 200 sitios. El parámetro -IncludeOwnerSiteOwner asegura que el cmdlet devuelva tanto el administrador principal como el propietario del grupo para cada sitio.
  4. Exportar los datos del propietario a un archivo CSV
    Ejecute el siguiente script para crear un informe limpio:
    $report = @()
    foreach ($site in $sites) {
    $report += [PSCustomObject]@{
    SiteUrl = $site.Url
    PrimaryAdmin = $site.Owner.Email
    GroupOwner = $site.SiteOwner.Email
    LastContentModifiedDate = $site.LastContentModifiedDate
    }
    }
    $report | Export-Csv -Path C:\Reports\SiteOwners.csv -NoTypeInformation

Después de que finalice el script, abra el archivo CSV en Excel. Verá cada sitio en su inquilino con el correo electrónico del administrador principal en una columna y el correo electrónico del propietario del grupo en otra. Si un sitio no tiene propietario de grupo, la celda GroupOwner estará vacía. Esto es esperado para sitios clásicos o sitios de comunicación.

ADVERTISEMENT

Errores comunes y cómo solucionarlos

Usar la URL de conexión incorrecta

Un error frecuente es conectarse a una URL de colección de sitios como https://yourtenant.sharepoint.com/sites/marketing en lugar de la URL del centro de administración https://yourtenant-admin.sharepoint.com. El cmdlet Connect-SPOService requiere la URL del centro de administración. Usar una URL de sitio devuelve un error de autenticación. Solucione esto usando siempre el sufijo -admin en la URL.

Olvidar el parámetro -Limit All

El cmdlet Get-SPOSite por defecto devuelve solo 200 sitios. Si su inquilino tiene 500 sitios, solo verá los primeros 200 propietarios. Agregue -Limit All al comando para recuperar todos los sitios. Sin este parámetro, su informe está incompleto y puede omitir sitios huérfanos sin propietario.

Confundir Owner con SiteOwner

La propiedad Owner contiene el administrador principal de la colección de sitios, generalmente un solo usuario. La propiedad SiteOwner contiene el propietario del grupo de Microsoft 365 subyacente para sitios conectados a grupos. Si exporta solo $_.Owner, omitirá al propietario del grupo que tiene control total sobre el sitio a través del grupo. Incluya siempre ambas propiedades en su informe.

Ejecutar el script sin el modificador -IncludeOwnerSiteOwner

De forma predeterminada, Get-SPOSite no devuelve la propiedad SiteOwner. Si omite el modificador -IncludeOwnerSiteOwner, el valor $_.SiteOwner estará vacío para todos los sitios, incluso si existe un propietario del grupo. Agregue este modificador al comando para completar la propiedad correctamente.

No manejar sitios sin propietario de grupo

Los sitios de comunicación y los sitios de equipo clásicos no tienen un grupo de Microsoft 365, por lo que la propiedad SiteOwner es nula. Si su script intenta llamar a $_.SiteOwner.Email en un objeto nulo, arroja un error. Use una verificación condicional en su bucle: if ($_.SiteOwner -ne $null) { $groupOwner = $_.SiteOwner.Email } else { $groupOwner = "N/A" }.

Comparación de scripts de PowerShell: básico vs. completo

Elemento Script básico Script completo
URL de conexión URL de colección de sitios URL del centro de administración con -admin
Límite de sitios 200 sitios predeterminados -Limit All
Propiedad Owner incluida Solo Owner Owner y SiteOwner
Modificador de propietario de grupo No usado -IncludeOwnerSiteOwner
Manejo de nulos Arroja error en nulo Verificación condicional para nulo
Formato de salida Solo en pantalla Exportación CSV con todas las columnas

El script básico es rápido para una verificación rápida de unos pocos sitios, pero falla para cualquier inquilino con más de 200 sitios o sitios conectados a grupos. El script completo funciona para cualquier tamaño de inquilino y produce un informe confiable que incluye tanto administradores principales como propietarios de grupos.

Ahora puede ejecutar un script de PowerShell que liste todos los propietarios de sitios en su inquilino de SharePoint Online sin omitir un solo registro. Comience conectándose a la URL del centro de administración con las credenciales correctas, luego use Get-SPOSite -Limit All -IncludeOwnerSiteOwner para recuperar todos los sitios. Para un consejo avanzado, agregue el parámetro -Filter para apuntar solo a sitios que no se hayan modificado en los últimos 90 días, lo que ayuda a identificar sitios obsoletos antes de eliminar sus propietarios.

ADVERTISEMENT