OneDrive FB 使用 Microsoft Graph API Powershell 创建文件夹
OneDrive FB create Folder with Microsoft Graph API Powershell
我只想通过 Graph 在我的 OneDrive for Buiness 帐户中创建一个文件夹 API。几个小时后,我遇到了一个我真的无法理解的错误。它说 属性 'Attributes' 在类型 'oneDrive.folder' 上不存在,我不应该使用这个 属性。问题是我不使用这个 属性。经过大量研究,我认为它与固定元数据或类似的东西有关。但总的来说,我真的不知道下一步该怎么做。
我使用 Graph Explorer 和另一个网站创建了这个脚本。
错误:
-1, Microsoft.SharePoint.Client.InvalidClientQueryException
The property 'Attributes' does not exist on type 'oneDrive.folder'.
Make sure to only use property names that are defined by the type.
这是我的代码:
$clientId = "XXXXXXXXXXXXXX"
$tenantId = "XXXXXX.onmicrosoft.com"
$clientSecret = 'XXXXXXXXXXXX'
$uri = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"
$body = @{
client_id = $clientId
scope = "https://graph.microsoft.com/.default"
client_secret = $clientSecret
grant_type = "client_credentials"
}
$tokenRequest = Invoke-WebRequest -Method Post -Uri $uri -ContentType "application/x-www-form-urlencoded" -Body $body -UseBasicParsing
$token = ($tokenRequest.Content | ConvertFrom-Json).access_token
Write-Host $token
$uri = "https://graph.microsoft.com/v1.0/<ID XXXXXXX>/drive/root/children"
$method = 'POST'
$head= @{Authorization = "Bearer $token"}
$postPara= @{
name= "NewFolder"
folder= {}
} | ConvertTo-Json
$antwort = Invoke-RestMethod -Headers $head -Uri $uri -Method $method -Body $postPara -ContentType "application/json"
Write-Host $antwort
它真的应该工作,我在这个示例任务上坐了 10 多个小时._.
你的代码问题是
$postPara= @{
name= "NewFolder"
folder = {}
} | ConvertTo-Json
如果您只是输出 $postPara,您会发现问题是因为您在文件夹中的值前面缺少 @,您实际上会从其中填充的底层脚本中获取详细信息。所以试试
$postPara= @{
name= "NewFolder"
folder = @{}
} | ConvertTo-Json
$postPara
应该修复it.A 好的诊断工具也是使用 fiddler 查看发送到服务器的请求。
我只想通过 Graph 在我的 OneDrive for Buiness 帐户中创建一个文件夹 API。几个小时后,我遇到了一个我真的无法理解的错误。它说 属性 'Attributes' 在类型 'oneDrive.folder' 上不存在,我不应该使用这个 属性。问题是我不使用这个 属性。经过大量研究,我认为它与固定元数据或类似的东西有关。但总的来说,我真的不知道下一步该怎么做。
我使用 Graph Explorer 和另一个网站创建了这个脚本。
错误:
-1, Microsoft.SharePoint.Client.InvalidClientQueryException
The property 'Attributes' does not exist on type 'oneDrive.folder'.
Make sure to only use property names that are defined by the type.
这是我的代码:
$clientId = "XXXXXXXXXXXXXX"
$tenantId = "XXXXXX.onmicrosoft.com"
$clientSecret = 'XXXXXXXXXXXX'
$uri = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"
$body = @{
client_id = $clientId
scope = "https://graph.microsoft.com/.default"
client_secret = $clientSecret
grant_type = "client_credentials"
}
$tokenRequest = Invoke-WebRequest -Method Post -Uri $uri -ContentType "application/x-www-form-urlencoded" -Body $body -UseBasicParsing
$token = ($tokenRequest.Content | ConvertFrom-Json).access_token
Write-Host $token
$uri = "https://graph.microsoft.com/v1.0/<ID XXXXXXX>/drive/root/children"
$method = 'POST'
$head= @{Authorization = "Bearer $token"}
$postPara= @{
name= "NewFolder"
folder= {}
} | ConvertTo-Json
$antwort = Invoke-RestMethod -Headers $head -Uri $uri -Method $method -Body $postPara -ContentType "application/json"
Write-Host $antwort
它真的应该工作,我在这个示例任务上坐了 10 多个小时._.
你的代码问题是
$postPara= @{
name= "NewFolder"
folder = {}
} | ConvertTo-Json
如果您只是输出 $postPara,您会发现问题是因为您在文件夹中的值前面缺少 @,您实际上会从其中填充的底层脚本中获取详细信息。所以试试
$postPara= @{
name= "NewFolder"
folder = @{}
} | ConvertTo-Json
$postPara
应该修复it.A 好的诊断工具也是使用 fiddler 查看发送到服务器的请求。