I'm playing around with creating and destroying runspaces. Everything seems to work as expected, but when I'm trying to access Runspace.name property I get duplicated name someName someName. Here's doc reference to this property
Expected output
RUNSPACE Boobs CREATED
RUNSPACE Boobs DESTROYED
Actual output
RUNSPACE Boobs CREATED
RUNSPACE Boobs Boobs DESTROYED
Code
function main {
$runspaceObject = createRunspace "Boobs"
$output = destroyRunspace $runspaceObject
}
function createRunspace {
param($name)
$hash = [hashtable]::Synchronized(@{})
$runspace = [runspacefactory]::CreateRunspace()
$runspace.Name = $name
$runspace.Open()
$runspace.SessionStateProxy.SetVariable('hash', $hash)
$powershell = [powershell]::Create()
$powershell.Runspace = $runspace
$powershell.AddScript({
return "RUNSPACE RETURN VALUE"
})
$runspaceObject = @{
handle = $powershell.BeginInvoke()
runspace = $runspace
powershell = $powershell
hash = $hash
}
Write-Host "RUNSPACE $name CREATED"
return $runspaceObject
}
function destroyRunspace {
param($runspaceObject)
$output = $runspaceObject.powershell.EndInvoke($runspaceObject.handle)
$runspaceObject.runspace.Close()
$runspaceObject.powershell.Dispose()
$name = $runspaceObject.runspace.name
Write-Host "RUNSPACE $name DESTROYED"
return $output
}
main