You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell+Microsoft Graph快速获取OneDrive文件的Drive Item ID

优化通过Microsoft Graph获取OneDrive文件Drive Item ID的方法

方法一:通过文件直接路径定位(最快)

如果知道目标文件在OneDrive中的具体路径,直接用Get-MgDriveItem通过路径寻址,无需遍历整个Drive,速度会大幅提升。比如文件在根目录的话,路径参数用:/test.xlsx:即可:

$DriveId = ""
# 直接通过文件路径获取DriveItem
$DriveItem = Get-MgDriveItem -DriveId $DriveId -Path ":/test.xlsx:"
$DriveItemID = $DriveItem.Id
Get-MgDriveItemVersion -DriveId $DriveId -DriveItemId $DriveItemID

如果文件在子文件夹里(比如Documents/test.xlsx),路径就写:/Documents/test.xlsx:。

方法二:精准优化Search-MgDrive的查询参数

原脚本用-Q "test.xlsx"会返回所有包含该字符串的文件,还要本地用Where-Object过滤,效率很低。可以把查询条件改成精准匹配文件名,让服务端直接过滤结果:

$DriveId = ""
# 用name:精准匹配文件名,服务端直接返回符合的结果
$DriveItemID = (Search-MgDrive -DriveId $DriveId -Q "name:test.xlsx").Id
Get-MgDriveItemVersion -DriveId $DriveId -DriveItemId $DriveItemID

这样不需要本地再过滤,能减少数据传输量和处理时间。

核心原因

原方法慢是因为Search-MgDrive默认会扫描整个OneDrive的内容再返回匹配结果;而路径定位是直接通过OneDrive的文件系统索引获取目标,相当于直接“跳转到”文件位置,速度差异非常明显。

内容的提问来源于stack exchange,提问作者aasenomad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 16:22:08