从安装程序执行时无法加载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

如何安装和配置 Azure PowerShell

PowerShell 无法加载文件ps1,因为在此系统中禁止执行脚本

在C#/ Powershell中 - 是否可以更改IIS应用程序池的空闲时间?

将SharePoint Online Client组件(Microsoft.SharePoint.Client)与powershell 2.0一起使用