PowerShell 5 で変数の上限、最大数が 4096 になる理由

PowerShell 5 で変数の上限、最大数が 4096 になる理由について書かれた情報がありました。

 

変数に多くの値を格納する必要がある場合に、上限が気になりました。

 

以下は質問の抜粋です。

 

楽しみのために、そのコードを実行しました:

for ($i = 0; $i -le 9999; ++$i) { New-Variable $i $i -ErrorAction Stop }
PowerShell 5.1 は以下を返しました。

New-Variable : Cannot create variable 4073 because variable capacity 4096 is exceeded for this scope.

しかし、PowerShell 7.0.3では、 1 ミリオンfor変数を作成するように変更しました。そして、私は待つのにうんざりしています..7 GBのRAMを食べた ときにキャンセルしました...その瞬間は18,401,068でした!
pwsh
$i

これは、PS 7.0.3 では変数の数に制限がないか、変数の数が非常に多いことを意味していました。

では、 PS 5.1で4096 個の変数カウントに制限があるのはなぜですか?

 

PowerShell7の場合は、上限はかなり多いようです。

 

 

ある時点で、誰かがそれは良い考えだと思ったからです。それでおしまい。

PowerShell での変数操作は非常に高価であり、メモリ効率が非常に優れていないため、誰かが追加したのかもしれません。おそらく、開発者の 1 人がテスト中にあなたと同じようなループを実行し、彼のマシンのすべてのメモリを使い果たし、簡単な一時しのぎのように思えました。私たちは決して知らないかもしれません。

公開されている情報からわかることは、 PowerShell Core 6.0 の GA リリースよりずっと前に制限が削除されたということです。これは、制限を維持する正当な理由がなかったためです。

 

「引用元」

https://stackoverflow.com/questions/63983784/why-is-the-maximum-variables-count-4096-in-powershell-5

 

使用しているバージョンで上限にあたる可能性があるので、参考までに。

 

Anker PowerCore 10000 (10000mAh 大容量 モバイルバッテリー)【PSE技術基準適合/PowerIQ搭載】 iPhone&Android対応 (ブラック)