Я использую приведенный ниже сценарий для создания папки в моей библиотеке SharePoint, но получаю сообщение об ошибке как недействительный запрос. Я следил за графиком API в соответствии с документацией, но не смог найти, что здесь не так. Любая подсказка??
Function GET-Folder
{
param($clientId, $clientSecret)
$tokenObject = GET-TOKEN -clientId $clientId -clientSecret $clientSecret
$uploadFolderRequestHeaders = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$uploadFolderRequestHeaders.Add("Content-Type", "application/json")
$uploadFolderRequestHeaders.Add("Authorization", "Bearer "+ $tokenObject.access_token)
$uploadFolderRequestBody = @{
name= "NewFoldew2r"
folder = {}
} | ConvertTo-Json
$fullname = "https://graph.microsoft.com/v1.0/sites/$($SPid)/drives/$($LibId)/root/children/"
write-host "test"
$uploadFolderResponse = Invoke-RestMethod $fullname -Method 'POST' -Headers $uploadFolderRequestHeaders -Body $uploadFolderRequestBody
$uploadFolderResponse | ConvertTo-Json
return $uploadFolderResponse
}
последняя ошибка:
2020-12-09T20:00:52.4660142Z Invoke-RestMethod : {
2020-12-09T20:00:52.4661057Z "error": {
2020-12-09T20:00:52.4661551Z "code": "invalidRequest",
2020-12-09T20:00:52.4662315Z "message": "Invalid request",
2020-12-09T20:00:52.4662994Z "innerError": {
2020-12-09T20:00:52.4663189Z "date": "2020-12-09T20:00:52",
2020-12-09T20:00:52.4663531Z "request-id": "99c22009-9bcb-4c3b-acb7-cd697a5040a9",
2020-12-09T20:00:52.4663926Z "client-request-id": "99c22009-9bcb-4c3b-acb7-cd697a5040a9"
2020-12-09T20:00:52.4664153Z }
2020-12-09T20:00:52.4664541Z }
2020-12-09T20:00:52.4664659Z }
2020-12-09T20:00:52.4664946Z At D:\a\r1\a\_DevOpsScripts\ReleaseNoteScripts\UploadInSharePoint.ps1:103 char:28
2020-12-09T20:00:52.4665342Z + ... rResponse = Invoke-RestMethod $fullname -Method 'POST' -Headers $uplo ...
2020-12-09T20:00:52.4665666Z + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2020-12-09T20:00:52.4666140Z + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebExc
2020-12-09T20:00:52.4666515Z eption
2020-12-09T20:00:52.4666815Z + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
2020-12-09T20:00:52.6029759Z ##[error]PowerShell exited with code '1'.
2020-12-09T20:00:52.6394118Z ##[section]Finishing: PowerShell Script
он используется в $uploadFolderRequestBody, и я вызываю его в теле в методе Invoke.
работает в граф эксплорере
Если это работает в проводнике Graph, тогда работает вызов Graph API. Похоже, что приведенный выше скрипт не отправляет запрос/полезную нагрузку должным образом из-за его сбоя...
я зарегистрировал каждую переменную, все кажется правильным, если бы возникла проблема с запросом, сообщение об ошибке было бы другим
Поделитесь подробным сообщением об ошибке вместе с отметкой времени и идентификатором запроса, который вы получили.
отредактировано с последней ошибкой
Ошибка, которую вы получаете, связана с тем, что вы назначаете разные свойства свойству папки в теле, когда используете {}
в powershell. Документ указывает пример в формате JSON, где {} означает пустой объект.
Если вы напечатаете $uploadFolderRequestBody
, вы увидите данные, как показано ниже, в свойстве папки.
Поэтому, пожалуйста, предоставьте данные тела, как показано ниже.
$uploadFolderRequestBody = @{
name= "NewFoldew2r"
folder = null
"@microsoft.graph.conflictBehavior"= "rename"
} | ConvertTo-Json
А теперь запустите Invoke-RestMethod
. Вы получите правильные результаты.
(1) Я бы попробовал указанный выше вызов в обозревателе графиков и посмотрел, работает ли он.