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対応 (ブラック) |