如何使用参数从 powershell 调用 msiexec

如何使用参数从 powershell 调用 msiexec

我正在尝试从 powershell 脚本执行以下行:

msiexec /qb /i ps-pulse-win-5.2r5.1-b897-64bitinstaller.msi CONFIGFILE="ALS GSLB.jnprpreconfig"

从 DOS 命令行调用时,它可以工作,但当我从 powershell 调用它时,MSIEXEC 会抱怨事情不正确。

这确实有效...

msiexec /qb /i ps-pulse-win-5.2r5.1-b897-64bitinstaller.msi

显然有些东西干扰了我的论点,但我不知道如何解决它。

(删除了“/”)

答案1

我刚刚使用 Powershell 在核心服务器上安装了 GAPS,我有一个这样的命令。我喜欢这种更详细的语法,因为它更易读,而且我可以在每个命令行选项中添加注释,以节省我和其他人将来重复使用该命令的时间。

$cmdhash=@{}
$cmdhash['FilePath']    = 'C:\Windows\System32\msiexec.exe'
$cmdhash['Wait']        = $true
$cmdhash['NoNewWindow'] = $true
$cmdhash['ArgumentList']=@()
$cmdhash['ArgumentList'] += '/i \\esd189.org\dfs\wpkg\software\Google\GAPS\googleappspasswordsync64.msi'
$cmdhash['ArgumentList'] += '/l*vx C:\programdata\gaps_msi_log.txt'
$cmdhash['ArgumentList'] += '/quiet'
$cmdhash['ArgumentList'] += 'DOMAIN="example.org"'
$cmdhash['ArgumentList'] += 'ADMIN_EMAIL="[email protected]"'
$cmdhash['ArgumentList'] += 'CREDENTIALS_FILE="\\ds-01\c$\Users\svc-googlesync\Documents\example.json"'
$cmdhash['ArgumentList'] += 'BASE_DN="DC=example,DC=org"'
$cmdhash['ArgumentList'] += 'MAIL_ATTRIBUTE="userPrincipalName"'
# using splatting, run the process
Start-Process @cmdhash

不过我不确定你说的/CONFIGFILE=是否正确。似乎/CONFIGFILE不是一个 msiexec 选项。也许你应该跳过前导/?如果应该删除该斜线,命令将如下所示。

$cmdhash=@{}
$cmdhash['FilePath']    = 'C:\Windows\System32\msiexec.exe'
$cmdhash['Wait']        = $true
$cmdhash['NoNewWindow'] = $true
$cmdhash['ArgumentList']=@()
$cmdhash['ArgumentList'] += '/qb'
$cmdhash['ArgumentList'] += '/i ps-pulse-win-5.2r5.1-b897-64bitinstaller.msi'
$cmdhash['ArgumentList'] += 'CONFIGFILE="ALS GSLB.jnprpreconfig'

Start-Process @cmdhash

相关内容