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
4

2 回答 2

1

我在发布问题之前的最终测试提供了答案:

似乎“#Requires”命令旨在在脚本不满足要求而不是发布错误时中断脚本,并且在单行上对其进行测试将导致错误。

要进行测试,请找到您的 PowerShell 版本(例如 5.1)并将以下转置 5.1 与您的(major.minor)版本一起保存:

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

这将适用于 ISE 和控制台,即使“使用 PowerShell 运行”也能提供输出。

  • 单独使用 #Requires -(anything) 行将显示错误。
    • 在 ISE 中,“运行选择”将起作用,只要它伴随着另一行代码。
  • 使用 ISE,如果 #Requires 参数与您的参数不匹配,则会引发更具描述性的错误。如果在控制台中运行,它将中断并关闭。
于 2018-05-22T04:25:10.153 回答
1
$versionMinimum = [Version]'5.0'

if ($versionMinimum -gt $PSVersionTable.PSVersion) { 
    throw "You need Powershell Version $versionMinimum to run this script" 
}
于 2018-05-22T04:45:41.237 回答