PowerShell调用监控软件MSI偶发执行失败问题求助
监控软件MSI部署间歇性失败问题排查
需求概述
我通过MDT部署不同版本的Windows系统及软件,其中一款是监控软件。该软件提供商为每个客户地点提供独立MSI文件,安装后可直接将设备分配至对应地点。我编写了两个PowerShell脚本:一个部署在安全服务器上,负责收集所有安装包并存入NAS文件夹;另一个供实习生操作员使用,由MDT任务序列调用,操作员可通过弹窗选择待部署设备所属的客户及地点。
当前问题
脚本从NAS调用MSI文件时,安装操作有时成功、有时失败。失败时MSIEXEC启动后安装窗口一闪即关,MSIEXEC和PowerShell均无任何错误提示。
德语术语对应
- Kunde = 客户
- Standorte = 地点
相关脚本片段
$vtmp=($folders | Where-Object ListenID -EQ $inp1 | Select-Object Kunde,Standorte) if($vtmp.Standorte -gt 1){ $trash=@() $i2=1 foreach($location in $(Get-ChildItem "$($path)\$($vtmp.Kunde)"-Recurse -Directory)){ $addtrash=@{ ListenID=$i2++ Standort="$($location.Name)" } $trash += New-Object -TypeName psobject -Property $addtrash } $trash | Format-Table $inp2=Read-Host "选择目标地点" ## 校验输入有效性 while ($trash.ListenID -notcontains $inp2){ write-host -BackgroundColor Red -ForegroundColor Yellow "输入的ID不在列表中,请重试" if($inp2 -imatch '\d[a-zA-Z]*' -or '[a-zA-Z]') { Write-Host "你输入了字母。" Write-Host -ForegroundColor Red "不要这么做。" write-Host "只允许输入列表中的数字" Write-Host "" } $inp2=Read-Host "输入目标地点的ID" } ## $vtmp2=($trash | Where-Object ListenID -eq $inp2|Select-Object Standort) $msipath=((Get-ChildItem "$path\$($vtmp.kunde)\$($vtmp2.Standort)"-File "*.msi").FullName) } else{ ((get-childitem "$path\$($vtmp.Kunde)\" -File "*.msi" -Recurse).FullName) } start-process msiexec.exe -ArgumentList "/i $msipath /passive /norestart -log C:\Windows\Temp\Monitoring.log" -wait
MSIEXEC日志情况
已为MSIEXEC添加日志记录,日志中未发现明显可疑条目,但无法完全解读所有细节。
已尝试措施
- 检查NAS访问凭据:正常可用,否则无法获取客户列表
- 更换执行凭据:使用内置管理员账户执行,结果一致
- 检查本地执行权限:当前使用内置管理员账户,权限足够
- 手动测试MSI文件:直接双击所有MSI文件,安装均正常完成
- 重启设备:重启后问题依然存在
- 搜索相关症状:未找到匹配的有效解决方案
- 缩短文件路径:将MSI复制到本地
C:\test\Customer.MSI,仍无法正常执行
内容的提问来源于stack exchange,提问作者Marcicookie
相关产品推荐
相关产品推荐

