3

私はPowershellを学び、ここの例のようなGUIインターフェイスを作成しようとしています。

ただし、これをそのまま実行すると、$x定義されません。私が間違っている可能性があることは何か考えていますか?私はそれが何かと関係があることを知っています:

$OKButton.Add_Click({$x=$objListBox.SelectedItem;$objForm.Close()})

なぜなら、私がそれを次のように変更した場合:

$OKButton.Add_Click({Write-Host "worked";$objForm.Close()})

戻りworkedます。

4

2 に答える 2

9

アクションブロックは別のローカルスコープで実行されています。グローバル(セッション全体)変数を変更するには、scope-modifier($global:varname)を使用します。例えば:

$OKButton.Add_Click({$global:x=$objListBox.SelectedItem;$objForm.Close()})

Technetのスコープの詳細-about_Scopes(またはGet-Help about_scopesPowerShellでの書き込み)

于 2013-02-06T22:59:47.763 に答える
0

代わりに、を$Global:variable使用し$Script:variableて、スクリプトに対する変数のスコープを拡大することもできます。したがって、A関数を使用してボタンを作成し、関数内に関数もある場合.Add_Click({})、関数スコープ内で機能します。変数は、$Script:変数のスコープを最も近い親スクリプトファイルのスコープに拡大します。

于 2019-09-17T17:53:12.060 に答える