Receive-Job 的输出与直接命令不同
Receive-Job has different output than a direct command
我一直在我的脚本中使用这个命令
$jira = Get-JiraIssue -Query $jiraQuery -Credential $jiraCred | Select-Object Assignee,customfield
这导致数组如下:
Assignee customfield
---- ----
Unassigned D00525FFKSAN0
first.last 1FLSALF05
但是,如果我 运行 在 Start-Job 脚本块中使用相同的命令:
Start-Job -Name Jira -ScriptBlock {param($jiraQuery,$jiraCred) Get-JiraIssue -Query $jiraQuery -Credential $jiraCred | Select-Object Assignee,customfield} -ArgumentList $jiraQuery, $jiraCred
Receive-Job -Name JIra -Keep
最终结果如下:
Assignee : Unassigned
customfield : ASLFDSGLDMF06
RunspaceId : a670925b-537a-4d54-adce-89c693f3fa9d
--------
Assignee : @{TimeZone=America/Los_Angeles; Key=JIRAUSER0000; AvatarUrl=; Groups=; Active=True; AccountId=; DisplayName=First Last; EmailAddress=first.last@jira.com; Locale=; RestUrl=https://jira.com/rest/api/2/user?username=first.last; Name=first.last}
customfield : ASLFDSGLDMF05
RunspaceId : a670925b-537a-4d54-adce-89c693f3fa10d
我尝试在工作结果上使用 -ExpandProperty,但随后受让人 属性 接管并导致:
Name DisplayName Active
---- ----------- ------
first.last First Last Yes
first.last2 First Last 2 Yes
first.last3 First Last 3 Yes
这里发生了什么?我似乎无法弄清楚如何通过 运行 在 Start-Job
之外直接执行命令来获得相同的结果
你的 Get-JiraIssue
有一个自定义格式视图,在他的评论中 serialization as Daniel 状态期间丢失。
为了解决这个问题,假设您正在寻找 Assignee
属性 中嵌套对象的 .Name
属性,您可以通过以下方式重新创建对象:
$job = Start-Job -Name Jira -ScriptBlock {
param($jiraQuery, $jiraCred)
Get-JiraIssue -Query $jiraQuery -Credential $jiraCred
} -ArgumentList $jiraQuery, $jiraCred
Receive-Job $job -Keep | ForEach-Object {
[pscustomobject]@{
Assignee = ($_.Assignee, $_.Assignee.Name)[[bool] $_.Assignee.Name]
customfield = $_.customfield
}
}
我一直在我的脚本中使用这个命令
$jira = Get-JiraIssue -Query $jiraQuery -Credential $jiraCred | Select-Object Assignee,customfield
这导致数组如下:
Assignee customfield
---- ----
Unassigned D00525FFKSAN0
first.last 1FLSALF05
但是,如果我 运行 在 Start-Job 脚本块中使用相同的命令:
Start-Job -Name Jira -ScriptBlock {param($jiraQuery,$jiraCred) Get-JiraIssue -Query $jiraQuery -Credential $jiraCred | Select-Object Assignee,customfield} -ArgumentList $jiraQuery, $jiraCred
Receive-Job -Name JIra -Keep
最终结果如下:
Assignee : Unassigned
customfield : ASLFDSGLDMF06
RunspaceId : a670925b-537a-4d54-adce-89c693f3fa9d
--------
Assignee : @{TimeZone=America/Los_Angeles; Key=JIRAUSER0000; AvatarUrl=; Groups=; Active=True; AccountId=; DisplayName=First Last; EmailAddress=first.last@jira.com; Locale=; RestUrl=https://jira.com/rest/api/2/user?username=first.last; Name=first.last}
customfield : ASLFDSGLDMF05
RunspaceId : a670925b-537a-4d54-adce-89c693f3fa10d
我尝试在工作结果上使用 -ExpandProperty,但随后受让人 属性 接管并导致:
Name DisplayName Active
---- ----------- ------
first.last First Last Yes
first.last2 First Last 2 Yes
first.last3 First Last 3 Yes
这里发生了什么?我似乎无法弄清楚如何通过 运行 在 Start-Job
之外直接执行命令来获得相同的结果你的 Get-JiraIssue
有一个自定义格式视图,在他的评论中 serialization as Daniel 状态期间丢失。
为了解决这个问题,假设您正在寻找 Assignee
属性 中嵌套对象的 .Name
属性,您可以通过以下方式重新创建对象:
$job = Start-Job -Name Jira -ScriptBlock {
param($jiraQuery, $jiraCred)
Get-JiraIssue -Query $jiraQuery -Credential $jiraCred
} -ArgumentList $jiraQuery, $jiraCred
Receive-Job $job -Keep | ForEach-Object {
[pscustomobject]@{
Assignee = ($_.Assignee, $_.Assignee.Name)[[bool] $_.Assignee.Name]
customfield = $_.customfield
}
}