Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式下载Azure Storage Blob内容的早期版本_Azure_Powershell_Azure Cli - Fatal编程技术网

以编程方式下载Azure Storage Blob内容的早期版本

以编程方式下载Azure Storage Blob内容的早期版本,azure,powershell,azure-cli,Azure,Powershell,Azure Cli,是否可以使用Powershell或Azure CLI(或其他)下载启用了Blob版本控制的Azure存储Blob的早期版本 在Azure门户中,启用Blob版本控制后,您可以下载以前的版本,如下图所示: 使用Powershell,我可以使用Get-AZStorageBlob-IncludeVersionparamater检索/下载以前版本的列表 PS W:\SRE\KeyVaultBackupPOC> $blob = Get-AzStorageBlob -Container blobve

是否可以使用Powershell或Azure CLI(或其他)下载启用了Blob版本控制的Azure存储Blob的早期版本

在Azure门户中,启用Blob版本控制后,您可以下载以前的版本,如下图所示:

使用Powershell,我可以使用
Get-AZStorageBlob-IncludeVersion
paramater检索/下载以前版本的列表

PS W:\SRE\KeyVaultBackupPOC> $blob = Get-AzStorageBlob -Container blobversiontest -Context $StorageContext -IncludeVersion   

PS W:\SRE\KeyVaultBackupPOC> $blob


   AccountName: blobstorage, ContainerName: blobversiontest

Name                 BlobType  Length          ContentType                    LastModified         AccessTier SnapshotTime                 IsDeleted  VersionId
----                 --------  ------          -----------                    ------------         ---------- ------------                 ---------  ---------
BlobVersionTestFile… BlockBlob 26              text/plain                     2021-03-12 03:44:16Z Hot                                     False      2021-03-12T03:44:16.4786504Z
BlobVersionTestFile… BlockBlob 25              text/plain                     2021-03-12 03:44:36Z Hot                                     False      2021-03-12T03:44:36.8181879Z
BlobVersionTestFile… BlockBlob 24              text/plain                     2021-03-12 03:44:57Z Hot                                     False      2021-03-12T03:44:57.4459306Z *
但是,我找不到通过脚本检索以前版本的方法

我可以使用
Get-AzStorageBlob
和结果的ICloudBlob属性为当前版本的blob检索ICloud blob对象,但是如果我对以前版本的blob尝试类似的方法,我会得到一个错误:

Get-AzStorageBlobContent:对象“CloudBlob”不能为null。(参数'CloudBlob')


希望获得一些新的见解-提前感谢。

您可以通过检查IslatesVersion,然后选择最后一个blob作为前一个blob来过滤掉以前的blob。然后可以使用管道下载blob

$storageAccountName = "myStorageAccount"
$resourceGroupName = "myStorageAccountRg"
$containerName = "myContainer"
$blobName = "myblob.txt"

$storageAccount = Get-AzStorageAccount `
    -Name $storageAccountName `
    -ResourceGroupName $resourceGroupName

$previousBlob = Get-AzStorageBlob `
    -Container $containerName `
    -Context $storageAccount.Context `
    -IncludeVersion | 
        Where-Object {
            -not $_.IsLatestVersion -and 
            $_.Name -eq $blobName
        } | Select-Object -Last 1

$previousBlob | Get-AzStorageBlobContent -Destination $PSScriptRoot -Force

如果要下载一个版本的blob,请参考以下脚本

$ctx=New-AzStorageContext -StorageAccountName ""   -StorageAccountKey ""

Get-AzStorageBlob -Blob $blobName -VersionId "<the version id you need>" -Container "test" -Context $ctx


$blob | Get-AzStorageBlobContent -Destination e:\
$ctx=New-AzStorageContext-StorageAccountName”“-StorageAccountKey”
获取AzStorageBlob-Blob$blobName-VersionId”“-容器“测试”-上下文$ctx
$blob |获取AzStorageBlobContent-目标e:\

谢谢@Jim Xu。这适用于所有版本。我的方法是缺少内容的管道。谢谢@RoadRunner,这也是一个有用的解决方案。