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

为何Get-CimInstance在PowerShell管道中执行会报错?

为什么直接管道到Get-CimInstance -Query $_会失败?

要搞懂这个问题,得先明确PowerShell里$_变量的生效规则和管道参数绑定的逻辑:

  • $_作为自动变量,只有在脚本块(比如ForEach-Object { ... }的大括号内部)或者支持延迟绑定的参数上下文里,才会被自动赋值为当前管道对象。
  • 当你直接写"SELECT * FROM Win32_Service WHERE name = 'w32time'" | Get-CimInstance -Query $_时,-Query参数并不支持延迟绑定,PowerShell不会把管道传来的字符串自动赋值给$_,此时$_在这个位置是未定义的空值,自然会触发"参数绑定为null"的错误。

而用ForEach-Object包裹后,脚本块会针对管道中的每个对象执行一次,此时$_会被正确设置为前面传来的查询字符串,再把它传给Get-CimInstance -Query参数,就能正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:02:32