При попытке использовать любую из команд #Requires, например:
#Requires -Version 3.0
Они ошибаются с текстом:
Произошла ошибка при создании конвейера. + CategoryInfo: NotSpecified: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId: RuntimeException
Я тестировал это на ISE и в консоли с теми же результатами, мои версии ниже:
Name Value ---- ----- PSVersion 5.1.14409.1012 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.14409.1012 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1
$versionMinimum = [Version]'5.0'
if ($versionMinimum -gt $PSVersionTable.PSVersion) {
throw "You need Powershell Version $versionMinimum to run this script"
}
Мой последний тест перед отправкой вопроса дал ответ:
Кажется, что команды “#Requires” предназначены для выхода из сценария, если он не отвечает требованиям, а не публикует сообщение об ошибке, и тестирование его на одной строке приведет к ошибке.
Чтобы проверить, найдите версию PowerShell (например, 5.1) и сохраните следующую перенос 5.1 с вашей версией (major.minor):
#Requires -version 5.1
$PSVersionTable.PSVersion
Read-Host
Это будет работать как на ISE, так и на консоли, обеспечивая вывод, даже если “Запустить с помощью PowerShell”.
- С помощью строки #Requires – (ничего) вы увидите ошибку.
- В ISE “Выполнить выбор” будет работать, если он сопровождается другой строкой кода.
- Использование ISE. Если параметр #Requires не соответствует вашему, это вызовет более описательную ошибку. Если вы запустите консоль, она сломается и закроется.