PowerShell 5.0 でジョブを使用すると、奇妙な動作に気付きました。を返すジョブを実行するとPSObject
、ハッシュテーブルも返されます。文字列、整数などを返すジョブは適切に機能します。
ランニング
Start-Job { New-Object PSObject -Property @{ A = 1 } } |
Receive-Job -Wait -AutoRemoveJob
戻り値
答え: 1 RunspaceId : 6921e85f-301e-4e95-8e4b-c0882fc2085f PSSourceJobInstanceId : 2992ef77-5642-4eac-8617-f26449a87801
ランニング
Start-Job { New-Object PSObject } | Receive-Job -Wait -AutoRemoveJob
戻り値
@{PSComputerName=localhost; RunspaceId=3e783d5f-254a-4951-bb4a-7ff6fa2812c5; PSShowComputerName=False; PSSourceJobInstanceId=1d951dec-0823-4cde-8219-4a6263550441}
ただし、実行中
Start-Job { ,@(New-Object PSObject -Property @{ A = 1 }) } |
Receive-Job -Wait -AutoRemoveJob
戻り値
あ - 1
Receive-Job
コマンドレットがそのハッシュテーブルをPSObject
sだけに追加するのはなぜですか?
更新: PowerShell 4.0 と同じです。