You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell按设备厂商型号运行对应程序的脚本故障排查

PowerShell 厂商匹配脚本故障排查

故障根因

  • 变量取值错误:$Model = Get-CimInstance -ClassName Win32_ComputerSystem | select Manufacturer 执行后,$Model是带Manufacturer属性的PowerShell自定义对象,不是厂商名称的纯字符串,后续所有-eq字符串判断永远不成立,因此不会触发任何程序启动逻辑。
  • 逻辑分支缺失:脚本注释标注需要覆盖HP、联想、戴尔三个厂商,但实际判断逻辑仅编写了联想、戴尔两个分支,HP设备无对应执行逻辑。
  • 匹配规则鲁棒性不足:不同机型、系统版本返回的Manufacturer字段可能带前后空格、大小写不统一、带后缀(比如戴尔可能返回Dell Inc.、惠普老设备可能返回Hewlett-Packard),直接写全等字符串很容易匹配失败。

修正后脚本

所有原始命令、路径均保留,仅修复错误逻辑:

# Determine if HP, Lenovo, or Dell
# 修正:直接取Manufacturer属性的字符串值,统一转大写、去除前后空格避免匹配异常
$Model = (Get-CimInstance -ClassName Win32_ComputerSystem).Manufacturer.Trim().ToUpper()
# Depending on Model, run appropriate program
If ($Model -eq 'LENOVO' ) {
    Start-Process "C:\Program Files (x86)\Lenovo\System Update\tvsu.exe"
}
ElseIf ($Model -like 'DELL*') {
    # 用通配符匹配兼容带后缀的戴尔返回值
    Start-Process "C:\Drivers\OEM\Setup\TEM_FOLDER\DellCommandUpdate_450\setup.exe"
}
ElseIf ($Model -eq 'HP' -or $Model -eq 'HEWLETT-PACKARD') {
    # 补充HP分支,替换为实际HP专属程序路径即可
    Start-Process "此处替换为HP专属程序的实际文件路径"
}

验证建议

执行脚本前可以先单独运行Get-CimInstance -ClassName Win32_ComputerSystem | select Manufacturer,确认当前设备实际返回的厂商字段值,若和预设匹配字符串不一致直接调整判断规则即可。

内容的提问来源于stack exchange,提问作者gameandscripts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 15:48:17