当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 Microsoft 365 中导出 OneDrive 使用情况报告

作者:精品下载站 日期:2024-12-14 03:38:11 浏览:14 分类:玩电脑

在 Microsoft 365 中导出 OneDrive 使用情况报告


用户可能会占用 OneDrive 存储中的大量空间。通过 OneDrive 大小报告,您可以查看哪些用户几乎达到了限制。然后,您可以升级 OneDrive 存储或告诉他们清理它。在本文中,您将了解如何在 Microsoft 365 中导出 OneDrive 使用情况报告。

获取 Microsoft 365 中的 OneDrive 存储已用大小

若要获取 Microsoft 365 中用户的 OneDrive 存储已用大小,请按照以下步骤操作:

  1. 登录 Microsoft 365 管理中心
  2. 单击用户 > 活跃用户
  3. 单击列表中的用户

[玩转系统] 在 Microsoft 365 中导出 OneDrive 使用情况报告

  1. 单击OneDrive
  2. 检查已用存储空间部分

[玩转系统] 在 Microsoft 365 中导出 OneDrive 使用情况报告

优点是 OneDrive 存储使用的数据会在几分钟内填充。

在 Microsoft 365 管理中心导出 OneDrive 使用情况报告

要导出 Microsoft 365 中所有用户的 OneDrive 使用情况报告,请按照以下步骤操作:

  1. 登录 Microsoft 365 管理中心
  2. 单击设置 > 组织设置 > 服务

[玩转系统] 在 Microsoft 365 中导出 OneDrive 使用情况报告

  1. 点击报告
  2. 取消选中在所有报告中显示隐藏的用户、组和网站名称
  3. 点击保存

[玩转系统] 在 Microsoft 365 中导出 OneDrive 使用情况报告

  1. 点击报告 > 使用情况
  2. 单击 OneDrive 并向下滚动到底部
  3. 单击导出下载 OneDrive 使用情况报告 CSV 文件

[玩转系统] 在 Microsoft 365 中导出 OneDrive 使用情况报告

该报告的缺点是数据不是立即更新的。报告将在 48 小时内提供。

使用 PowerShell 脚本导出 OneDrive 使用情况报告

Get-OneDriveSizeReport.ps1 PowerShell 脚本将获取所有用户的 OneDrive 大小并输出以下信息:

  1. 所有者
  2. 统一网络
  3. 站点ID
  4. 已删除
  5. 上次活动
  6. 文件计数
  7. 活动文件计数
  8. 配额GB
  9. 二手GB
  10. 使用百分比
  11. 城市
  12. 国家
  13. 部门
  14. 职称

注意: 该脚本会检查组织中是否启用了报告中隐藏的用户数据。如果是这样,它会暂时禁用它,报告完成后,它会再次启用它。

要使用 PowerShell 导出所有用户的 OneDrive 使用情况报告,请按照以下步骤操作:

步骤 1. 安装 Microsoft Graph PowerShell

以管理员身份运行 Windows PowerShell 并安装 Microsoft Graph PowerShell。

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

重要提示:始终安装 Microsoft Graph PowerShellMicrosoft Graph Beta PowerShell 模块。这是因为某些 cmdlet 在最终版本中尚不可用,并且无法运行。在运行 cmdlet 或脚本之前将两个模块更新到最新版本,以防止出现错误和不正确的结果。

步骤 2. 下载 Get-OneDriveSizeReport PowerShell 脚本

(C:)驱动器上创建两个文件夹:

  • 脚本
  • 温度

下载 Get-OneDriveSizeReport.ps1 PowerShell 脚本并将其放置在 C:\Scripts 文件夹中。该脚本会将所有用户 OneDrive 大小导出到 C:\Temp 文件夹中的报告。

确保文件未被阻止,以防止运行脚本时出现错误。请阅读文章运行 PowerShell 脚本时出现未数字签名错误来了解更多信息。

