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
    }
}