El Sanchez, о, спасибо большое! Как просто решаются сложные вопросы )) и как же сложно решить простые задачи ))
Я так понял, эта функция
function StrCmpLogicalW - сравнение строк в Unicode-формате встроенными средствами Win API (String Compare Logical Wide).
И вы мне подкинули решение сравнения версий. Немного не ясна для меня прозрачность логики работы (я так понял 5.2 была выставлена для теста?):
Код:

if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine', 'PowerShellVersion', PSVersion) or
(StrCmpLogicalW(PSVersion, '5.1') < 0) then
Я пытаюсь прочитать это и как-то загадочно это. Предположим у пользователя (у меня) установлена последняя версия PowerShell 5.1, тогда читаю:
- "Если не 5.1.14409.1005 (возвращает PSVersion из реестра) или 0.0.14409.1005 < 0 тогда... begin" и у меня пошла скачка и установка, даже если мне это не надо.
Первое условие из реестра получается никогда не выполняется, а служит только для доставания ключа из реестра в переменную
PSVersion?
Вторым условием производится сравнение версии из реестра с требуемой нами. Но тогда и оно не отрабатывает, тем более, если оставить там 5.2.
Или я не правильно эту конструкцию читаю?
По-моему, моя прежняя конструкция вполне прозрачна (для меня) и отрабатывает правильно, даже если завтра выйдет версия 10.
Этот мой код с учётом вашей поправки насчёт лишнего
ExpandConstant:
Код:

RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine','PowerShellVersion', PSVersion);
if Copy(PSVersion,1,3) < '5.1' then
Тут просто первой строкой захватываем из реестра версию в переменную
PSVersion и второй строкой производим сравнение. Через Copy отсекаем ненужные нам минорные цифры билда и оставляем для сравнения только первые 2 цифры (3 символа с точкой) и сравниваем с требуемой нам цифрой 5.1. Даже если выйдет версия 7.0 или 10.0 (навряд ли), тогда условие же всё равно будет выполняться, т.к. нам нужно чтобы версия PowerShell была не ниже 5.1, а то что старше и больше уже не важно.
На самом деле моей программе достаточно и PowerShell v5.0. Это прога по разбивке и упаковке папок на части по 4 Гб/2 Гб/Целиком, а так же, по загрузке файлов из интернета из XML со ссылками, контрольными суммами, и пр. тех. данными, и средствами PowerSell это удачно реализовалось.
Для справки: на Win 7 из коробки установлена PS 2.0, на Win 8.0 стоит PS 3.0, на Win 8.1 - PS 4.0, на Win 10 - 5.0. Последняя стабильная 5.1. И больше на Windows 10 мало вероятно что предвидится.