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

为何PowerShell严格模式下访问不存在的哈希表键未抛出异常?

问题解答

在PowerShell中,Set-StrictMode对哈希表的索引访问和成员点访问的校验规则存在差异,这就是两种访问方式结果不同的核心原因:

  • 针对哈希表的索引访问($Foo["bar"]):即便启用了Set-StrictMode -Version Latest和$ErrorActionPreference = "Stop",访问不存在的键只会返回$null,不会抛出异常。这是PowerShell哈希表的固有设计——索引访问不存在的键默认返回空值,严格模式并未修改这一行为。
  • 针对哈希表的成员点访问($Foo.bar):这种方式属于对象成员访问逻辑,Set-StrictMode会严格校验目标对象是否存在该成员。由于哈希表本身没有名为bar的属性,严格模式会触发异常,这与你的预期一致。

简言之,严格模式对哈希表的两种访问方式采取了不同的校验逻辑,索引访问空键返回$null是PowerShell保留的默认行为,不受严格模式约束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 23:37:33