PowerShell "произошла ошибка при создании конвейера" #Requires -Version 3.0 - PullRequest
0 голосов
/ 22 мая 2018

При попытке использовать любую из команд #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

Ответы [ 2 ]

0 голосов
/ 22 мая 2018
$versionMinimum = [Version]'5.0'

if ($versionMinimum -gt $PSVersionTable.PSVersion) { 
    throw "You need Powershell Version $versionMinimum to run this script" 
}
0 голосов
/ 22 мая 2018

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

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

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

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

Это будет работать как на ISE, так и на консоли, предоставляя вывод, даже если 'Run with PowerShell'.

  • Использование отдельной строки #Requires - (any) отобразит ошибку,
    • В ISE 'Выбор запуска' будет работать, если он сопровождается другой строкой кода.
  • Использование ISE, если параметр #Requires не совпадаетВаш, это вызовет более описательную ошибку.Если запустить в консоли, он сломается и закроется.
...