json - Powershell 脚本缺少类型名称

标签 json powershell jenkins jira octopus-deploy

我正在尝试使用此文档通过 powershell 进行一些 API 调用 https://octopus.com/blog/manually-push-build-information-to-octopus

        $Headers = @{"X-Octopus-ApiKey"=$MYKEY"}
        $jsonBody = @{
            PackageId = "Test"
            Version = "1.1.1"
            OctopusBuildInformation =
                @{
                    BuildEnvironment = "Jenkins"
                    BuildNumber = "1"
                    BuildURL = "myURL"
                    VcsCommitNumber = "250"
                    VcsType = "Git"

                    Commits = [{Id = "250" LinkUrl = "gitUrl" Comment = "someComment"}]
                    VcsRoot = "gitUrl"
                }
         } | ConvertTo-Json -Depth 5

        Invoke-RestMethod -Method Post -Uri "http://alfadeployment/api/build-information" -Headers $Headers -Body $jsonBody

但是,由于我添加了提交数组​​,我收到以下错误:

  Missing type name after '['.
      + CategoryInfo          : ParserError: (:) [], ParseException
      + FullyQualifiedErrorId : MissingTypename

最佳答案

PowerShell 数组未包含在 [...] 中 - 后者用于类型文字,即引用 .NET 类型 - 因此会出现错误消息.

可以 - 但不必 - 将 PowerShell 数组包含在 @(...) 中,即 array-subexpression operator ;使用,array constructor operator就足够了,尽管 @(...) 有助于提高视觉清晰度,并创建一个 (@()) 或 < em>单元素数组(@('foo')),这可能比一元使用,更清晰(, 'foo'))。

此外,您的情况下的数组元素必须是 hashtable也是(@{ ... },而不是 { ... },后者是一个脚本 block ),并且,考虑到属性定义位于同一行,它们必须以;分隔。

把它们放在一起:

Commits = @(
  @{ Id = "250"; LinkUrl = "gitUrl"; Comment = "someComment" }
)

关于json - Powershell 脚本缺少类型名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68566416/

相关文章:

java - Velocity - 使用 jQuery 时如何避免 ParseErrorException?

powershell - Powershell,无法输入带有某些非ASCII字符的哈希表键(在脚本中)

powershell - 如果键不存在,如何使哈希表抛出错误?

git - Jenkins git fetch 因未知选项 --progress 失败

java - AOP + Jenkins + Maven 集成

javascript - 当使用新值循环 2000 个元素的数组时,浏览器更新元素需要很长时间

javascript - 提供初始化 json 字符串作为 jquery 方法的参数

java - 如何在返回对象的 Spring MVC @RestController @ResponseBody 类中响应 HTTP 状态代码?

winforms - FolderBrowserDialog 置于最前面

git - 我们可以重新触发 gitlab 管道吗?