Add MigrationRunspace management to migration script functions

This commit is contained in:
Torsten Brendgen
2026-06-29 13:53:41 +02:00
parent 0702baf7f1
commit 369bd284a1

View File

@@ -800,6 +800,7 @@ $script:CurrentMappingMeta = [ordered]@{
} }
$script:IsMigrationRunning = $false $script:IsMigrationRunning = $false
$script:MigrationPowerShell = $null $script:MigrationPowerShell = $null
$script:MigrationRunspace = $null
$script:MigrationAsyncResult = $null $script:MigrationAsyncResult = $null
$script:MigrationOutput = $null $script:MigrationOutput = $null
$script:MigrationTimer = $null $script:MigrationTimer = $null
@@ -1107,6 +1108,10 @@ function Clear-MigrationRunState {
$script:MigrationPowerShell.Dispose() $script:MigrationPowerShell.Dispose()
} }
if ($null -ne $script:MigrationRunspace) {
$script:MigrationRunspace.Dispose()
}
if ($null -ne $script:MigrationOutput) { if ($null -ne $script:MigrationOutput) {
try { try {
$script:MigrationOutput.Dispose() $script:MigrationOutput.Dispose()
@@ -1116,6 +1121,7 @@ function Clear-MigrationRunState {
} }
$script:MigrationPowerShell = $null $script:MigrationPowerShell = $null
$script:MigrationRunspace = $null
$script:MigrationAsyncResult = $null $script:MigrationAsyncResult = $null
$script:MigrationOutput = $null $script:MigrationOutput = $null
$script:MigrationCompletedHandler = $null $script:MigrationCompletedHandler = $null
@@ -1207,7 +1213,13 @@ function Invoke-MigrationScript {
} }
Reset-MigrationStreamPositions 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 = [powershell]::Create()
$script:MigrationPowerShell.Runspace = $script:MigrationRunspace
$script:MigrationOutput = [System.Management.Automation.PSDataCollection[psobject]]::new() $script:MigrationOutput = [System.Management.Automation.PSDataCollection[psobject]]::new()
$script:MigrationCompletedHandler = $OnCompleted $script:MigrationCompletedHandler = $OnCompleted
$script:MigrationActionLabel = $ActionLabel $script:MigrationActionLabel = $ActionLabel