PowerShell "возникла ошибка при создании конвейера" #Requires -Version 3.0

Вопрос:

При попытке использовать любую из команд #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
Ответ №1
$versionMinimum = [Version]'5.0'

if ($versionMinimum -gt $PSVersionTable.PSVersion) {
throw "You need Powershell Version $versionMinimum to run this script"
}

Ответ №2

Мой последний тест перед отправкой вопроса дал ответ:

Кажется, что команды “#Requires” предназначены для выхода из сценария, если он не отвечает требованиям, а не публикует сообщение об ошибке, и тестирование его на одной строке приведет к ошибке.

Чтобы проверить, найдите версию PowerShell (например, 5.1) и сохраните следующую перенос 5.1 с вашей версией (major.minor):

#Requires -version 5.1
$PSVersionTable.PSVersion
Read-Host

Это будет работать как на ISE, так и на консоли, обеспечивая вывод, даже если “Запустить с помощью PowerShell”.

  • С помощью строки #Requires – (ничего) вы увидите ошибку.
    • В ISE “Выполнить выбор” будет работать, если он сопровождается другой строкой кода.
  • Использование ISE. Если параметр #Requires не соответствует вашему, это вызовет более описательную ошибку. Если вы запустите консоль, она сломается и закроется.
Оцените статью
TechArks.Ru
Добавить комментарий