以编程方式下载Azure Storage Blob内容的早期版本
是否可以使用Powershell或Azure CLI(或其他)下载启用了Blob版本控制的Azure存储Blob的早期版本 在Azure门户中,启用Blob版本控制后,您可以下载以前的版本,如下图所示: 使用Powershell,我可以使用以编程方式下载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
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,这也是一个有用的解决方案。