我需要创建一个可以在Powershell7中运行并使用Powershell5中的commandlets的模块。
我想将此模块另存为工件,并在AzureDevOps工件中发布。
该模块用于审计跨平台的系统信息。问题是一些cmdlet是特定于Windows平台的,比如Get-WindowsFeature。我还想使用PowerShell核心功能,比如Azure Cosmos通信cmdlet。
如何仅在某些平台上加载函数?
你需要用C#写一些东西来实现这一点吗,或者在我的主模块中嵌套一个用于特定平台的模块?
发布于 2020-03-26 15:08:13
注释正确地指出,您可以使用版本检查来包装命令。对于小的use命令来说,这是一个很好的选择。作为一个更好的模块设计,我建议只有两个模块,每个平台一个。这将允许您更好地分离您的工作,而不是依赖于在不同平台上有条件地运行操作的许多嵌入式逻辑步骤。对我来说,这是更干净的。
当你开始使用模块时,我强烈建议你使用模板来引导你的项目。我发现它节省了很多时间,并为我提供了最佳实践。
我个人最喜欢的是PSModuleDevelopment,你可以这样使用它:
Install-Module PSModuleDevelopment -Scope CurrentUserGet-Help 'Invoke-PSMDTemplate'这非常类似于加载结构,一些非常成熟的项目,如dbatools和PSFramework的使用。如果您使用此功能,您将主要受益于:
我不再尝试编写自己的模块结构,而只是利用这样的开发模块,它对我非常有帮助。
祝好运!
https://stackoverflow.com/questions/60836625
复制相似问题