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

如何将Azure PowerShell中的区分大小写哈希表转换为不区分大小写?

解决区分大小写哈希表转不区分大小写的问题

Azure PowerShell返回的资源标签哈希表是区分大小写的,而PowerShell原生哈希表默认不区分大小写,要实现任意大小写访问键值,你可以通过以下方式处理:

方法一:创建不区分大小写的哈希表并导入键值对

直接新建一个指定不区分大小写比较器的哈希表,把原标签的键值对逐个导入:

# 获取原区分大小写的标签哈希表
$originalTags = (Get-AzResourceGroup -Name "exampleRG").Tags

# 初始化不区分大小写的哈希表
$caseInsensitiveTags = [hashtable]::new([StringComparer]::OrdinalIgnoreCase)

# 遍历原哈希表,导入所有键值对
foreach ($key in $originalTags.Keys) {
    $caseInsensitiveTags[$key] = $originalTags[$key]
}

# 测试任意大小写访问
$caseInsensitiveTags.Owner  # 返回jdoe@example.com
$caseInsensitiveTags.OWNER  # 返回jdoe@example.com

方法二:直接强制转换(注意重复键问题)

如果确定原标签中没有大小写不同但内容相同的键(比如Owner和owner同时存在),可以直接强制转换为原生哈希表:

$originalTags = (Get-AzResourceGroup -Name "exampleRG").Tags
$caseInsensitiveTags = [hashtable]$originalTags

注意:如果原哈希表存在大小写不同的重复键,强制转换会抛出异常,此时建议用方法一手动处理重复项。

为什么你之前的方法无效?

你用Where-Object过滤的方式不适用,因为(Get-AzResourceGroup).Tags返回的是单个哈希表对象,不是集合,管道传递给Where-Object后无法按键过滤,自然不会有任何变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:52:48