另一种选择是将以下代码复制并粘贴到记事本中。将其命名为 Get-OneDriveSizeReport.ps1 并将其放置在 C:\Scripts 文件夹中。

<#
    .SYNOPSIS
    Get-OneDriveSizeReport.ps1

    .DESCRIPTION
    Export OneDrive storage usage in Microsoft 365 to CSV file with PowerShell.

    .LINK
    www.a-d.site/export-onedrive-usage-report/

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.a-d.site
    LinkedIn:   linkedin.com/in/a-d

    .CHANGELOG
    V1.00, 08/10/2024 - Initial version
#>

# Connect to Microsoft Graph with necessary permissions
Connect-MgGraph -NoWelcome -Scopes "User.Read.All", "Reports.Read.All", "ReportSettings.ReadWrite.All"

# Define file paths
$CSVOutputFile = "C:\temp\OneDriveSizeReport.csv"
$TempExportFile = "C:\temp\TempExportFile.csv"

# Remove the temporary export file if it exists
if (Test-Path $TempExportFile) {
    Remove-Item $TempExportFile
}

# Check if tenant reports have concealed user data, and adjust settings if necessary
if ((Get-MgBetaAdminReportSetting).DisplayConcealedNames -eq $true) {
    $Parameters = @{ displayConcealedNames = $false }
    Write-Host "Unhiding concealed report data to retrieve full user information..." -ForegroundColor Cyan
    Update-MgBetaAdminReportSetting -BodyParameter $Parameters
    $ConcealedFlag = $true
}
else {
    $ConcealedFlag = $false
    Write-Host "User data is already fully visible in the reports." -ForegroundColor Cyan
}

# Retrieve detailed user account information
Write-Host "Fetching user account details from Microsoft Graph..." -ForegroundColor Cyan

# Define user properties to be retrieved
$Properties = 'Id', 'displayName', 'userPrincipalName', 'city', 'country', 'department', 'jobTitle', 'officeLocation'

# Define parameters for retrieving users with assigned licenses
$userParams = @{
    All              = $true
    Filter           = "assignedLicenses/`$count ne 0 and userType eq 'Member'"
    ConsistencyLevel = 'Eventual'
    CountVariable    = 'UserCount'
    Sort             = 'displayName'
}

# Get user account information and select the desired properties
$Users = Get-MgUser @UserParams -Property $Properties | Select-Object -Property $Properties

# Create a hashtable to map UPNs (User Principal Names) to user details
$UserHash = @{}
foreach ($User in $Users) {
    $UserHash[$User.userPrincipalName] = $User
}

# Retrieve OneDrive for Business site usage details for the last 30 days and export to a temporary CSV file
Write-Host "Retrieving OneDrive for Business site usage details..." -ForegroundColor Cyan
Get-MgReportOneDriveUsageAccountDetail -Period D30 -Outfile $TempExportFile

# Import the data from the temporary CSV file
$ODFBSites = Import-CSV $TempExportFile | Sort-Object 'User display name'

if (-not $ODFBSites) {
    Write-Host "No OneDrive sites found." -ForegroundColor Yellow
    return
}

# Calculate total storage used by all OneDrive for Business accounts
$TotalODFBGBUsed = [Math]::Round(($ODFBSites.'Storage Used (Byte)' | Measure-Object -Sum).Sum / 1GB, 2)

# Initialize a list to store report data
$Report = [System.Collections.Generic.List[PSCustomObject]]::new()

