私は以下のことを達成できない理由を理解することができません:エクスポートするpowershellモジュールの変数を初期化する
モジュール内に一連の変数を作成します。 モジュール内の関数に何かをさせ、親スコープ変数を変更した値で更新します。 モジュールを同じ関数を呼び出し、更新された値をモジュールをインポートしたスクリプトで使用可能にするスクリプトにインポートします。
例えば モジュールLibは、以下を有する:
$psVarx = -1
function Init {
$psVarx = 2
$script:psVarx = $psVarx
}
Export-Member -variable $psVarx
モジュールを使用してスクリプトは、以下を有する:
Import-Module Lib -Force
Init
"psVarx is {0}" -f $psVarx
受信出力が
ありますpsVarx is -1
質問は、モジュール内の変数のスクリプトスコープ付きコピーを更新した場合、モジュールを使用するスクリプトで変数の更新された値が表示されないのはなぜですか?問題がスコープと関係していると私は確信しています。私はここで何が欠けていますか?
モジュールを初期化し、モジュールを初期化し、モジュールをインポートするコードで使用できるように変数を設定する必要がある場合に、モジュール変数を初期化するために推奨される方法は何ですか?
この特定のケースでは、私はモジュール内で初期化し、新たに初期化された値をエクスポートすることを望む何十もの変数を持っています。
PowerShellのV3で
あなたが投稿したコードが与えられていると、結果は私が期待していたように見えます。あなたのコードは 'Init'関数を呼び出すことはないので、' $ psVarx'を設定する唯一のコードは '$ psVarx = -1'の行です。 –
私の間違いは、私が実際に持っているコードはInit関数を呼び出しています。投稿を更新できるかどうかがわかります。ありがとう。 –