Azure PowerShell 从容器下载 blob 内容

标签 azure powershell azure-blob-storage azure-powershell

我正在尝试从 Azure 存储帐户下载中小企业 blob 文件。

父容器中混合了其他容器和 block blob,我需要只下载 block blob而不是其他容器,我找不到将它们分开的方法,我还需要从下载一些blob容器内的容器。

我的代码将下载父 blob 中的所有内容,包括所有子容器。

  $sub = "MySub"
$staccname = "straccname1234"
$key = "sdcsecurekeythinghere"
$ctx = New-AzureStorageContext -StorageAccountName $staccname ` 
         -StorageAccountKey $key
$cont = "data\download\files.001" ##the container includes other cntainers and subcontainers
$dest = "C:\blb-Downloads"
Select-AzureSubscription -SubscriptionName $sub –Default
Set-AzureSubscription -Currentstaccname $staccname -SubscriptionName $sub
Get-AzureStorageBlob -Container $cont -Context $ctx
$blobs = Get-AzureStorageBlob -Container $cont  -Context $ctx
$blobs | Get-AzureStorageBlobContent –Destination $dest  -Context $ctx

父 blob 中有大约 75 个文件,data\downloads 中有 123 个文件。

最佳答案

使用较新的 Azure PowerShell Az module ,您可以使用Get-AzStorageBlob要列出容器中的所有 block blob,请使用 Get-AzStorageBlobContent下载 blob。

@George Wallace 所示,我们可以使用Where-Object或其别名 ? 来过滤 block blob 类型。

演示:

$resourceGroup = "myResourceGroup"
$storageAccount = "myStorageAccount"
$container = "myContainerName"
$destination = "./blobs"

# Create destination directory if it doesn't exist
if (-not (Test-Path -Path $destination -PathType Container)) {
    New-Item -Path $destination -ItemType Directory
}

# Get storage account with container we want to download blobs from
$storageAccount = Get-AzStorageAccount -Name $storageAccount -ResourceGroupName $resourceGroup

# Get all BlockBlobs from container
$blockBlobs = Get-AzStorageBlob -Container $container -Context $storageAccount.Context 
    | Where-Object {$_.BlobType -eq "BlockBlob"}

# Download each blob from container into destination directory
$blockBlobs | Get-AzStorageBlobContent -Destination $destination -Force

关于Azure PowerShell 从容器下载 blob 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46735566/

相关文章:

python - Azure函数读取和写入Blob存储抛出内部500错误

windows - 如何使用 windows azure powershell 获取系统时间

Azure 应用服务 ARM 模板部署 - 如何删除现有的主机名绑定(bind)?

javascript - ADAL.js 无法在 Microsoft 个人帐户中运行

c# - 从 C# 运行的 PowerShell 启动/停止 IIS 应用程序池没有效果

java - 未从 blob 上的 azure java sdk 收到元数据字段

azure - 使用 ARM 配置 Azure Redis 缓存并指定访问 key

.net - 在 Windows 8 RTM 上的 .NET 应用程序中嵌入 Powershell v2.0

powershell - VSTS - 在发布期间删除以前的部署

python - 如何将文件夹从 AzureML 笔记本文件夹下载到本地或 Blob 存储?