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

PowerShell中Where-Object过滤哈希表无返回结果问题

PowerShell中Where-Object过滤哈希表无返回结果的原因
  • 你定义的$controlFlowArgs是哈希表(Hashtable)类型,直接通过管道传递时,传输的是整个哈希表对象,而非内部的单个键值对条目。
  • Format-Table、Format-List这类格式化cmdlet对哈希表做了特殊适配,会自动展开显示所有键值对,所以你能看到waitForEnter的输出,但这不代表管道中传输的是拆分后的键值对。
  • 整个哈希表对象本身不存在Name属性,所以Where-Object的过滤条件$_.Name -eq "waitForEnter"永远为假,自然没有返回结果。

解决方法

方法1:枚举哈希表条目后过滤

如果需要通过Where-Object筛选键值对,先调用哈希表的GetEnumerator()方法枚举所有条目,再执行过滤:

$result = $controlFlowArgs.GetEnumerator() | Where-Object -FilterScript { $_.Name -eq "waitForEnter" }

方法2:直接按键取值(更推荐)

如果只是要获取指定键对应的值,不需要过滤,直接用哈希表索引或属性语法即可,性能更高:

# 索引语法
$waitForEnterValue = $controlFlowArgs["waitForEnter"]
# 属性语法
$waitForEnterValue = $controlFlowArgs.waitForEnter

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:36:07