# Populate the report with detailed information for each OneDrive site
foreach ($Site in $ODFBSites) {
    $UserData = $UserHash[$Site.'Owner Principal name']
    $ReportLine = [PSCustomObject]@{
        Owner             = $Site.'Owner display name'
        UserPrincipalName = $Site.'Owner Principal name'
        SiteId            = $Site.'Site Id'
        IsDeleted         = $Site.'Is Deleted'
        LastActivityDate  = $Site.'Last Activity Date'
        FileCount         = $Site.'File Count'
        ActiveFileCount   = $Site.'Active File Count'
        QuotaGB           = [Math]::Round($Site.'Storage Allocated (Byte)' / 1GB, 2)
        UsedGB            = [Math]::Round($Site.'Storage Used (Byte)' / 1GB, 2)
        PercentUsed       = [Math]::Round($Site.'Storage Used (Byte)' / $Site.'Storage Allocated (Byte)' * 100, 2)
        City              = $UserData.city
        Country           = $UserData.country
        Department        = $UserData.department
        JobTitle          = $UserData.jobTitle
    }
    $Report.Add($ReportLine)
}

# Export the report to a CSV file and display the data in a grid view
$Report | Sort-Object UsedGB -Descending | Export-CSV -NoTypeInformation -Encoding utf8 $CSVOutputFile
$Report | Sort-Object UsedGB -Descending | Out-GridView -Title OneDriveUsageReport

Write-Host ("Current OneDrive for Business storage consumption is {0} GB. Report saved to {1}" -f $TotalODFBGBUsed, $CSVOutputFile) -ForegroundColor Cyan

# Reset tenant report data concealment setting if it was modified earlier
if ($ConcealedFlag -eq $true) {
    Write-Host "Re-enabling data concealment in tenant reports..." -ForegroundColor Cyan
    $Parameters = @{ displayConcealedNames = $true }
    Update-MgBetaAdminReportSetting -BodyParameter $Parameters
}

# Clean up the temporary export file
if (Test-Path $TempExportFile) {
    Remove-Item $TempExportFile
    Write-Host "Temporary export file removed." -ForegroundColor Cyan
}
  • 第 24/25 行:编辑 CSV 文件路径

步骤 3. 运行 Get-OneDriveSizeReport PowerShell 脚本

运行以下命令以运行 Get-OneDriveSizeReport.ps1 PowerShell 脚本。

c:\scripts\.\Get-OneDriveSizeReport.ps1

将出现以下输出。

Unhiding concealed report data to retrieve full user information...
Fetching user account details from Microsoft Graph...
Retrieving OneDrive for Business site usage details...
Current OneDrive for Business storage consumption is 124,19 GB. Report saved to C:\temp\OneDriveSizeReport.csv
Re-enabling data concealment in tenant reports...
Temporary export file removed.

报告输出将发送到单独窗口 (Out-GridView) 中的交互式表格。

[玩转系统] 在 Microsoft 365 中导出 OneDrive 使用情况报告

步骤 4. 检查 OneDrive 使用情况报告 CSV 文件

Get-OneDriveSizeReport.ps1 PowerShell 脚本将所有 Microsoft 365 用户 OneDrive 大小导出到 CSV 文件。

在路径 C:\temp 中找到文件 OneDriveSizeReport.csv

使用您喜欢的应用程序打开 CSV 文件。在我们的示例中,它是 Microsoft Excel。

[玩转系统] 在 Microsoft 365 中导出 OneDrive 使用情况报告

就是这样!

注意:从 2025 年 1 月开始,Microsoft 将向组织收取未经许可的 OneDrive 帐户存储费用。了解哪些帐户未经许可的一个好方法是获取未经许可的 OneDrive 用户帐户报告。

了解更多:配置 OneDrive 管理模板文件 (ADMX/ADML) »

结论

您了解了如何在 Microsoft 365 中导出 OneDrive 使用情况报告。如果您想立即检查用户的 OneDrive 大小数据,请在 Microsoft 365 管理中心查找该用户。若要获取包含更多详细信息的报告,请使用 Microsoft 365 管理中心中的报告部分或使用 PowerShell。缺点是需要等待48小时才能获得数据。

您喜欢这篇文章吗?您可能还喜欢使用 PowerShell 脚本的 Microsoft 365 安全建议。不要忘记关注我们并分享这篇文章。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