使用MSGraph PowerShell创建SharePoint文件夹报错:需提供folder facet
什么是Folder Facet?
Folder Facet是Microsoft Graph API中用来声明资源类型为文件夹的标识性结构,本质就是一个空的嵌套对象({ "folder": {} })。当你调用API创建文件夹时,必须通过这个结构明确告诉Graph你要创建的是文件夹,而非文件或共享项——这就是错误提示里要求你提供它的原因。
为什么Postman成功但PowerShell失败?
Postman调用API时,你肯定在请求Body里包含了"folder": {}这个关键结构,而你的PowerShell代码大概率漏传了这个参数。Graph API无法仅凭name参数判断你要创建的资源类型,因此返回400 BadRequest错误。
正确的PowerShell代码示例
使用New-MgDriveItem cmdlet时,必须通过-BodyParameter传入包含folder属性的对象:
# 替换为你的实际参数 $driveId = "目标驱动器ID" $parentItemId = "父文件夹的DriveItem ID" $newFolderName = "测试新文件夹" # 构造请求体,必须包含folder空对象 $requestBody = @{ name = $newFolderName folder = @{} "@microsoft.graph.conflictBehavior" = "rename" # 可选:重名时自动重命名 } # 执行创建操作 New-MgDriveItem -DriveId $driveId -ParentItemId $parentItemId -BodyParameter $requestBody
关键注意点
- 不要省略
folder = @{}:即使它是空对象,也是Graph识别文件夹类型的核心标识 - 如果需要处理重名冲突,可以添加
@microsoft.graph.conflictBehavior参数,可选值有rename、fail、replace
内容的提问来源于stack exchange,提问作者isa56k
相关产品推荐
相关产品推荐

