OneDrive FB создает папку с помощью Microsoft Graph API Powershell - PullRequest
0 голосов
/ 16 апреля 2020

Я просто хочу создать папку в моей учетной записи OneDrive для учетной записи Buiness через Graph API. После многих часов я застрял с ошибкой, которую я действительно не могу понять. В нем говорится, что свойство «Атрибуты» не существует для типа «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 часов ._.

1 Ответ

1 голос
/ 17 апреля 2020

Проблема с вашим кодом:

$postPara= @{
name= "NewFolder"
folder = {}
} | ConvertTo-Json

Если вы просто выведите $ postPara, вы увидите, что проблема заключается в том, что если вы пропустили @ перед значением в папке, вы на самом деле получите детали из базового сценарий заполнен там. так что попробуйте

$postPara= @{
name= "NewFolder"
folder = @{}
} | ConvertTo-Json
$postPara

Что и должно это исправить. Хорошим инструментом диагностики также является использование fiddler для просмотра запроса, отправляемого на сервер.

...