在 Powershell 中更新 VSTS WorkItem 的正确 Invoke-RestMethod 语法是什么 - 构造包含 Windows 路径的 JSON 字符串 [重复]

2023-11-29

当尝试使用 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

身体扩大到

"[{ "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"}]"

任何帮助将不胜感激!


JSON uses \ as the 转义字符;例如,\t是 TAB 字符的转义序列(Unicode 代码点0x9).

所以,为了使用literal \- 例如在 Windows 路径中 - 您必须将其转义为\\.

You could手动转义所有变量值您可以按照以下方式合成 JSON 字符串$caseIterationPath -replace '\\', '\\' (sic).

However, it is easier to construct regular PowerShell data structures first, and then let ConvertTo-Json do any required escaping on conversion, which would also cover escaping verbatim " as \".[1]

最简单的选择是使用哈希表文字,@{ ... };如果您关心在 JSON 转换过程中枚举条目的顺序,请使用ordered哈希表:[ordered] @{ ... }, 如下所示。

在手头的情况下:

# Sample values.
$caseIterationPath = 'c:\path\to\iteration'
$caseAreaPath = 'c:\path\to\area'

# Construct an array of hashtables to be converted to JSON later.
$Body = @(

  [ordered] @{
      op = 'test'
      path = '/rev'
      value = 1
  }

  [ordered] @{
      op = 'add'
      path = '/fields/System.IterationPath'
      value = $caseIterationPath
  }
 
  [ordered] @{
      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

在上面的代码中,$jsonBody最终包含以下内容 - 请注意\实例被正确转义为\\:

[
  {
    "op": "test",
    "path": "/rev",
    "value": 1
  },
  {
    "op": "add",
    "path": "/fields/System.IterationPath",
    "value": "c:\\path\\to\\iteration"
  },
  {
    "op": "add",
    "path": "/fields/System.AreaPath",
    "value": "c:\\path\\to\\area"
  }
]

[1] More generally, not constructing the JSON directly as a string also saves you from having to escape syntactic " chars. inside an overall "..." string, if string interpolation is needed. E.g., @{ foo = "OS: $env:OS" } | ConvertTo-Json is simpler than directly constructing "{ `"foo`" = `"OS: $env:OS`" }"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Powershell 中更新 VSTS WorkItem 的正确 Invoke-RestMethod 语法是什么 - 构造包含 Windows 路径的 JSON 字符串 [重复] 的相关文章

随机推荐

  • 如何在 nginx 中包含位置块?

    我在用着nginx作为 2 个网络应用程序的反向代理 这两个网络应用程序 UI 共享位置代理 因为后端服务是共享的 如何组合位置块并将它们包含在服务器中 主机配置文件 server server name app1 com listen 8
  • 加密加密属性文件中的密码

    Problem 我正在使用 Apache CXF 3 0 7 并在新功能您可以在加密属性文件中存储密钥库密码的 BASE 64 编码 加密版本 但我不知道如何添加它 我没有找到此实现的示例 在 apache web 中说 加密属性文件内容的
  • 为什么 NULL = NULL 在 SQL Server 中计算结果为 false

    在 SQL Server 中 如果你有nullParam NULL在 where 子句中 它的计算结果始终为 false 这是违反直觉的 给我带来了很多错误 我确实明白IS NULL and IS NOT NULL关键字是正确的方法 但为什
  • 如何解决 Multer 错误:意外的表单结束?

    我发现了有关 Multer 的其他类似问题 但没有答案 我正在尝试使用 next js 前端 和 node js 后端 上传文件 使用开发工具时 数据是通过网络选项卡发布的 以下是我的设置 app js const express requ
  • iOS 6.0 MPMoviePlayerController 全屏模式黑色?然后应用程序不再阻止任何操作

    当屏幕为黑色时 MPMoviePlayerController 视频将进入全屏模式 然后该应用程序就被屏蔽了 此问题仅适用于 iOS 6 0 但 iOS 5 1 运行良好 这是我的代码 如果我双击播放器全屏打开 但显示黑屏 self mov
  • PHP 数组语法:array(...) 或 [...] [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 在 PHP 中 这些相同吗 x 1 2 3 and x array 1 2 3 这两种创建数组的方法是否存在不同的情况 有什么理由使用其中一种而不是另一种吗 它们与警告相同 x 1 2 3
  • 在 Access 中从另一个表的数据创建一个表

    这个问题是关于 MS Access 的 我想做的是 我在 Access 中有一个表 并且想使用第一个表中的数据创建另一个表 希望通过一些 VBA 代码自动创建 有关于如何执行此操作的任何建议吗 我对 VBA 和 Access 很陌生 因此任
  • Web API:具有不同 HTTP 动词的相同方法

    在 WEB API 控制器中 我们可以使用相同的方法名称和不同的 HTTP 动词吗 HttpGet public string Test return Success Get HttpPost public string Test int
  • 正则表达式多个条件

    我有一个包含 URL 的字符串 例如https xxxx yyyy com en 我怎样才能制作一个正则表达式来验证这一点both这些条件都满足吗 网址不包含xxxx The URL does包含任一 en or en 您可以使用 xxxx
  • 重定向选择框中的选择选项

    目前我正在使用这个
  • 合并具有大写和非大写版本的变量名称的列,而不指定变量名称

    我有一个 大 数据框 如下所示 library data table DT lt fread ID country year A b B a 4 NLD 2002 NA 1 NA 0 5 NLD 2002 NA 0 NA 1 6 NLD 2
  • 接近恒定时间旋转,不违反标准

    我花了很长时间试图想出一个不违反 C C 标准的恒定时间旋转 问题是边缘 角落情况 其中操作在算法中调用并且这些算法无法更改 例如 以下内容来自Crypto 并执行下面的测试工具海湾合作委员会乌桑 i e g fsanitize undef
  • 如何使用 Java prefuse 库创建条形图?

    我目前有prefuse绘制散点图 其中 X 轴是计算机名称 Y 轴是其温度 如何让它绘制显示值而不是离散点的条形 我目前正在使用以下代码来呈现点 ShapeAction shape new ShapeAction group Constan
  • 如何过滤大于x的数组值

    我一直在互联网上查找 但找不到任何介绍如何解决此问题的帖子 尽管我确信这是一个非常简单的修复 基本上我有一个包含数字值的数组 我想过滤掉任何大于 10 的数字并将它们添加到另一个数组中 这是到目前为止我所得到的 但我得到的是第一个数组中的所
  • 如何从 QUnit 测试触发本机 Javascript 事件?

    我正在开发一个不依赖于 jQuery 的 Javascript 库 尽管我的测试中可以使用 jQuery 和 QUnit 在库中 我按照 jQuery 的方式将事件附加到元素 if document addEventListener tab
  • 如何使用水豚has_text

    所以现在我已经让黄瓜 水豚 硒点击谷歌应用程序脚本 这很棒 但由于某种原因 我似乎无法按照我期望的方式检查页面正文中的文本 在调试器中 我可以抓取页面对象 我可以在浏览器中获得预期的文本 直接扫描html显示文本出现了两次 但是page h
  • 如何通过调整缓冲区大小来优化读写?

    如何优化标准 C C 11 中 std ifstream 和 std ofstream 的读写速度 无 POSIX 函数 1 我不太清楚缓冲区的作用 所以你能确认一下吗 用于读取 文件的很大一部分被预加载到内存中 因此缓冲区大小定义了这大部
  • Haskell:let 语句,将数据类型复制到自身(带/不带修改)不起作用

    我想通过更改一个字段来更新记录语法 所以我做了类似的事情 let rec rec field 1 但我发现我无法打印rec不再 意味着当我尝试时编译器似乎进入无限循环 所以我尝试这样做 let a 1 prints OK let a a n
  • UITextView - 禁用垂直滚动

    如何禁用 UITextView 中的垂直滚动 我希望它基本上只是水平滚动 在某些情况下 当试图限制不需要的 UITextView 滚动时 我发现向 UITextView 委托添加类似以下内容很有帮助 这是一个 UIScrollView 委托
  • 在 Powershell 中更新 VSTS WorkItem 的正确 Invoke-RestMethod 语法是什么 - 构造包含 Windows 路径的 JSON 字符串 [重复]

    这个问题在这里已经有答案了 当尝试使用 Invoke RestMethod 更新现有 VSTS 工作项时 我不断收到 您必须在请求正文中传递有效的补丁文档 这是我要传递的内容 Body op test path rev value 1 op