安装支持PowerShell 2.0和3.0的PowerShell模块

Mik*_*ley 2 powershell

我有一个PowerShell模块,将安装在许多服务器上.该模块本身使用PowerShell 2.0功能,但需要能够在PowerShell 2.0环境和PowerShell 3.0环境中导入.

我想在PSModulePath中安装一个可以支持PowerShell 2.0或3.0的模块.就目前而言,2.0模块清单看起来像这样:

@{
    ModuleToProcess = "Foo.psm1" # Specific to PowerShell 2.0
    ModuleVersion = "1.0"
    GUID = "8C0AB478-81F7-4B54-B440-521201EAEC1C"
    PowerShellVersion = "2.0"
    FunctionsToExport = "*"
    CmdletsToExport = "*"
    AliasesToExport = "*"
    VariablesToExport = "*"
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,在3.0中,他们将其删除ModuleToProcess并替换为RootModule:

@{
    RootModule = "Foo.psm1" # Specific to PowerShell 3.0
    ModuleVersion = "1.0"
    GUID = "8C0AB478-81F7-4B54-B440-521201EAEC1C"
    PowerShellVersion = "2.0"
    FunctionsToExport = "*"
    CmdletsToExport = "*"
    AliasesToExport = "*"
    VariablesToExport = "*"
}
Run Code Online (Sandbox Code Playgroud)

我的模块目前已部署,因此它们看起来像:

C:\FooModules
  Foo-v1.0
    Foo
      Foo.psm1
      Foo.psd1
  Foo-v1.3
    Foo
      Foo.psm1
      Foo.psd1
Run Code Online (Sandbox Code Playgroud)

我的PSModulePath配置为包含C:\FooModules\Foo-v1.0C:\Foomodules\Foo-v1.3.

如果我的目标只有2.0或只有3.0,这就完美了.但是我需要同时支持两者.有没有办法做到这一点,没有编写一整套预处理来安装2.0或3.0特定的清单?我真的不想做这样的事情.

Fro*_* F. 6

据我所知,v2清单和v3清单之间没有必要的更改.使用v2清单保持向后兼容性.

ModuleToProcess 在v3中运行得很好.

注意:在Windows PowerShell 2.0中,此密钥称为"ModuleToProcess".您可以使用"RootModule"参数名称或其"ModuleToProcess"别名.

资源: Get-Help New-ModuleManifest -Parameter RootModule