我正在使用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
Run Code Online (Sandbox Code Playgroud)
错误无法验证参数'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
Run Code Online (Sandbox Code Playgroud)
这样做我得到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
Run Code Online (Sandbox Code Playgroud)
我收到一个找不到接受参数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
Run Code Online (Sandbox Code Playgroud)
这样做我得到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
Run Code Online (Sandbox Code Playgroud)
如果执行此操作,它将阻止$ 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
Run Code Online (Sandbox Code Playgroud)
安装目录周围的双引号
谢谢
Start-Process除非您需要以提升的特权运行进程,否则不要打扰。请改用呼叫运算符和喷溅。命令的退出代码存储在自动变量中 $LastExitCode。
$params = '/i', "$dirFiles\ABDS2017\Img\x64\RVT\RVT.msi",
'INSTALLDIR="C:\Program Files\Autodesk"', 'ADSK_SETUP_EXE=1',
'/qb!'
& msiexec.exe @params
$LastExitCode
Run Code Online (Sandbox Code Playgroud)
不幸的是,您不能告诉msiexec.exe您等待安装完成,并且调用运算符也不会强制执行同步执行。如果需要等待安装完成再继续,则需要CMD-builtin 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11760 次 |
| 最近记录: |