ScriptBlock.GetNewClosure () Verhalten

8

Ich versuche herauszufinden, wie ScriptBlock.GetNewClosure () funktioniert. Basierend auf diesem Thread (siehe Stejs Antwort) Ich habe diesen Code:

%Vor%

Die Ausgabe ist:

%Vor%

was erwartet wird, denn wenn die ScriptBlocks ausgeführt werden, wird der aktuelle $ i Wert verwendet. Dies kann mit GetNewClosure () geändert werden:

%Vor%

Diesmal ist die Ausgabe:

%Vor%

Das ist gut, aber wenn ich versuche, die ScriptBlocks als Jobs zu markieren:

%Vor%

Es gibt keine Ausgabe. Auf der Suche nach einer Antwort habe ich diesen -Thread gefunden, wobei x0n besagt, dass Jobs in einer dynamischen ausgeführt werden Modul. Module haben den Sitzungsstatus isoliert und teilen den Zugriff auf Globals. PowerShell-Closures funktionieren nur innerhalb derselben Sitzungsstatus- / Bereichskette

Bedeutet das, dass $ i nicht von Jobs aus erreichbar ist? Wenn ich seinen Wert teste:

%Vor%

$ ist gleich null.

    
Community 30.10.2010, 12:38
quelle

2 Antworten

6

Ja, dies bedeutet, dass $i auf diese Weise nicht von Jobs aus zugänglich ist. Unglücklicherweise. Verwenden Sie also einen anderen Weg: zum Beispiel param in einem Skriptblock, der als Job aufgerufen werden soll, und ArgumentList -Parameter von Start-Job :

%Vor%

Ausgabe:

%Vor%

P.S. Es wird berichtet, dass GetNewClosure auch nicht mit Register-ObjectEvent funktioniert: Ссылка

    
Roman Kuzmin 30.10.2010, 14:01
quelle
-1
%Vor%

Ссылка

    
binarySalt 05.12.2015 20:56
quelle

Tags und Links