问题:
使用PowerShell 5.1时,我无法成功地将非整体脚本模块发布到本地PowerShell库,并且我的模块包含7个或更多功能。使用6个或更少的功能即可正常发布。
示例:FunctionsToExport ='Get-Test1','Get-Test2','Get-Test3','Get-Test4','Get-Test5','Get-Test6','Get-Test7'>
发布始终挂在“ VERBOSE:对目标执行“发布模块”操作...”,但从未完成。
我没有看到任何错误,所以不确定它为什么挂起。
有效的方法:
当它包含6个或更少的函数时,我可以成功地将我的非整体脚本模块发布到本地PowerShell Gallery。
示例:FunctionsToExport ='Get-Test1','Get-Test2','Get-Test3','Get-Test4','Get-Test5','Get-Test6'
这很好:VERBOSE:模块发布成功...
如果我只是简单地添加一个功能并更新清单,那么如果不再在同一位置再次挂起,我将无法发布。
我很确定我错过了一个步骤,但是我很难弄清楚自己错过了什么。
我正在通过阅读Mike F Robbins和观看他的blog posts来学习presentations的非整体脚本模块设计。该设计的要点是每个功能都位于一个单独的PS1文件中,该文件源于PSM1文件。
我如何构建脚本模块的摘要:
这就是我将模块发布到本地PSGallery的方式。
Publish-Module -Path 'G:\_temp\JnTestModule' -Repository JnPowerShellGallery -NuGetApiKey 'AnyStringWillDo' -Verbose -InformationAction Continue
这是我测试模块的OneDrive链接。
https://1drv.ms/f/s!AlsrG1Yfr5pHgts0RCM--SmRnUf3AA
$ PSVersionTable的输出
PSVersion 5.1.17134.590
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17134.590
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
我已经很接近为我的PowerShell模块构建我的第一个发布管道了,但是我仍然停留在这一点上。
有人知道什么可能导致此问题吗?
答案 0 :(得分:2)
好吧,我刚刚发现我可以使用PowerShell Core 6.2.0成功发布我的模块!
在http://slack.poshcode.org/ powershell-help频道上的Joel建议使用BOM将.psd1文件编码更改为UTF8。他说PowerShell 5不喜欢没有BOM的.psd1文件。默认情况下,它们在vscode中使用UTF8编码。我确实尝试过更改编码,但这不能解决我的问题。
由于他的建议,我想到了尝试使用PowerShell Core 6.2.0发布我的模块,并且有效!
这不能完全解决PowerShell 5.1的问题,但是我不介意切换到PowerShell Core 6.2.0来发布我的模块。这解决了我的问题。