Blob属性-除了通过ForEach循环之外,还有其他更好的方法可以从此集合中进行选择吗?

问题描述

我有以下代码,该代码获取blob的属性的集合,然后使用foreach循环定位选定的属性值。是否有一个吸引人的东西,不涉及遍历PowerShell 7中的集合

$Blobs = Get-AzStorageBlob -Container $containerName -Context $ctx  
ForEach ($Blob in $Blobs){
    if($Blob.Name.IndexOf($blobName) -ge 0)
    {          
        if (Get-Member -InputObject $Blob.ICloudBlob.Properties -Name $blobPropertyName -MemberType Property) {
            $retValue = $Blob.ICloudBlob.Properties.$blobPropertyName
            break;
        }            
    } else{
        Write-Host "Blob not found!"
    }
}

解决方法

未经测试:

(Get-AzStorageBlob -Blob "*$blobName*" -Container $containerName -Context $ctx).
  ICloudBlob.Properties.$blobPropertyName
  • Get-AzStorageBlob-Blob参数接受wildcard expression,因此您不必手动遍历所有Blob即可找到感兴趣的一个。

  • >
  • 请注意,如果通配符"*$blobName*"多个 blob匹配,该命令也将起作用,因为PowerShell自v3起具有称为member enumeration的功能,该功能可以访问集合上的成员(属性或方法)并将其隐式应用于每个元素,并且结果被收集到数组中

  • 只要Set-StrictMode处于 off (默认情况下)或设置为最高的-Version 1,以上内容将简单地返回$null要么不存在匹配的Blob,要么匹配的Blob没有目标属性。