从安装程序执行时无法加载Powershell模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从安装程序执行时无法加载Powershell模块相关的知识,希望对你有一定的参考价值。
我有一个简单的PowerShell脚本导入证书:
$certificate_file_name = "C:FilesPluginscerti1.cer"
$root_cert_folder_path = 'Cert:LocalMachineRoot'
try
{
$certificate_obj = Import-Certificate -FilePath $certificate_file_name -CertStoreLocation $root_cert_folder_path
}
catch
{
$ErrorMessage = $_.Exception.Message
write-output $ErrorMessage
}
手动运行脚本时 - 它运行正常。
另外,我有一个installshield项目有1个操作项 - 执行上面的脚本。
构建安装程序并运行它后,我收到错误`''导入证书'命令在模块'PKI'中找到,但无法加载模块。有关更多信息,请运行“Import-Module PKI”。
为什么会这样?怎么解决? `
答案
我找到了一个解决方法:我没有使用Powershell添加我的证书,而是使用批处理,这使得它在手动运行和作为安装过程的一部分调用时都能正常工作。
批处理脚本非常简单:
Certutil -addstore -f "TrustedPublisher" "path ocertfile.cer"
Certutil -addstore -f "Root" "path ocertfile.cer"
由于Installshield仅支持运行powershell脚本,因此我使用powershell调用它来批量调用它:
cmd.exe /c 'path oatchscriptaddCertToRootAndPublisher.bat'
以上是关于从安装程序执行时无法加载Powershell模块的主要内容,如果未能解决你的问题,请参考以下文章
c# - 如何在运行时从模块代码中获取 PowerShell 模块版本
从 .Net Core 运行 Powershell - 无法加载文件或程序集 Microsoft.Management.Infrastructure
PowerShell 无法加载文件ps1,因为在此系统中禁止执行脚本
在C#/ Powershell中 - 是否可以更改IIS应用程序池的空闲时间?
将SharePoint Online Client组件(Microsoft.SharePoint.Client)与powershell 2.0一起使用