這是一個使用ValidateSet
一個簡單的函數:ValidateSet用3001元將導致長時間的停頓
function TestLongValidateSet
{
param
(
[ValidateSet(...)]
$abc
)
$abc
}
我的版本有3001項,而不是...
。
如果你想在家裏自己跟隨,這裏是產生適合放置在那裏3001元列表的方式:
(0..3000 | foreach { (Get-Random -Count 30 (65..90 | ForEach-Object { [char]$_ })) -join '' } | ForEach-Object { "`"$_`"" }) -join ', ' | Out-File test.txt
總之,上述功能加載到PowerShell中就好了。但是,首次嘗試使用IntelliSense會觸發多分鐘的延遲。 PowerShell ISE也會繼續消耗幾千兆字節的RAM。經過這段時間後,內存使用率回落到正常水平,智能感知工作,並且一切都很順暢。即使在$abc
變量的完成是響應。
有沒有辦法避免漫長的初始延遲?
您是否嘗試過在全局名稱空間中初始化該集合,然後在函數內指定它? –