摘要
PowerShell模块清单值PowerShellVersion
和PowerShellHostVersion
之间的区别是什么?
长版
创建新模块清单时,此模块所需的PowerShell最低版本以及所需的PowerShell主机的最低版本都有设置。即。
New-ModuleManifest -Path '.\MyModule.psd1' -PowerShellVersion '5.0' -PowerShellHostVersion '2.0'
PowerShellVersion
与$PSVersionTable.PSVersion.Major
有关(注意:与主要版本有关,因为有效值的次要版本都没有设置0 /没有版本号或修订版号。)
PowerShellHostVersion
是我不清楚的。我的信念是,这与$Host.Version
有关(即PowerShellHostName
与$Host.Name
有关。但是,根据我的经验,ISE(Windows PowerShell ISE Host
)和ConsoleHost
的版本号都与PS版本一致;因此,要求这些与PS版本不同步似乎很奇怪,如示例中所暗示的那样。我希望这些很少用于罕见用例的参数;但我想确保我已经正确理解了这些用途,以及是否存在适用的常见情况。
MSDN's documentation中的示例值不同(即PowershellVersion
为5.0
,而PowershellHostVersion
为2.0
)
Official Documentation只给出一个循环描述(即不再添加参数名称本身所暗示的信息)。
答案 0 :(得分:0)
我认为这与
有关$Host.Version
你的信念是正确的。通过修改生成的清单来对此进行测试,以将PowerShellHostVersion
的值设置为6.0
。导入时,收到错误:
Import-Module : The current Windows PowerShell host is: 'ConsoleHost' (version
5.1.15063.674). The module 'C:\MyModule.psd1' requires a minimum Windows PowerShell
host version of '6.0' to run.
At line:1 char:1
+ Import-Module .\MyModule.psd1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (C:\MyModule.psd1:String) [Import-M
odule], InvalidOperationException
+ FullyQualifiedErrorId : Modules_InsufficientPowerShellHostVersion,Microsoft.PowerShel
l.Commands.ImportModuleCommand
与$Host.Version
相关的版本,名称与$Host.Name
PS C:\> $Host.Version
Major Minor Build Revision
----- ----- ----- --------
5 1 15063 674
This Shavy Levy blog post以及2010年的关联PowerShell Team follow up给出了一段有趣的历史。在我的机器上,我从Console和ISE主机获得$Host.Version
的相同输出
不知道Power GUI和其他提到的主机使用的版本。