如何下载所有用户 OneDrive 文件
任务是保存用户 OneDrive 文件的本地副本。我们可以使用 Microsoft 365 管理中心或 PowerShell 保存 OneDrive 文件。但是,如果您有很多用户,PowerShell 速度更快。在本文中,您将了解如何使用 PowerShell 从用户下载所有 OneDrive 文件。
在 Microsoft 365 管理中心下载用户 OneDrive 文件
要使用 Microsoft 365 管理中心下载用户 OneDrive 文件,请按照以下步骤操作:
- 登录到Microsoft 365 管理中心
- 点击用户 > 活跃用户
- 找到用户并选择它
- 选择上云端硬盘
- 点击创建文件链接
笔记:如果您看到未为此用户设置 OneDrive 的消息,请要求该用户登录 OneDrive 或为 Microsoft 365 中的用户预配置 OneDrive。如果您不执行此操作,则用户没有 OneDrive,并且您无法继续操作。
笔记:单击“创建文件链接”后,它将通过将您当前登录的管理员帐户添加到用户 OneDrive for Business 站点来自动分配权限。阅读文章中的更多内容将网站集管理员添加到 Microsoft 365 中的 OneDrive。
- 单击显示的链接可转到用户 OneDrive 文件
- 选择所有文件
- 点击下载
- 这些文件将压缩为 .zip 文件并下载到您的本地系统。
使用 PowerShell 脚本下载用户 OneDrive 文件
要使用 PowerShell 脚本下载用户 OneDrive 文件,请按照以下步骤操作:
步骤 1. 安装 Microsoft Graph PowerShell
以管理员身份运行 Windows PowerShell 并安装 Microsoft Graph PowerShell。
Install-Module Microsoft.Graph -Force
重要的:在运行 cmdlet 或脚本之前,请务必更新到最新的 Microsoft Graph PowerShell 模块版本,以防止出现错误和不正确的结果。
步骤 2. 准备 CSV 文件
前往C:温度文件夹并创建一个名为 CSV 文件OneDriveUsers.csv。
填写标题用户主体名称并添加用户主体名称您要从中下载 OneDrive 文件的位置。
步骤 3. 下载 Get-OneDriveFiles PowerShell 脚本
下载 Get-OneDriveFiles.ps1 PowerShell 脚本并将其放入C:脚本文件夹。
确保文件未被阻止,以防止运行脚本时出现错误。请阅读文章运行 PowerShell 脚本时出现未数字签名错误来了解更多信息。
另一种选择是将以下代码复制并粘贴到记事本中。给它起个名字获取 OneDriveFiles.ps1并将其放置在C:脚本文件夹。
<#
.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
步骤 4. 运行 Get-OneDriveFiles PowerShell 脚本
运行以下命令来运行获取 OneDriveFiles.ps1PowerShell 脚本。
笔记:您必须要求用户登录 OneDrive 或为 Microsoft 365 中的用户预配置 OneDrive。如果您不执行此操作,则用户没有 OneDrive,并且您无法继续操作。
笔记:确保您可以使用管理员帐户访问用户 OneDrive。否则,脚本无法下载文件,并且您会收到身份验证错误。阅读文章中的更多内容将网站集管理员添加到 Microsoft 365 中的 OneDrive。
在此示例中,我们要从以下位置导入 CSV 路径:C:tempOneDriveUsers.csv并将每个用户的 OneDrive 文件导出到C:tempOneDriveData文件夹。
C:scripts.Get-OneDriveFiles.ps1 -CsvPath "C:tempOneDriveUsers.csv" -ExportPath "C:tempOneDriveData"
这是 Get-OneDriveFiles.ps1 PowerShell 脚本完成后的样子。
就是这样!
结论
您了解了如何下载所有用户 OneDrive 文件。如果你想为单个用户或几个用户下载,使用 Microsoft 365 管理中心是非常好的选择。但是,如果有很多用户,最好自动化您的工作并使用 Get-OneDriveFiles.ps1 PowerShell 脚本。
您喜欢这篇文章吗?您可能还喜欢在 Microsoft 365 中硬删除邮箱而不删除用户帐户。不要忘记关注我们并分享这篇文章。
