diff --git a/Start-SPMigrationGUI.ps1 b/Start-SPMigrationGUI.ps1 index 72c7fc8..084c91b 100644 --- a/Start-SPMigrationGUI.ps1 +++ b/Start-SPMigrationGUI.ps1 @@ -800,6 +800,7 @@ $script:CurrentMappingMeta = [ordered]@{ } $script:IsMigrationRunning = $false $script:MigrationPowerShell = $null +$script:MigrationRunspace = $null $script:MigrationAsyncResult = $null $script:MigrationOutput = $null $script:MigrationTimer = $null @@ -1107,6 +1108,10 @@ function Clear-MigrationRunState { $script:MigrationPowerShell.Dispose() } + if ($null -ne $script:MigrationRunspace) { + $script:MigrationRunspace.Dispose() + } + if ($null -ne $script:MigrationOutput) { try { $script:MigrationOutput.Dispose() @@ -1116,6 +1121,7 @@ function Clear-MigrationRunState { } $script:MigrationPowerShell = $null + $script:MigrationRunspace = $null $script:MigrationAsyncResult = $null $script:MigrationOutput = $null $script:MigrationCompletedHandler = $null @@ -1207,7 +1213,13 @@ function Invoke-MigrationScript { } Reset-MigrationStreamPositions + $script:MigrationRunspace = [runspacefactory]::CreateRunspace() + $script:MigrationRunspace.ApartmentState = [System.Threading.ApartmentState]::STA + $script:MigrationRunspace.ThreadOptions = [System.Management.Automation.Runspaces.PSThreadOptions]::ReuseThread + $script:MigrationRunspace.Open() + $script:MigrationPowerShell = [powershell]::Create() + $script:MigrationPowerShell.Runspace = $script:MigrationRunspace $script:MigrationOutput = [System.Management.Automation.PSDataCollection[psobject]]::new() $script:MigrationCompletedHandler = $OnCompleted $script:MigrationActionLabel = $ActionLabel