Invoke-VMScript调用脚本执行ISO内setup.exe遇问题求助
虚拟机内ISO挂载后setup.exe执行状态排查
原执行逻辑
通过Invoke-VMScript调用虚拟机内脚本,执行ISO挂载盘的setup.exe:
Invoke-VMScript -VM "999_OSTest_Clone" -ScriptText c:\SB\isoscript.ps1 -GuestUser Administrator -GuestPassword Pa -ScriptType Powershell
isoscript.ps1内容
# 定义CD/DVD驱动器盘符 $driveLetter = "Z:" # 构造安装启动命令 $command = "$driveLetter\setup.exe" # 启动安装进程 Start-Process -FilePath $command -ArgumentList "/quiet /noreboot" -Wait -passThru
执行输出与分析
脚本执行无报错,但返回以下输出,虚拟机内看不到安装迹象:
ScriptOutput -----------------------------------------------------------------------------------------------------------------------| | Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName | ------- ------ ----- ----- ------ -- -- ----------- | 51 8 1560 5284 0,00 876 0 setup | | | -----------------------------------------------------------------------------------------------------------------------
从输出可确认setup.exe已成功启动:
- 表格是
Start-Process加-PassThru返回的进程信息,明确显示存在ID为876的setup进程 - 看不到安装界面是因为使用了
/quiet静默安装参数,该参数会禁用所有交互提示与可视化界面 - CPU占用为0,00有两种可能:要么进程已快速执行完成(比如前置检查不通过直接退出),要么正处于后台静默执行的等待阶段(如文件解压、后台配置)
可通过以下方式进一步验证:
- 检查虚拟机内的Windows安装事件日志,确认setup.exe执行细节
- 确认Z盘已正确挂载ISO文件,
Z:\setup.exe路径有效 - 临时去掉
/quiet参数执行,观察是否有安装界面弹出,排查静默参数是否导致无反馈
更新后的问题与修复
将启动命令修改为直接调用运算符&后,PowerShell ISE出现窗口卡住、无响应:
& $command "/quiet /noreboot"
问题原因与解决
直接用&调用时参数传递错误:/quiet /noreboot被作为单个字符串传递,setup.exe会识别为无效参数,导致进程卡住。正确的参数传递需将每个参数分开:
& $command /quiet /noreboot
另外,PowerShell ISE执行阻塞进程时会出现无响应,属于正常现象——&会在当前控制台线程执行进程,若安装耗时较长,ISE会持续等待直到进程结束。可改用普通PowerShell控制台执行,或添加后台执行逻辑避免阻塞界面。
内容的提问来源于stack exchange,提问作者snehasish nandy
相关产品推荐
相关产品推荐

