gpt4 book ai didi

Powershell 使用参数调用 MSI

转载 作者:行者123 更新时间:2023-12-04 02:10:41 30 4
gpt4 key购买 nike

我正在使用 powershell 脚本来安装 Autodesk 产品,但遇到了一些问题。

我已经尝试了很多不同的方法并不断遇到错误。

使用双引号

(Start-Process "msiexec.exe" -ArgumentList ""/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR="C:\Program Files\Autodesk\" ADSK_SETUP_EXE=1 /qb!"" -NoNewWindow -Wait -PassThru).ExitCode

错误无法验证参数“ArgumentList”上的参数参数为 null 或为空。

使用变量定义 InstallDir
$RevitInstallDir = "C:\Program Files\Autodesk\"
(Start-Process "msiexec.exe" -ArgumentList "/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR=$RevitInstallDir ADSK_SETUP_EXE=1 /qb!" -NoNewWindow -Wait -PassThru).ExitCode

这样做我得到 msiexec/option 必需参数错误。

也试过这个,单引号和路径上的引号
(Start-Process "msiexec.exe" -ArgumentList "/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR="C:\Program Files\Autodesk\" ADSK_SETUP_EXE=1 /qb!" -NoNewWindow -Wait -PassThru).ExitCode

我收到无法找到接受参数 C:\Program 的位置参数

在 InstallDir 上使用单引号
(Start-Process "msiexec.exe" -ArgumentList "/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR='C:\Program Files\Autodesk\' ADSK_SETUP_EXE=1 /qb!" -NoNewWindow -Wait -PassThru).ExitCode

这样做我得到 msiexec/option 必需参数错误。

在外部使用单引号
(Start-Process "msiexec.exe" -ArgumentList '/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR="C:\Program Files\Autodesk\" ADSK_SETUP_EXE=1 /qb!' -NoNewWindow -Wait -PassThru).ExitCode

如果我这样做,它会阻止 $dirFiles 变量工作。

我使用 Start-Process 的原因是因为我有许多安装程序一个接一个,我希望一个安装程序在完成之前等待一个安装程序。任何帮助,将不胜感激!谢谢

编辑:没关系,我想通了。
(Start-Process "msiexec.exe" -ArgumentList "/i $dirFiles\ABDS2017\Img\x64\RVT\RVT.msi INSTALLDIR=""C:\Program Files\Autodesk\"" ADSK_SETUP_EXE=1 /qb!" -NoNewWindow -Wait -PassThru).ExitCode

安装目录周围的双引号

从这里得到了这个想法。 https://blogs.technet.microsoft.com/heyscriptingguy/2015/06/20/weekend-scripter-understanding-quotation-marks-in-powershell/

谢谢

最佳答案

不要打扰 Start-Process除非您需要以提升的权限运行进程。使用 call operatorsplatting反而。命令的退出代码存储在 automatic variable$LastExitCode .

$params = '/i', "$dirFiles\ABDS2017\Img\x64\RVT\RVT.msi",
'INSTALLDIR="C:\Program Files\Autodesk"', 'ADSK_SETUP_EXE=1',
'/qb!'
& msiexec.exe @params
$LastExitCode

不幸的是你不能告诉 msiexec.exe等待安装完成,并且调用运算符也不强制执行同步执行。如果您需要等待安装完成后再继续,您需要诸如 CMD 内置 start 之类的东西。命令或 Start-Process .不过,我仍然建议将参数定义为数组。
$params = '/i', "$dirFiles\ABDS2017\Img\x64\RVT\RVT.msi",
'INSTALLDIR="C:\Program Files\Autodesk"', 'ADSK_SETUP_EXE=1',
'/qb!'
$p = Start-Process 'msiexec.exe' -ArgumentList $params -NoNewWindow -Wait -PassThru
$p.ExitCode

关于Powershell 使用参数调用 MSI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45223031/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com