我正在尝试使用此文档通过 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/