我们已经为工作中的本地生产工具建立了一个Nuget样式软件包存储库。这是通过文件共享完成的。但是,我尝试更新的模块抛出了一个错误,该错误涉及旧版本的authenticode签名与新版本的发布者不匹配。
签名证书来自我们的AD PKI系统,并且是受信任的,它不会更改/不会以任何方式更改。
显然使用-SkipPublisherCheck
是可行的解决方法,但这不是长期解决方案。
在首次安装软件包时,我没有收到任何错误或警告。仅在执行更新时。
在签名机上只有3个证书,所有三个证书都在LocalMachine存储中。他们没有相同的主题(这是我通过Google找到的某些网站上提到的可能原因)
$cert = get-ChildItem Cert:\LocalMachine\My\5B3B66061B02EBF0986CF7969F36C6FB58060046
Set-AuthenticodeSignature "C:\Jenkins\workspace\Scripts - Master\MyModule_Src\dist\MyModule\MyModule.psm1" -Certificate $cert
#... Pester tests
Publish-Module -Name MyModule -Repository ORGPSGet -Verbose -force
PackageManagement\Install-Package : Authenticode issuer 'System.Object[]' of the new module 'MyModule' with version
'4.0.4' is not matching with the authenticode issuer 'System.Object[]' of the previously-installed module 'MyModule'
with version '4.0.3'. If you still want to install or update, use -SkipPublisherCheck parameter.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:2089 char:20
+ ... $sid = PackageManagement\Install-Package @PSBoundParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], Exc
eption
+ FullyQualifiedErrorId : AuthenticodeIssuerMismatch,Validate-ModuleAuthenticodeSignature,Microsoft.PowerShell.Packag
eManagement.Cmdlets.InstallPackage
答案 0 :(得分:0)
基于错误消息,我认为签名中有些东西是PowerShell期望多个证书而找不到它,或者签名中有多个证书,而PowerShell不喜欢这样。我在签名命令中添加了-IncludeChain signer
,然后重新运行构建后,便可以按预期使用Update-Module
命令。
Set-AuthenticodeSignature "C:\Jenkins\workspace\Scripts - Master\MyModule_Src\dist\MyModule\MyModule.psm1" -Certificate $cert -IncludeChain signer
有关更多详细信息,请参阅文档。