How to get current runspace of RunspacePool

Viewed 338

I have multiple commands run in parallel in separate runspaces, managed by a RunspacePool.

How can I determine the runspace each command is running in?

param (
    $MaxRunspaces = 4,
    $JobCount = 20
)
try {
    $pool = [RunspaceFactory]::CreateRunspacePool(1, $MaxRunspaces)
    $pool.Open()
    $jobs = 1..$JobCount | foreach {
        $ps = [PowerShell]::Create()
        $ps.RunspacePool = $pool
        [void]$ps.AddScript({
            # get current runspace here ???
            # $runspace = ...
        })
        [PSCustomObject]@{
            PowerShell = $ps
            AsyncResult = $ps.BeginInvoke()
        }
    }
    $jobs | foreach {
        $_.PowerShell.EndInvoke($_.AsyncResult)
        $_.PowerShell.Dispose()
    }
}
finally {
    $pool.Dispose()
}
0 Answers
Related