Búsqueda de sitios web

Encuentre todos los sitios de OneDrive para empresas usando PowerShell


Requisito: Obtener una lista de todas las colecciones de sitios de OneDrive de SharePoint Online.

Me pidieron que obtuviera la lista de todos los sitios de OneDrive para poder utilizar OneDrive for Business en nuestro inquilino de Office 365. Es un poco complicado encontrar todas las colecciones de sitios de OneDrive y así es como lo logré usando el cmdlet Get-SPOSite:

¿Cómo enumerar todas las URL de OneDrive para la Empresa?

OneDrive for Business es un servicio de almacenamiento de archivos basado en la nube que forma parte del conjunto de herramientas de Microsoft 365. Como administrador, es posible que necesite obtener una lista de todos los sitios de OneDrive en su organización con fines de auditoría o administración. En este artículo, describiremos los pasos para obtener todos los sitios de OneDrive en Microsoft 365 mediante el centro de administración de Microsoft 365 y PowerShell.

Para obtener una lista de todos los sitios de OneDrive para la Empresa en su organización a través del centro de administración de Microsoft 365, haga lo siguiente:

  1. Inicie sesión en el centro de administración de Microsoft 365 en https://admin.microsoft.com
  2. Haga clic en "Informes" en la navegación izquierda >> Haga clic en "Uso".
  3. En Archivos de OneDrive, haga clic en "Ver más"
  4. Desplácese un poco hacia abajo para ver el informe que proporciona una lista de todos los sitios de OneDrive. También puede exportar los datos del informe a formato CSV para su posterior análisis.

Buscar todos los sitios de OneDrive mediante el Shell de administración de SharePoint Online:

OneDrive for Business proporciona almacenamiento centralizado para guardar y compartir archivos. Los archivos almacenados en OneDrive se pueden descargar en cualquier dispositivo y sincronizar con la nube para garantizar la coherencia de los datos. Busquemos todas las colecciones de sitios de OneDrive en SharePoint Online usando PowerShell. Este script de PowerShell obtiene todas las colecciones de sitios de OneDrive en SharePoint Online filtrando la propiedad de la plantilla del sitio.


$AdminSiteURL="https://crescent-admin.sharepoint.com"

#Get Credentials to connect to SharePoint Admin Center
$Cred = Get-Credential

#Connect to SharePoint Online Admin Center
Connect-SPOService -Url $AdminSiteURL -credential $Cred

#Get all Personal Site collections and export to a Text file
Get-SPOSite -Template "SPSPERS" -limit ALL -includepersonalsite $True | Select URL, Owner | Format-table -autosize | Out-string -width 8096 | Out-file C:\temp\OneDriveSites.txt 

Simplemente cambie $AdminSiteURL a su dominio, proporcione las credenciales del administrador de SharePoint Online y ejecute el script. Este script produce el resultado en el archivo “C:\Temp\OneDriveSites.txt”.

Enumerar todos los sitios de OneDrive para la Empresa que utilizan PowerShell

También puede usar -Filter. También puede usar el modificador -Filter en el cmdlet Get-SPOSite como:


Get-SPOSite -IncludePersonalSite $true -Limit all -Filter "Url -like '-my.sharepoint.com/personal/'"

Obtenga todos los sitios de OneDrive usando PnP PowerShell

Podemos recuperar la lista de todas las colecciones de sitios de OneDrive usando PnP PowerShell como:


#Config Variables
$TenantSiteURL =  "https://crescent-admin.sharepoint.com/"
  
#Connect to PnP Online
Connect-PnPOnline -Url $TenantSiteURL -Interactive

#Get All OneDrive Sites
Get-PnPTenantSite -IncludeOneDriveSites -Filter "Url -like '-my.sharepoint.com/personal/'"

Exportemos todos los sitios de OneDrive a un archivo CSV:


#Parameter
$Tenant =  "CrescentIntranet"
$CSVPath = "C:\Temp\OneDriveSites.csv"

