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.
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.
- Instalar SharePoint Online Management Shell
EjecuteInstall-Module -Name Microsoft.Online.SharePoint.PowerShelly confirme la instalación. Este módulo contiene todos los cmdlets que necesita. - Conectar a SharePoint Online
EjecuteConnect-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. - Recuperar todos los sitios con propietarios
Ejecute$sites = Get-SPOSite -Limit All -IncludeOwnerSiteOwner. El parámetro-Limit Allelimina el límite predeterminado de 200 sitios. El parámetro-IncludeOwnerSiteOwnerasegura que el cmdlet devuelva tanto el administrador principal como el propietario del grupo para cada sitio. - 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.
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.