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:
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 33424695337
Url: https://administrator.de/contentid/33424695337
Ausgedruckt am: 26.11.2024 um 05:11 Uhr
3 Kommentare
Neuester Kommentar
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ß
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.Wenn man mehrere Instanzen startet, kann man diese ja mit $handle1,2,3... benennen.