首页 > 解决方案 > PowerShell 使用属性文件安装 MSI

问题描述

我希望用 PowerShell 文件替换我们的旧命令文件,以便在多个服务器上安装 msi,以实现远程自动化安装。

我正在尝试做什么,这就是如何让 PowerShell 安装 msi,其中安装依赖于来自属性文件的详细信息作为一个参数,同时将安装作为日志文件注销并设置新用户名和密码?

目前我们的旧 cmd 文件看起来有点像这样:

msiexec /I mymsi.msu /quiet /lv mymsi.log USERNAME=AName PASSWORD=APassword CONFIG="C:\Some.properties.env"

我想要做的是在 PowerShell 中重新创建它,但我无法找到一个有效的示例。

标签: powershell

解决方案


我建议使用Start-ProcessSplatting使其具有可读性和功能性:

$startProcessParams = @{
    'FilePath'         = "$Env:SystemRoot\System32\MSIEXEC.exe"
    'ArgumentList'     = @(
        '/i', 'mymsi.msu'
        '/quiet'
        '/lv', 'mymsi.log'
        'USERNAME=AName', 'PASSWORD=APassword', 'CONFIG="C:\Some.properties.env"'
    )
    'WorkingDirectory' = $PSScriptRoot
    'Wait'             = $true
    'PassThru'         = $true
}
$process = Start-Process @startProcessParams

return $process.ExitCode

请务必设置WorkingDirectory为您的.msu文件所在的位置。


about_Splatting

Start-Process


推荐阅读