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

Joh*_*van 6 powershell manifest powershell-module

摘要

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

长版

创建新模块清单时,此模块所需的PowerShell最低版本以及所需的PowerShell主机的最低版本都有设置.即

New-ModuleManifest -Path '.\MyModule.psd1' -PowerShellVersion '5.0' -PowerShellHostVersion '2.0'

PowerShellVersion涉及$PSVersionTable.PSVersion.Major(NB:与主要版本有关,因为有效值都为其次要版本/没有构建或修订版号设置了0).

PowerShellHostVersion是我不清楚的那个.我的信念是,这与$Host.Version(即与之PowerShellHostName相关$Host.Name)有关.但是,根据我的经验,ISE(Windows PowerShell ISE Host)和ConsoleHost版本号都与PS版本一致; 因此,要求这些与PS版本不同步似乎很奇怪,如示例中所暗示的那样.我希望这些很少用于罕见用例的参数; 但是我想确保我已经正确理解了这些用途,以及是否存在适用的常见情况.

在这个例子值MSDN文档不同(即PowershellVersion给定5.0,而PowershellHostVersion获得2.0)

官方文档只给出了一个圆形的说明(即增加不超过参数名称本身就意味着更多的信息).

gms*_*man 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
Run Code Online (Sandbox Code Playgroud)

版本与 相关$Host.Version,名称与 相关$Host.Name

PS C:\> $Host.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      15063  674
Run Code Online (Sandbox Code Playgroud)

这篇 Shavy Levy 博客文章和链接的PowerShell 团队自 2010 年以来的后续文章提供了一段有趣的历史。在我的计算机上,我从控制台和 ISE 主机获得相同的输出$Host.Version
不知道 Power GUI 和其他提到的主机使用什么版本。