PowerShell中msiexec多转换文件执行报错,寻求解决方法
解决MSI多转换文件在PowerShell及SCCM中的部署问题
首先得明确你遇到的错误根源:在PowerShell里,分号;是命令分隔符,你的TRANSFORMS参数里的分号被PowerShell当成了新命令的起始标记,所以系统才会把:CANoeTransform.mst误识别成独立的可执行命令,进而抛出错误。下面是具体的解决步骤和部署注意事项:
第一步:修正PowerShell测试命令
把TRANSFORMS的整个参数值用双引号包裹起来,让PowerShell把它当成一个完整的参数内容,而不会解析分号为命令分隔符。修正后的命令如下:
msiexec /i "./CANoe_CANalyzer64.msi" TRANSFORMS=":InstanceId1.mst;:CANoeTransform.mst" MSINEWINSTANCE=1 VSETUPKEY_CUSTOMER="Company NV" VSETUPKEY_SERIALNUMBER=00000000000 VSETUPKEY_LICENSEKEY=0000-0000-0000-0000-0000-0000-0000-0000 ADDLOCAL=Program,Demos
如果你的.mst文件不在当前工作目录,建议直接使用绝对路径(比如C:\Deploy\InstanceId1.mst),避免路径解析异常。
第二步:SCCM部署的关键配置
在SCCM中部署时,除了命令行的修正,还有几个细节需要注意:
- 路径处理:SCCM会把安装源文件下载到客户端的缓存目录,不要用相对路径
./,可以直接写文件名(只要.msi和.mst都在SCCM应用的内容源里),或者勾选程序属性里的「使用安装文件夹中的命令」,让msiexec自动在缓存目录下查找文件。 - 静默安装优化:如果需要无交互安装,记得添加
/qn参数(完全静默)或/qb参数(基础进度条),示例命令:
msiexec /i "CANoe_CANalyzer64.msi" TRANSFORMS=":InstanceId1.mst;:CANoeTransform.mst" MSINEWINSTANCE=1 VSETUPKEY_CUSTOMER="Company NV" VSETUPKEY_SERIALNUMBER=00000000000 VSETUPKEY_LICENSEKEY=0000-0000-0000-0000-0000-0000-0000-0000 ADDLOCAL=Program,Demos /qn
- 权限与运行方式:在SCCM程序属性里设置「以管理员身份运行」,确保客户端有足够权限完成安装;如果是部署给用户,还可以根据需求调整运行上下文。
- 内容源验证:确认所有
.msi和.mst文件都已添加到SCCM应用的内容源中,避免客户端缓存时缺失文件。
额外验证建议
在批量部署前,先在单台客户端本地手动运行修正后的命令,确认安装成功后再推送到SCCM集合;也可以用Orca工具打开.msi和.mst文件,检查转换文件的配置是否有效、有没有损坏。
内容的提问来源于stack exchange,提问作者Bussie
相关产品推荐
相关产品推荐

