我正在尝试使用 Microsoft Graph Powershell 模块在 Sharepoint 站点的驱动器中创建一个文件夹。
查看文档这里我应该能够执行以下操作:
Import-Module Microsoft.Graph.Files
$params = @{
name = "New Folder"
folder = @{
}
"@microsoft.graph.conflictBehavior" = "rename"
}
New-MgDriveItemChild -DriveId $driveId -DriveItemId $driveItemId -BodyParameter $params
但是,这给了我一个错误:
New-MgDriveItemChild_Create: You must provide either a file facet if creating a file or a folder facet if creating a folder or a remoteItem facet if adding a shared folder
Status: 400 (BadRequest)
ErrorCode: invalidRequest
Date: 2023-11-23T17:50:50
我已从站点的共享驱动器中获取了子文件夹的驱动器项目 ID,但它不会创建该文件夹?我可以使用 postman ok 直接通过 API 创建文件夹,但 Powershell 似乎不喜欢它。
也许是我的误解,但是文件夹方面是什么意思?
如果在使用 Microsoft Graph PowerShell 模块创建文件夹时缺少包含文件夹方面,则会发生错误。
当我运行您的脚本来创建新文件夹而不定义文件夹方面时,我也出现相同的错误,如下所示:
Import-Module Microsoft.Graph.Files
$params = @{
name = "New Folder"
folder = @{
}
"@microsoft.graph.conflictBehavior" = "rename"
}
$driveId = "xxxxxxx"
$driveItemId = "xxxxxxxx"
New-MgDriveItemChild -DriveId $driveId -DriveItemId $driveItemId -BodyParameter $params
回复:
当我通过包含要解决错误,您需要在使用 New-MgDriveItemChild cmdlet 创建文件夹时定义至少一个文件夹属性,例如
childCount
或view
或请求正文中的任何属性。
文件夹方面运行下面的modified PowerShell脚本时,我得到了这样的响应:
Import-Module Microsoft.Graph.Files
$params = @{
name = "New Folder"
folder = @{
"childCount" = 1024
"view" = @{
"@odata.type" = "microsoft.graph.folderView"
}
}
"@microsoft.graph.conflictBehavior" = "rename"
}
$driveId = "xxxxxxx"
$driveItemId = "xxxxxxxx"
New-MgDriveItemChild -DriveId $driveId -DriveItemId $driveItemId -BodyParameter $params
回复:
为了
确认,我在 OneDrive 中检查了相同的内容,其中新文件夹已成功创建,如下所示:
作为解决方法,添加一些假属性
Import-Module Microsoft.Graph.Files
$params = @{
name = "New Folder"
folder = @{
# fake property to ensures that PowerShell SDK will include folder facet
x = 'x'
}
"@microsoft.graph.conflictBehavior" = "rename"
}
New-MgDriveItemChild -DriveId $driveId -DriveItemId $driveItemId -BodyParameter $params