摘要
PowerShell模块 list 值PowerShellVersion
和PowerShellHostVersion
有什么区别?
完整版
创建新模块 list 时,需要为此模块所需的最低PowerShell版本以及所需的PowerShell Host最低版本进行设置。 IE。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仅给出了循环描述(即,添加的信息不超过参数名称本身所暗示的信息)。
最佳答案
你的信念是正确的。通过修改生成的 list 将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提供了有趣的历史。在我的计算机上,我从控制台和ISE主机获得了与
$Host.Version
相同的输出。不知道Power GUI和其他提到的主机使用什么版本。