Dav*_*ams 2 powershell azure-devops-rest-api
尝试使用 Invoke-RestMethod 更新现有 VSTS 工作项时,我不断收到
您必须在请求正文中传递有效的补丁文档。
这是我要经过的
$Body = '[{ "op": "test", "path": "/rev", "value": 1},{ "op": "add", "path": "/fields/System.IterationPath", "value":"' + $caseIterationPath + '"},{ "op": "add", "path": "/fields/System.AreaPath", "value":"' + $caseAreaPath + '"}]'
Invoke-RestMethod -Uri "$rootUri/_apis/wit/workitems/$($case.id)?$apiVersion" -Method PATCH -ContentType application/json-patch+json -Headers @{Authorization= $authorization} -Body $Body
Run Code Online (Sandbox Code Playgroud)
身体扩展到
"[{ "op": "test", "path": "/rev", "value": 1},{ "op": "add", "path": "/fields/System.IterationPath", "value":"Foo\Bar 2016.4\2016.4.02"},{ "op": "add", "path": "/fields/System.AreaPath", "value":"Foo\Apps\Bar Stool\Eating"}]"
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
JSON使用\的转义字符; 例如,\t是 TAB 字符(Unicode 代码点0x9)的转义序列。
因此,为了使用文字 \(例如在 Windows 路径中),您必须将其转义为\\.
您可以按照$caseIterationPath -replace '\\', '\\'(sic)的行手动转义用于合成 JSON 字符串的所有变量值。
但是,它可能是更容易先建立定期PowerShell的数据结构,然后让ConvertTo-Json你逃脱所需的转换。
在手头的情况下:
# Sample values.
$caseIterationPath = 'c:\path\to\iteration'
$caseAreaPath = 'c:\path\to\area'
# Construct an array of hashtables to be converted to JSON later.
$Body = @(
@{
op = 'test'
path = '/rev'
value = 1
}
@{
op = 'add'
path = '/fields/System.IterationPath'
value = $caseIterationPath
}
@{
op = 'add'
path = '/fields/System.AreaPath'
value = $caseAreaPath
}
)
# Convert the array to a string containing JSON.
# ConvertTo-Json will perform any required escaping.
$jsonBody = ConvertTo-Json $Body
# Invoke the REST method.
Invoke-RestMethod -Uri "$rootUri/_apis/wit/workitems/$($case.id)?$apiVersion" `
-Method PATCH -ContentType application/json-patch+json `
-Headers @{Authorization= $authorization} `
-Body $jsonBody
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,$jsonBody最终包含以下内容 - 请注意\实例如何正确转义为\\:
[
{
"path": "/rev",
"op": "test",
"value": 1
},
{
"path": "/fields/System.IterationPath",
"op": "add",
"value": "c:\\path\\to\\iteration"
},
{
"path": "/fields/System.AreaPath",
"op": "add",
"value": "c:\\path\\to\\area"
}
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3492 次 |
| 最近记录: |