c20082005
Goto Top

Schließen der Runspaces - welche ist welche?

Hallo zusammen,

eine Frage, auf die ich im Internet keine Antwort gefunden habe:

Ich starte mehrere Runspaces, indem ich folgenden Code ausführe:
# 1 starten
$rsPool = [runspacefactory]::CreateRunspacePool(1, $env:NUMBER_OF_PROCESSORS)
$rsPool.Open()

$PSinstance = [powershell]::Create().AddScript($Code)
$PSinstance.RunspacePool = $rsPool
$Handle=$PSinstance.BeginInvoke()

# 2
# Warten und Sonstiges

# 3 aufräumen
$runspaces = Get-Runspace | Where { $_.RunspaceAvailability -eq "Available" }  
foreach( $runspace in $runspaces )
{
    [void]$runspace.Dispose()
}

Ich würde gerne das Warten auf Beendigung so modifizieren, dass nur auf eine spezielle Instanz gewartet wird.

Beispiel:
Wenn ich eine Instanz starte, so erhält diese eine Nummer:
$PSinstance.InstanceId
62e2e880-5396-4920-9562-5b5...

Wenn ich dann mit "Get-Runspace" abfrage, so erhält eben diese eine völlig andere Nummer:
$runspace.InstanceId
0f31db1c-6d4a-4c0b-8170-e70...

Meine Frage:
Wenn ich mehrere Instanzen starte, wie kann ich diese eindeutig identifizieren?
Gibt es einen Zusammenhang zwischen der $PSinstance.InstanceId und der $runspace.InstanceId?
Kann ich eine starten und dann mit einer speziellen ID "verfolgen" - d.h. weiter verarbeiten?

Gruß

Klaus

Content-ID: 33424695337

Url: https://administrator.de/contentid/33424695337

Ausgedruckt am: 26.11.2024 um 05:11 Uhr

12168552861
12168552861 05.04.2024 aktualisiert um 12:54:31 Uhr
Goto Top
Ich würde gerne das Warten auf Beendigung so modifizieren, dass nur auf eine spezielle Instanz gewartet wird.

Hier mit bekommst du ja den Job
$Handle=$PSinstance.BeginInvoke()
Somit kannst du auf dessen Ende einfach hiermit warten
$handle = $PSinstance.BeginInvoke()
while(!$handle.IsCompleted){sleep 1}
# tu hier was wenn fertig
# z.B. den Output des Skriptes abrufen
$result = $PSinstance.EndInvoke($handle)

Gruß
c20082005
c20082005 05.04.2024 um 17:18:34 Uhr
Goto Top
Perfekt.
Wenn man mehrere Instanzen startet, kann man diese ja mit $handle1,2,3... benennen.

Danke für die Infos!

Klaus
12168552861
12168552861 05.04.2024 aktualisiert um 18:51:30 Uhr
Goto Top
Gerne.
Zitat von @c20082005:
Wenn man mehrere Instanzen startet, kann man diese ja mit $handle1,2,3... benennen.
Würde ich dann eher eine Array/ArrayList/Hashtable mit CustomObjects erstellen und die Instanzen darin speichern statt x Variablen mit Nummern-Prefix zu erstellen.