Проблема в том, что Select-Object -ExpandProperty id
отправляет System.Int32
, что не соответствует ожиданиям Receive-Job
для связывания ISA / HASA. Удалите -ExpandProperty
, чтобы сохранить System.Management.Automation.PSCustomObject
со свойством ID.
Get-Job -Id 1 | Select-Object -ExpandProperty childjobs | Where-Object {$_.state -eq 'Completed'} | Select-Object id | Receive-Job
Если вы хотите увидеть мельчайшие детали того, почему System.Int32
не связывался с Receive-Job
, вы можете использовать Trace-Command
. Этот упрощенный пример пытается связать Int32
(текущий идентификатор процесса) с Get-Process
.
Trace-Command -Name ParameterBinding -Option All -Expression { $PID | Get-Process } -PSHost
Вывод этой команды слишком длинный, но он показывает вам все, что PowerShell пытался сделать, чтобы связать вышестоящий объект с нижестоящим командлетом.