Powershell 脚本缺少类型名称
Powershell script Missingtypename
我正在尝试使用此文档通过 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; using ,
, the array constructor operator 就足够了,尽管 @(...)
有助于提高视觉清晰度,并创建 空 (@()
) 或 单元素 数组 (@('foo')
), 这可能比 unary 使用 ,
(, 'foo'
)).
此外,您的数组 element 也必须是 hashtable(@{ ... }
,而不是 { ... }
,后者是脚本块),并且鉴于 属性 定义在 同一行,它们必须是 ;
-分开了。
总而言之:
Commits = @(
@{ Id = "250"; LinkUrl = "gitUrl"; Comment = "someComment" }
)
我正在尝试使用此文档通过 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; using ,
, the array constructor operator 就足够了,尽管 @(...)
有助于提高视觉清晰度,并创建 空 (@()
) 或 单元素 数组 (@('foo')
), 这可能比 unary 使用 ,
(, 'foo'
)).
此外,您的数组 element 也必须是 hashtable(@{ ... }
,而不是 { ... }
,后者是脚本块),并且鉴于 属性 定义在 同一行,它们必须是 ;
-分开了。
总而言之:
Commits = @(
@{ Id = "250"; LinkUrl = "gitUrl"; Comment = "someComment" }
)