Powershell 7 Invoke-Restmethod 上传到 SharePoint Online 循环错误

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

我正在尝试通过 Invoke-RestMethod 从 Powershell 脚本将文件上传到 SharePoint Online 当我使用哈希表作为标头时,响应表示实体需要 JSON 标头。当我将标头转换为 JSON 时,它说它无法绑定标头,因为它无法将类型字符串转换为 IDictionary 类型。

$Header = @{"Authorization" = "Bearer $accessToken"}

$Header = @{"Authorization" = "Bearer $accessToken"} |转换为 Json

Invoke-RestMethod -Uri $Url -Headers $Header -Method Put -Infile $Path -ContentType 'multipart/form-data' -Verbose

我错过了什么?

回复评论:

我已将脚本生成的令牌复制到 Postman 中的请求中,并收到包含有效数据的 200 响应。

标头作为哈希表时出错: { "error": { "code": "BadRequest", "message": "实体仅允许使用 JSON Content-Type 标头进行写入。", "innerError": { "date": "2024-04-26T18:26 :15", "请求 ID": “a870d677-7903-4417-a360-6abfbd056554”,“客户端请求ID”:“a870d677-7903-4417-a360-6abfbd056554”} } }

标头为 JSON 时出错: 无法绑定参数“标题”。无法转换“{”授权“:”承载 eyJ0e...此处为完整令牌...dswWw" }" 将“System.String”类型的值键入“System.Collections.IDictionary”。

powershell sharepoint-online
1个回答
0
投票

对于未来的旅行者来说,事实证明错误消息与错误没有太大关系。标头不需要转换为 JSON。问题出在 -Uri 参数上:

Invoke-RestMethod -Uri $Url -Headers $Header -Method Put -Infile $Path -ContentType 'multipart/form-data' -Verbose

我有:

$Url =“https://graph.microsoft.com/v1.0/$TenantId/sites/$SiteId/drives/$LibraryId/items/root`:/$Filename/content”

需要是:

$Url =“https://graph.microsoft.com/v1.0/$TenantId/sites/$SiteId/drives/$LibraryId/items/root

:/$Filename
:/content”

注意 $Filename 变量后面的反引号和分号。

© www.soinside.com 2019 - 2024. All rights reserved.