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

PowerShell输入框变量传入Get-WmiObject脚本执行失败求助

问题分析与修正方案

你的修改脚本执行失败是因为Where-Object语句存在语法错误,同时未保留原脚本的模糊匹配逻辑,以下是具体修正:

错误点说明

修改后的第3行代码Where-Object {$_.Name -like [$pname')}有两处核心问题:

  • 错误使用方括号[包裹变量,PowerShell中字符串匹配需用引号界定;
  • 引号与括号不匹配,语法结构混乱;
  • 丢失了原脚本的通配符*,无法实现包含式模糊匹配。

修正后的脚本

Add-Type -AssemblyName Microsoft.VisualBasic
$pname = [Microsoft.VisualBasic.Interaction]::InputBox('Program Name:')
Get-WmiObject -Class Win32_Product | Select-Object -Property Name | Where-Object {$_.Name -like "*$pname*"} | Out-File -FilePath C:\programs.txt
C:\programs.txt

优化建议(可选)

Get-WmiObject已被PowerShell官方弃用,推荐使用性能更优的Get-CimInstance,避免触发不必要的MSI安装包验证:

Add-Type -AssemblyName Microsoft.VisualBasic
$pname = [Microsoft.VisualBasic.Interaction]::InputBox('Program Name:')
Get-CimInstance -ClassName Win32_Product | Select-Object -Property Name | Where-Object {$_.Name -like "*$pname*"} | Out-File -FilePath C:\programs.txt
C:\programs.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:17:07