如何将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
相关产品推荐
相关产品推荐

