【问题标题】:PowerShell "an error occurred while creating the pipeline" #Requires -Version 3.0PowerShell“创建管道时出错”#Requires -Version 3.0
【发布时间】:2018-10-31 18:07:51
【问题描述】:

当尝试使用任何 #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

【问题讨论】:

  • about_Requires 帮助主题解释了#requires 语句的工作原理。如果版本不足,它会阻止 整个 脚本运行。这是设计使然。
  • 我发布这个(和答案)的原因是我在任何地方都找不到关于它的信息(包括帮助)。正如我之前遇到过的问题一样,我认为其他人如果发现这篇文章也可能会受益。

标签: powershell requires


【解决方案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 -(anything) 行将显示错误。
      • 在 ISE 中,“运行选择”将起作用,只要它伴随着另一行代码。
    • 使用 ISE,如果 #Requires 参数与您的参数不匹配,则会引发更具描述性的错误。如果在控制台中运行,它会中断并关闭。

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2023-03-05
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      相关资源
      最近更新 更多