1. ホーム
  2. powershell

[解決済み】PowerShellの関数で変数をインクリメントする

2022-02-14 21:54:21

質問

PowerShell 関数で変数をインクリメントするにはどうしたらいいですか?

以下の例では、関数に入力されるデータがない状態で使用しています。関数が呼ばれるたびに変数をインクリメントしたいのです。変数$increには1が加算され、スクリプトが完了すると$increの合計が表示されます。

関数comparethisが4回実行され、そのたびに$increが1ずつ増加したためです。

 $incre = 0

 function comparethis() {
     # Do this comparison

    $incre++
    Write-Host $incre
 }

 comparethis #compare 2 variables
 comparethis #compare 2 variables
 comparethis #compare 2 variables
 comparethis #compare 2 variables

 Write-Host "This is the total $incre"

解決方法は?

動的スコープの問題に遭遇しています。参照 スコープについて . 関数内部では$increは定義されていないので、グローバルスコープからコピーされます。グローバルな$increは変更されません。もし、修正したい場合は、以下のようにします。

$incre = 0

function comparethis() {
    #Do this comparison

    $global:incre++
    Write-Host $global:incre
}

comparethis #compare 2 variables
comparethis #compare 2 variables
comparethis #compare 2 variables
comparethis #compare 2 variables

Write-Host "This is the total $incre"