我正试图从天蓝色中获取一点信息:
$name = "myfolder/20180223_064819[1].jpg"
$blob = Get-AzureStorageBlob -Container $container.Name -Context $context -Blob $name -ErrorAction Stop
$blob -eq $null # is True
并且文件存在于存储中,在上面指定的位置,我可以使用azure存储浏览器看到它。但是$ blob是$ null而不是抛出错误,这是在找不到文件时通常发生的错误。我一直在访问其他文件。
如果我创建另一个文件myfile / 201802230648191.jpg。在这段代码中,$ blob2返回一个对象(这是您期望的)
$name = "myfolder/201802230648191.jpg"
$blob2 = Get-AzureStorageBlob -Container $container.Name -Context $context -Blob $name -ErrorAction Stop
$blob2 -eq $null # is False
我尝试用网址转义名称,但随后引发未找到的异常。我在这里查看了命名规则:https://docs.microsoft.com/en-us/rest/api/storageservices/Naming-and-Referencing-Containers--Blobs--and-Metadata,但似乎没有违反任何命名规则。
所以,我的问题是,为什么$ blob返回null而不是对象?
而且,如何获得名称包含[或]的Blob?
答案 0 :(得分:0)
我测试了您的代码,并获得了与您相同的result。然后我检查了Get-AzureStorageBlob
doc,发现它支持通配符搜索,即使对Accept wildcard characters
的支持为 false 。
然后,我进一步测试了代码。我将图片名称更改为Snipaste_2018-11-02_13-56-321.png
,但没有 [] ,但仍使用该代码,它可以正常工作。 Here是结果。因此,问题在于,$name
中的 [] 被识别为通配符。
因此,如果您仍然坚持自己的名字,则可以使用-Prefix
代替-Blob
。 Here是我的结果。
如果您仍有疑问,请告诉我。
答案 1 :(得分:0)
我在https://github.com/Azure/azure-powershell/issues/7848#issuecomment-439307333
中回答了这个问题通常与George一样,使用-prefix
应该可行,因为-prefix
不支持通配符搜索。无论如何,这还会使其他blob以blob名称开头,例如test/new11_22[1].jpgab
,要仅获取匹配的blob,可以使用以下管道过滤blob:
PS C:\WINDOWS\system32>> Get-AzureStorageBlob -Container $containerName -Context $ctx -prefix test/new11_22[1].jpg | ? {$_.Name -eq "test/new11_22[1].jpg"}
Container Uri: https://***.blob.core.windows.net/***
Name BlobType Length ContentType LastModified AccessTier SnapshotTime IsDeleted
---- -------- ------ ----------- ------------ ---------- ------------ ---------
test/new11_22[1].jpg BlockBlob 2097152 application/octet-stream 2018-11-16 07:29:19Z False
实际上,Get-AzureStorageBlob的行为与其他Powershell cmdlet(如Get-Item)保持一致:
就像文件c:\temp\new11_22[1].jpg
一样,结果如下。
PS C:\WINDOWS\system32> get-item c:\temp\new11_22[1].jpg
PS C:\WINDOWS\system32> get-item c:\temp\new11_22?1?.jpg
Directory: C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 10/19/2018 7:27 PM 2097152 new11_22[1].jpg