New-Runspace¶
Function New-Runspace( [scriptblock] $scriptToRun, [Management.Automation.Runspaces.RunspaceConfiguration] $configuration=$null, [switch] $RunInstance, [switch] $InteractWithHost )Usage :
Crée un objet personalisé encapsulant un runspace dans lequel sera exécuté de manière asynchrone le scriptblock $scriptToRun.
Paramètres :
- $scriptToRun Contient le code à exécuter.
- $configuration permet de charger des fonctions additionnells dans la configuration du runspace.
- $RunInstance spécifie l'exécution asynchrone immédiate du runspace, sinon utilisez $Runspace.InvokeAsync($RS1.Command)
- $InteractWithHost : Configure le runspace afin d'interagir avec un host, on autorise l'affichage vers la console PowerShell.
Exemples :
#------------- Exemple 1 ------------------------------------- $RS1=New-RunSpace -interact { Write-host("Début de RS1`r`n"); 1..5|% {Write-host "[Runspace]Element $_"} #sleep -m 500 Write-host("Fin de RS1`r`n") }#RS1 $RS1 $RS1.InvokeAsync($RS1.Command); 1..10|% {Write-host "[Session PowerShell]Element $_"}#;sleep -m 500 } $RS1 #Libére le runspace if (!$Rs1.IsRunning) {$RS1.RunSpace.Close();$RS1=$null} else { "Le runspace est en cours d'exécution" #On peut forcer l'arrêt du pipeline #$RS1.Stop() #$RS1.RunSpace.Close();$RS1=$null } #------------- Exemple 2 ------------------------------------- $RS1=New-RunSpace -interact { $c=($input|measure-object).Count Write-host "Count= $c" }# RS1 $Tab=1..5 #Envoie,dans le pipeline du runspace, le tableau $TAB élément par élément $RS1.InvokeAsync($RS1.Command,$Tab) #Envoie le tableau comme un seul élément $RS1.InvokeAsync($RS1.Command,@(,$Tab)) #------------- Exemple 2-1 ------------------------------------- $RS1=New-RunSpace { $input|sort-object} $RS1.InvokeAsync($RS1.Command,"C","A","B") $RS1.Result #-> ABC