MSGraph Powershell 新-MgDriveItemChild

问题描述 投票:0回答:2

我正在尝试使用 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 似乎不喜欢它。

也许是我的误解,但是文件夹方面是什么意思?

azure powershell sharepoint microsoft-graph-api drive
2个回答
0
投票

如果在使用 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

回复:

enter image description here

要解决错误,您需要在使用 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

回复:

enter image description here

为了

确认,我在 OneDrive 中检查了相同的内容,其中新文件夹已成功创建,如下所示:

enter image description here

参考: 文件夹 - Microsoft Graph v1.0


0
投票
在我看来,这就像 PowerShell SDK 中的一个错误,在文件夹属性为空的情况下,PowerShell SDK 只是忽略该属性,并且不将其包含在请求正文中。

作为解决方法,添加一些假属性

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
    
© www.soinside.com 2019 - 2024. All rights reserved.