1. ホーム
  2. powershell

[解決済み] グローバル変数名が関数に渡された変数である関数からPowerShellのグローバル変数を設定する

2022-03-07 05:40:36

質問

関数からグローバル変数を設定する必要があるのですが、その方法がよくわかりません。

# Set variables
$global:var1
$global:var2
$global:var3

function foo ($a, $b, $c)
{
    # Add $a and $b and set the requested global variable to equal to it
    $c = $a + $b
}

関数を呼び出す。

foo 1 2 $global:var3

最終結果

$global:var3 は 3 に設定されます。

あるいは、このように関数を呼び出したら。

foo 1 2 $global:var2

最終結果

$global:var2 は 3 に設定されます。

この例で理解していただけたでしょうか?この関数に渡される3番目の変数は、設定する変数の名前です。

解決方法は?

を使用することができます。 Set-Variable コマンドレットを使用します。 渡すのは $global:var3 を送信します。 $var3 これは、あなたが望んでいることではありません。 あなたが送りたいのは 名前 .

$global:var1 = $null

function foo ($a, $b, $varName)
{
   Set-Variable -Name $varName -Value ($a + $b) -Scope Global
}

foo 1 2 var1

しかし、これはあまり良いプログラミングのやり方ではありません。 下の方がずっとわかりやすいし、後でバグが発生する可能性も低くなります。

$global:var1 = $null

function ComputeNewValue ($a, $b)
{
   $a + $b
}

$global:var1 = ComputeNewValue 1 2