#Connect to PnP Online
Connect-PnPOnline -Url "https://$tenant-admin.sharepoint.com" -Interactive

#Get OneDrive Site Details and export to CSV
Get-PnPTenantSite -IncludeOneDriveSites -Filter "Url -like 'https://$tenant-my.sharepoint.com/personal/'" |
    Select Title, URL, Owner, LastContentModifiedDate, StorageUsage | 
        Export-Csv -Path $CSVPath -NoTypeInformation

Obtenga todos los sitios de OneDrive usando PowerShell - CSOM:

Puede utilizar PowerShell CSOM para obtener todas las colecciones de sitios de OneDrive como método alternativo. Este script recupera todos los usuarios de SharePoint Online que utilizan UserProfileService y comprueba si el usuario tiene un sitio personal. Aquí está el script para enumerar todos los sitios de OneDrive para empresas con PowerShell:


#Add references to SharePoint client assemblies
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.UserProfiles")

# Specify sharepoint online admin url 
$AdminSiteURL = "https://crescent-admin.sharepoint.com"
$MySiteURL="https://crescent-my.sharepoint.com"

#Specify the location where the list of OneDrive sites should be saved
$LogFile = "C:\Temp\OneDriveSites.txt"
 
#Setup Credentials to connect
$AdminCred= Get-Credential
$AdminCredentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($AdminCred.Username, $AdminCred.Password)
 
#Set User Profile Service path using SPO admin URL 
$ProxyAddr = "$AdminSiteURL/_vti_bin/UserProfileService.asmx?wsdl"
# Create a new webservice proxy to access UserProfileService
$UserProfileService= New-WebServiceProxy -Uri $ProxyAddr -UseDefaultCredential False
$UserProfileService.Credentials = $AdminCredentials
 
#Set authentication cookies
$StrAuthCookie = $AdminCredentials.GetAuthenticationCookie($AdminSiteURL)
$URI = New-Object System.Uri($AdminSiteURL)
$Container = New-Object System.Net.CookieContainer
$Container.SetCookies($URI, $StrAuthCookie)
$UserProfileService.CookieContainer = $Container
 
# Sets the first User profile, at index -1
$UserProfileResult = $UserProfileService.GetUserProfileByIndex(-1)
 
$NumProfiles = $UserProfileService.GetUserProfileCount()
$i = 1
 
# As long as the next User profile is NOT the one we started with (at -1)...
While ($UserProfileResult.NextValue -ne -1) 
{
    Write-Host "Checking profile $i of $NumProfiles" -foreground Yellow
 
    # Look for the Personal Space object in the User Profile and retrieve it  
    $Prop = $UserProfileResult.UserProfile | Where-Object { $_.Name -eq "PersonalSpace" } 
    $URL= $Prop.Values[0].Value
 
    # If "PersonalSpace" (which we've copied to $Url) exists, log it to our file...
    if ($URL) 
    {
        $SiteUrl = $MySiteURL+$URL
        # Write OneDrive site url to the console
        Write-Host $SiteUrl -foreground Green
        $SiteUrl | Out-File $LogFile -Append -Force
    }
 
    # And now we check the next profile the same way...
    $UserProfileResult = $UserProfileService.GetUserProfileByIndex($UserProfileResult.NextValue)
    $i++
}

Conclusión:

Si sigue estos sencillos pasos, puede obtener rápidamente una lista de todos los sitios de OneDrive en su organización mediante el centro de administración de Microsoft 365 o PowerShell. Esto puede resultar útil para diversos fines, como auditoría, generación de informes o gestión. El centro de administración de Microsoft 365 proporciona una interfaz fácil de usar para administrar su entorno OneDrive, mientras que PowerShell proporciona mayores capacidades de automatización. Independientemente del método que elija, el proceso es sencillo y fácil de seguir.

Artículos relacionados