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

如何让从Azure获取的PowerShell现有字典大小写不敏感?

解决Azure资源标签哈希表大小写敏感问题

直接修改从Azure返回的现有哈希表的大小写敏感度是做不到的——PowerShell里默认哈希表的CaseSensitive属性是只读的。不过有几个实用的 workaround 可以解决这个问题:

方法1:转成大小写不敏感的新哈希表

创建一个新的不区分大小写的哈希表,把原tags里的键值对导进去:

# 初始化大小写不敏感的哈希表
$caseInsensitiveTags = [hashtable]::new([System.StringComparer]::OrdinalIgnoreCase)
# 把原标签的键值对导入新表
foreach ($key in $Item.Tags.Keys) {
    $caseInsensitiveTags[$key] = $Item.Tags[$key]
}
# 现在不管键的大小写都能正常取值
$caseInsensitiveTags.Environment
$caseInsensitiveTags.environment

方法2:取值时直接忽略大小写匹配

如果不想额外创建哈希表,可以直接通过模糊匹配键来取值:

# 找到和目标键忽略大小写匹配的键名
$targetKey = $Item.Tags.Keys | Where-Object { $_ -ieq 'Environment' }
# 取出对应的值
$Item.Tags[$targetKey]

方法3:批量处理所有资源时统一转换

如果要遍历所有Get-AzResource返回的资源,可以一次性给每个资源添加一个不敏感的标签属性:

$resources = Get-AzResource | ForEach-Object {
    $newTags = [hashtable]::new([System.StringComparer]::OrdinalIgnoreCase)
    foreach ($key in $_.Tags.Keys) {
        $newTags[$key] = $_.Tags[$key]
    }
    # 给资源对象新增一个大小写不敏感的标签属性
    $_ | Add-Member -MemberType NoteProperty -Name 'CaseInsensitiveTags' -Value $newTags -Force
    $_
}
# 后续直接用新属性取值即可
$resources[0].CaseInsensitiveTags.Environment

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:52:03