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