Vyhledávání na webu

Jak stáhnout všechny uživatelské soubory OneDrive


Úkolem je uložit místní kopii souborů OneDrive uživatele. Soubory OneDrive můžeme uložit pomocí centra pro správu Microsoft 365 nebo pomocí PowerShellu. Pokud však máte mnoho uživatelů, PowerShell je rychlejší. V tomto článku se dozvíte, jak stáhnout všechny soubory OneDrive od uživatele s PowerShell.

Stáhněte si uživatelské soubory OneDrive v centru pro správu Microsoft 365

Chcete-li stáhnout uživatelské soubory OneDrive pomocí centra pro správu Microsoft 365, postupujte takto:

  1. Přihlaste se do centra pro správu Microsoft 365
  2. Klikněte na Uživatelé > Aktivní uživatelé
  3. Najděte uživatele a vyberte jej

  1. Vyberte na OneDrive
  2. Klikněte na Vytvořit odkaz na soubory

  1. Kliknutím na odkaz, který se zobrazí, přejděte do souboru OneDrive pro uživatele

  1. Vyberte všechny soubory
  2. Klikněte na Stáhnout

  1. Soubory budou komprimovány do souboru .zip a staženy do vašeho místního systému.

Stáhněte si uživatelské soubory OneDrive pomocí skriptu PowerShell

Chcete-li stáhnout uživatelské soubory OneDrive pomocí skriptu PowerShell, postupujte takto:

Krok 1. Nainstalujte Microsoft Graph PowerShell

Spusťte Windows PowerShell jako správce a nainstalujte Microsoft Graph PowerShell.

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

Důležité: Vždy nainstalujte moduly Microsoft Graph PowerShell a Microsoft Graph Beta PowerShell. Je to proto, že některé rutiny ještě nejsou k dispozici ve finální verzi a nebudou fungovat. Před spuštěním rutiny nebo skriptu aktualizujte oba moduly na nejnovější verzi, abyste předešli chybám a nesprávným výsledkům.

Krok 2. Připravte soubor CSV

Přejděte do složky C:\Temp a vytvořte soubor CSV s názvem OneDriveUsers.csv.

Vyplňte záhlaví UserPrincipalName a přidejte hlavní jména uživatelů, ze kterých chcete stahovat soubory OneDrive.

Krok 3. Stáhněte si skript Get-OneDriveFiles PowerShell

Stáhněte si skript PowerShell Get-OneDriveFiles.ps1 a umístěte jej do složky C:\Scripts.

Ujistěte se, že je soubor odblokován, abyste předešli chybám při spouštění skriptu. Přečtěte si více v článku Chyba není digitálně podepsána při spouštění skriptu PowerShell.

Další možností je zkopírovat a vložit níže uvedený kód do poznámkového bloku. Pojmenujte jej Get-OneDriveFiles.ps1 a umístěte jej do složky 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

Krok 4. Spusťte skript Get-OneDriveFiles PowerShell

Spuštěním níže uvedeného příkazu spusťte skript PowerShell Get-OneDriveFiles.ps1.

Poznámka: Ujistěte se, že máte k uživateli OneDrive přístup pomocí účtu správce. Jinak skript nemůže stáhnout soubory a zobrazí se chyba ověřování.

V tomto příkladu chceme importovat cestu CSV z C:\temp\OneDriveUsers.csv a exportovat soubory OneDrive pro každého uživatele do C:\temp\OneDriveData složku.

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

Takto to vypadá po dokončení skriptu Get-OneDriveFiles.ps1 PowerShell.

To je vše!

Přečtěte si více: Exportovat zprávu o využití OneDrive v Microsoft 365 »

Závěr

Naučili jste se, jak stáhnout všechny uživatelské soubory OneDrive. Použití centra pro správu Microsoft 365 je vynikající, pokud chcete stahovat pro jednoho uživatele nebo pro několik uživatelů. Pokud je však mnoho uživatelů, je nejlepší zautomatizovat práci a použít skript Get-OneDriveFiles.ps1 PowerShell.

Líbil se vám tento článek? Může se vám také líbit Hard delete mailbox bez odstranění uživatelského účtu v Microsoft 365. Nezapomeňte nás sledovat a sdílet tento článek.