Вот простая функция, которая использует 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 также продолжает потреблять пару гигабайт оперативной памяти. После этой задержки использование ОЗУ возвращается к нормальной работе, IntelliSense работает, и все реагирует. Даже завершение переменной $abc
является отзывчивым.
В любом случае, чтобы избежать длительной начальной задержки?
Вы пытались инициализировать набор в глобальном пространстве имен, прежде чем указывать его внутри функции? –