Ich habe Probleme, Bereiche innerhalb von Skriptblöcken zu verstehen. Ich zählte eine Art Schließsystem, aber ich kann es nicht funktionieren sehen.PowerShell-Skriptblock-Variablenbereich
Ich habe eine Skript, die eine param und gibt eine andere Skript nimmt:
$sb1 = {
Param($Message1);
Write-Host $Message1;
{
Param($Message2);
Write-Host ($Message1 + " " + $Message2);
}
}
Um die innere Skript bekommen kann ich $ SB1 aufrufen wie: $sb2 = & $sb1 -Message1 "Message1"
Diese Echos „Message1“, so dass wir die param gebunden ist .
Jetzt kann ich $ SB2 wie aufrufen: & $sb2 -Message2 "Message2"
ich erwartet hatte "Message1 Message2" hätte, aber es schreibt nur "Message2" statt.
Gibt es eine Möglichkeit, auf die Variable $ Message1 zuzugreifen? Ich kann eine lokale Variable oder eine Skriptvariable nicht verwenden, da mehrere Instanzen des inneren Skriptblocks mit verschiedenen Message1s vorhanden sind.
Dies ist die tatsächliche Leistung von der eigentlichen Schale:
PS C:\> $h1 = { Param($Message1); Write-Host $Message1; { Param($Message2); Write-Host ($Message1 + " " + $Message2); } }
PS C:\> $h2 = & $h1 -Message1 "Message1"
Message1
PS C:\> $h2
Param($Message2); Write-Host ($Message1 + " " + $Message2);
PS C:\> & $h2 -Message2 "Message2"
Message2
Ich werde aktualisieren die Frage mit dem, was ich eigentlich renne. Es ist sehr ähnlich. – wensveen
Ah, habe die Zuweisung des Rückgabewertes verpasst. Okay, macht jetzt Sinn :) – Joey