Update Azure DevOps Wiki pages use powershell



请告诉我如何使用 Rest API 和 powershell 更新(例如文本)Azure DevOps Wiki 页面。也许有人有一个脚本来更新 Wiki 页面。我可以创建维基页面和内容使用此Powershell脚本。 例如:

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$uri = "https://dev.azure.com/fabrikam/{project}/_apis/wiki/wikis/{wikiIdentifier}/pages?path=SamplePage731&api-version=5.0"
$body = @"
{
"content": "test"
}
"@
$result = Invoke-RestMethod -Uri $uri -Method Put -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $body

错误按摩:

Invoke-RestMethod : {"$id":"1","innerException":null,"message":"已在添加操作中指定的页面 '/SamplePage129' 存在于维基中。请指定一个新页面 path.","typeName":"Microsoft.TeamFoundation.Wiki.Server.WikiPageAlreadyExistsException, Microsoft.TeamFoundation.Wiki.Server","typeKey":"WikiPageAlreadyExistsException","errorCode":0,"eventId":3000} 行:22 字符:11 + $result = invoke-restMethod -uri $uri -Method Put -ContentType "appli ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException + FullQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

首先,为我们的文档道歉不太清楚,以至于您收到此错误消息。

根据您共享的代码,我发现您没有将">If-Match"标题中当前页面的版本值与您的请求一起传递。

此 API 需要标头值才能执行更新。否则,它将操作视为">ADD"而不是">UPDATE"。这就是您收到该错误消息的原因。因此,要成功更新,您需要在标头中提供版本。

要获取此页面的"版本",只需对要首先编辑的页面运行 GET 调用。然后,响应标头中的'ETag'值是下一个 UPDATE 操作需要传递的版本。

因此,只需修改标题内容,在其中添加If-Match

$headers = @{
'Authorization' = ('Basic {0}' -f $base64AuthInfo) 
'If-Match' = '{version}' 
}

编辑:由于$result默认内容是响应正文,但ETag存在于响应标头中。因此,您必须需要指定的Headers才能获得它。

因此,对于如何使用命令在 powershell 中获取此ETag,只需使用$result.Headers.ETag就可以实现这一点。

相关内容

  • 没有找到相关文章

最新更新