`PowerShellVersion`和`PowerShellHostVersion`之间的区别是什么?

7

摘要

PowerShell模块清单值PowerShellVersionPowerShellHostVersion有什么区别?

详细说明

创建新模块清单时,既有此模块所需的PowerShell的最低版本设置,也有所需的PowerShell Host的最低版本设置。 例如:

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

PowerShellVersion$PSVersionTable.PSVersion.Major相关(注意:与主要版本相关,因为有效值所有都具有其次要版本/无构建或修订号)。

我不确定PowerShellHostVersion是什么意思。 我认为这与$Host.Version有关(即与PowerShellHostName相关联于$Host.Name)。 然而,在我的经验中,ISE(Windows PowerShell ISE Host)和ConsoleHost的版本号与PS版本相同; 因此,似乎奇怪要求这些与示例中暗示的PS版本不同步。 我希望这些是很少使用的参数,用于罕见的用例; 但我想确保我正确理解了这些参数的含义,以及是否存在常见情况下适用它们。

MSDN文档中的示例值不同(即PowershellVersion给出5.0,而PowershellHostVersion得到2.0

官方文档只提供循环描述(即仅添加与参数名称本身暗示的信息相同的信息)。


2
截至PowerShell 5.1,PowerShell远程主机版本为1.0。 - user4003407
1
关于 @PetSerAI 的评论:通过运行以下命令进行复现:Enter-PSSession -ComputerName . $Host.Version。主机名为 ServerRemoteHost$PSVersionTable 仍然显示为 5.1.14409.1012,这是预期的结果。 - JohnLBevan
在提升的命令提示符中运行 findstr /I /S /R "Host.*Version Host.*Name" *.psd1 命令,分别在 pushd "%psmodulepath%"for /F "delims=" %G in ( 'where powershell.exe' ) do pushd "%~dpG" 文件夹中执行。我找不到任何有用的 PowerShellHostVersion 出现。那么,你为什么要在你的模块中设置它呢? - JosefZ
@JosefZ:感谢您的调查;很高兴知道它没有在其他地方使用。我不想使用它,只是想了解它,以便知道何时使用它/可能性是什么。 - JohnLBevan
2
NuGet 模块(Microsoft Visual Studio)和 VS.psd1(位于 Microsoft Web Tools 下)中都发现了 PowerShellHostVersion = '1.2',同时在这两种情况下都有 PowerShellHostName = 'Package Manager Host'。希望对你有所帮助。 - JosefZ
1个回答

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

Shavy Levy的博客文章PowerShell团队的跟进(2010年)提供了一个有趣的历史。在我的电脑上,从控制台和ISE主机中,$Host.Version输出相同。
不知道Power GUI和其他提到的主机使用哪个版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接