为什么 PowerShell 5 中的最大变量数是 4096

Why is the maximum variables count 4096 in PowerShell 5

只是为了好玩我运行那个代码:

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 中,我更改了 for 以创建 1 毫 变量。
我已经厌倦了等待......并在 pwsh 占用了我的 7 Gb RAM 时取消了它......
$i 那一刻是 18,401,068

意思是PS7.0.3对变量个数没有限制或者很高

那么为什么 4096 个变量在 PS 5.1 中有限制?

So why is there limit for 4096 variables count in PS 5.1?

因为有人在某个时候认为这是个好主意。就是这样。

可能有人添加了它,因为 PowerShell 中的变量操作非常昂贵并且内存效率不高。也许其中一位开发人员 运行 在测试期间出现了一个与您的循环非常相似的循环,它耗尽了他机器上的所有内存,这似乎是一个简单的权宜之计。我们可能永远不会知道。

我们可以从公开信息中得知,limitation was removed long before PowerShell Core 6.0 的 GA 版本 - 正是因为没有充分的理由保留它。