我有一个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.0和C:\Foomodules\Foo-v1.3.
如果我的目标只有2.0或只有3.0,这就完美了.但是我需要同时支持两者.有没有办法做到这一点,没有编写一整套预处理来安装2.0或3.0特定的清单?我真的不想做这样的事情.
据我所知,v2清单和v3清单之间没有必要的更改.使用v2清单保持向后兼容性.
ModuleToProcess 在v3中运行得很好.
注意:在Windows PowerShell 2.0中,此密钥称为"ModuleToProcess".您可以使用"RootModule"参数名称或其"ModuleToProcess"别名.
资源: Get-Help New-ModuleManifest -Parameter RootModule
| 归档时间: |
|
| 查看次数: |
1153 次 |
| 最近记录: |