【问题标题】:Difference between `PowerShellVersion` and `PowerShellHostVersion``PowerShellVersion` 和 `PowerShellHostVersion` 之间的区别
【发布时间】:2017-11-08 15:01:34
【问题描述】:

总结

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 中的示例值不同(即PowershellVersion 被赋予5.0,而PowershellHostVersion 得到2.0

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

【问题讨论】:

  • 从 PowerShell 5.1 开始,PowerShell 远程主机的版本为 1.0。
  • 关于@PetSerAI 的评论:通过运行转载:Enter-PSSession -ComputerName .$Host.Version。主机名是ServerRemoteHost。正如预期的那样,$PSVersionTable 仍然提供5.1.14409.1012
  • pushd "%psmodulepath%"for /F "delims=" %G in ( 'where powershell.exe' ) do pushd "%~dpG" 文件夹中运行findstr /I /S /R "Host.*Version Host.*Name" *.psd1(从提升的命令提示符)。我找不到任何有用的PowerShellHostVersion 外观。那么,为什么你想在你的模块中设置它?
  • @JosefZ:感谢调查;很高兴知道它没有在其他地方使用。我不想使用它;只是为了理解它,以便我知道何时使用它/有什么可能性。
  • NuGet 模块 (Micosoft Visual Studio) 和 VS.psd1(在 Microsoft Web Tools 下)以及 PowerShellHostName = 'Package Manager Host' 中都找到了 PowerShellHostVersion = '1.2'。 HTH。

标签: powershell manifest powershell-module


【解决方案1】:

我认为这与$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 和链接的 PowerShell Team follow up 从 2010 年开始提供有趣的历史。在我的机器上,我从控制台和 ISE 主机获得了相同的 $Host.Version 输出。
不知道 Power GUI 和其他提到的主机使用什么版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 2020-05-10
    • 2014-09-20
    • 2010-10-28
    • 2015-10-04
    • 2012-08-12
    • 2011-02-18
    • 2019-12-21
    相关资源
    最近更新 更多