Búsqueda de sitios web

Cómo descargar todos los archivos de OneDrive del usuario


La tarea consiste en guardar una copia local de los archivos de OneDrive del usuario. Podemos guardar los archivos de OneDrive usando el centro de administración de Microsoft 365 o con PowerShell. Sin embargo, si tienes muchos usuarios, PowerShell es más rápido. En este artículo, aprenderá cómo descargar todos los archivos de OneDrive de un usuario con PowerShell.

Descargar archivos de usuario de OneDrive en el centro de administración de Microsoft 365

Para descargar los archivos de OneDrive del usuario mediante el centro de administración de Microsoft 365, siga los pasos a continuación:

  1. Iniciar sesión en el centro de administración de Microsoft 365
  2. Haga clic en Usuarios > Usuarios activos
  3. Encuentra el usuario y selecciónalo

  1. Seleccione en OneDrive
  2. Haga clic en Crear enlace a archivos

  1. Haga clic en el enlace que aparece para ir al archivo OneDrive del usuario.

  1. Seleccionar todos los archivos
  2. Haga clic en Descargar

  1. Los archivos se comprimirán en un archivo .zip y se descargarán en su sistema local.

Descargar archivos de usuario de OneDrive con script de PowerShell

Para descargar los archivos de OneDrive del usuario mediante un script de PowerShell, siga los pasos a continuación:

Paso 1. Instale Microsoft Graph PowerShell

Ejecute Windows PowerShell como administrador e instale Microsoft Graph PowerShell.

Install-Module Microsoft.Graph -Force
Install-Module Microsoft.Graph.Beta -AllowClobber -Force

Importante: Instale siempre los módulos Microsoft Graph PowerShell y Microsoft Graph Beta PowerShell. Esto se debe a que algunos cmdlets aún no están disponibles en la versión final y no funcionarán. Actualice ambos módulos a la última versión antes de ejecutar un cmdlet o script para evitar errores y resultados incorrectos.

Paso 2. Prepare el archivo CSV

Vaya a la carpeta C:\Temp y cree un archivo CSV con el nombre OneDriveUsers.csv.

Complete el encabezado UserPrincipalName y agregue los nombres principales de usuario desde los que desea descargar los archivos de OneDrive.

Paso 3. Descargue el script de PowerShell Get-OneDriveFiles

Descargue el script de PowerShell Get-OneDriveFiles.ps1 y colóquelo en la carpeta C:\Scripts.

Asegúrese de que el archivo esté desbloqueado para evitar errores al ejecutar el script. Lea más en el artículo Error sin firma digital al ejecutar el script de PowerShell.

Otra opción es copiar y pegar el código siguiente en el Bloc de notas. Asígnale el nombre Get-OneDriveFiles.ps1 y colócalo en la carpeta C:\Scripts.

<#
    .SYNOPSIS
    Get-OneDriveFiles.ps1

    .DESCRIPTION
    The script imports users from a specified CSV file and downloads all
    OneDrive files for each user to a specified local folder.

    .LINK
    www.alitajran.com/download-all-user-onedrive-files/

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.alitajran.com
    LinkedIn:   linkedin.com/in/alitajran

    .CHANGELOG
    V1.00, 11/22/2024 - Initial version
#>

# Parameters for CSV file input and export directory
param (
    [Parameter(Mandatory = $true)]
    [string]$CsvPath,
    [Parameter(Mandatory = $true)]
    [string]$ExportPath
)

# Connect to Microsoft Graph with necessary permissions
Connect-MgGraph -Scopes "Directory.Read.All", "Sites.Read.All", "Files.Read.All" -NoWelcome

# Import users from CSV file
$users = Import-Csv -Path $CsvPath

# Local folder path for OneDrive files export
$Folder = $ExportPath

function Get-DriveItems {
    param (
        [string]$DriveId,
        [string]$DriveItemId,
        [string]$LocalPath
    )

    # Ensure the local path exists
    New-Item -ItemType Directory -Path $LocalPath -Force | Out-Null

    # Fetch children of the current drive item
    $driveItemChildren = Get-MgDriveItemChild -DriveId $DriveId -DriveItemId $DriveItemId

    foreach ($item in $driveItemChildren) {
        if ($item.File.MimeType) {
            # It's a file
            $fileName = $item.Name
            $filePath = Join-Path -Path $LocalPath -ChildPath $fileName
            # Download the file
            Get-MgDriveItemContent -DriveId $DriveId -DriveItemId $item.id -OutFile $filePath
            Write-Host "Downloaded file: $filePath" -ForegroundColor Green
        }
        elseif ($item.Folder) {
            # It's a folder
            $newLocalPath = Join-Path -Path $LocalPath -ChildPath $item.Name
            Write-Host "Entering folder: $newLocalPath" -ForegroundColor Cyan
            Get-DriveItems -DriveId $DriveId -DriveItemId $item.id -LocalPath $newLocalPath
        }
    }
}

foreach ($user in $users) {
    $userPrincipalName = $user.UserPrincipalName

    # Fetch user information
    $userObject = Get-MgUser -Filter "userPrincipalName eq '$userPrincipalName'"
    if (-not $userObject) {
        Write-Host "User not found: $($userPrincipalName)" -ForegroundColor Yellow
        continue
    }

    # Fetch user's OneDrive drives
    $userOneDrive = Get-MgUserDefaultDrive -UserId $userObject.id -ErrorAction SilentlyContinue
    if ($userOneDrive) {
        $driveId = $userOneDrive.id

        # Create a directory for the user's data
        $userDirectory = "$Folder\$userPrincipalName"
        New-Item -ItemType Directory -Path $userDirectory -Force | Out-Null

        # Start downloading from the root
        Get-DriveItems -DriveId $driveId -DriveItemId "root" -LocalPath $userDirectory
    }
    else {
        Write-Host "Error accessing OneDrive for user: $($userPrincipalName). Skipping." -ForegroundColor Red
    }
}

# Final message to indicate completion
Write-Host "All operations completed successfully. Files exported to $ExportPath." -ForegroundColor Cyan

Paso 4. Ejecute el script de PowerShell Get-OneDriveFiles

Ejecute el siguiente comando para ejecutar el script de PowerShell Get-OneDriveFiles.ps1.

Nota: Asegúrese de poder acceder al usuario OneDrive con su cuenta de administrador. De lo contrario, el script no podrá descargar los archivos y obtendrá un error de autenticación.

En este ejemplo, queremos importar la ruta CSV desde C:\temp\OneDriveUsers.csv y exportar los archivos de OneDrive para cada usuario a C:\temp\OneDriveData carpeta.

C:\scripts\.\Get-OneDriveFiles.ps1 -CsvPath "C:\temp\OneDriveUsers.csv" -ExportPath "C:\temp\OneDriveData"

Así es como se ve una vez finalizado el script de PowerShell Get-OneDriveFiles.ps1.

¡Eso es todo!

Leer más: Exportar informe de uso de OneDrive en Microsoft 365 »

Conclusión

Aprendiste cómo descargar todos los archivos de OneDrive del usuario. Usar el centro de administración de Microsoft 365 es excelente si desea realizar descargas para un solo usuario o para un par de usuarios. Sin embargo, si hay muchos usuarios, es mejor automatizar su trabajo y utilizar el script de PowerShell Get-OneDriveFiles.ps1.

¿Disfrutaste este artículo? También te puede gustar Eliminar definitivamente el buzón sin eliminar la cuenta de usuario en Microsoft 365. No olvides seguirnos y compartir este artículo.