`PowerShellVersion`和`PowerShellHostVersion`之间的区别

时间:2017-11-08 15:01:34

标签: powershell manifest powershell-module

摘要

PowerShell模块清单值PowerShellVersionPowerShellHostVersion之间的区别是什么?

长版

创建新模块清单时,此模块所需的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中的示例值不同(即PowershellVersion5.0,而PowershellHostVersion2.0

Official Documentation只给出一个循环描述(即不再添加参数名称本身所暗示的信息)。

1 个答案:

答案 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和其他提到的主机使用的版本。