快速入门:使用 Azure PowerShell 上传、下载和列出 Blob

使用 Azure PowerShell 模块创建和管理 Azure 资源。 可以通过 PowerShell 命令行或脚本创建或管理 Azure 资源。 本指南介绍如何使用 PowerShell 在本地磁盘和 Azure Blob 存储之间传输文件。

先决条件

若要访问 Azure 存储,需要一个 Azure 订阅。 如果还没有订阅,则在开始前创建一个 1 元人民币的试用帐户

Note

本文最近进行了更新,以便使用新 Azure PowerShell Az 模块的命令。

本快速入门需要 Azure PowerShell 模块 Az 版本 0.7 或更高版本。 运行 Get-InstalledModule -Name Az -AllVersions | select Name,Version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure PowerShell 模块

登录 Azure

运行 Connect-AzAccount -Environment AzureChinaCloud 命令以登录 Azure 订阅,并按照屏幕上的说明操作。

Connect-AzAccount -Environment AzureChinaCloud

如果你不知道要使用哪个位置,可以列出可用的位置。 使用以下代码示例显示位置列表,并找到要使用的位置。 此示例使用“中国东部”。 将位置存储在变量中,并使用该变量,这样就可以在一个位置更改它。

Get-AzLocation | select Location
$location = "China East"

创建资源组

使用 New-AzResourceGroup 创建 Azure 资源组。 资源组是在其中部署和管理 Azure 资源的逻辑容器。

$resourceGroup = "myResourceGroup"
New-AzResourceGroup -Name $resourceGroup -Location $location

创建存储帐户

使用 New-AzStorageAccount 创建具有 LRS 复制功能的标准常规用途存储帐户。 接下来,获取用于定义要使用的存储帐户的存储帐户上下文。 对存储帐户执行操作时,引用上下文而不是重复传入凭据。 使用以下示例创建一个名为 mystorageaccount 的存储帐户,该帐户默认启用本地冗余存储 (LRS) 和 Blob 加密。

$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup `
  -Name "mystorageaccount" `
  -SkuName Standard_LRS `
  -Location $location `

$ctx = $storageAccount.Context

创建容器

始终将 Blob 上传到容器中。 可以整理 Blob 组,就像在计算机的文件夹中整理文件一样。

设置容器名称,然后使用 New-AzStorageContainer 创建容器。 将权限设置为 blob 以允许对文件进行公共访问。 此示例中的容器名称是 quickstartblobs。

$containerName = "quickstartblobs"
new-AzStoragecontainer -Name $containerName -Context $ctx -Permission blob

将 blob 上传到容器

Blob 存储支持块 blob、追加 blob 和页 blob。 用于备份 IaaS VM 的 VHD 文件是页 Blob。 将追加 Blob 用于日志记录,例如有时需要写入到文件,再继续添加更多信息。 Blob 存储中存储的大多数文件都是块 blob。

要将文件上传到块 blob,请获取容器引用,然后获取对该容器中的块 blob 的引用。 具备 blob 引用后,可使用 Set-AzStorageBlobContent 将数据上传到其中。 此操作将创建 Blob(如果该 Blob 不存在),或者覆盖 Blob(如果该 Blob 存在)。

以下示例将 Image001.jpg 和 Image002.png 从本地磁盘的 D:\_TestImages 文件夹上传到创建的容器中。

# upload a file
set-AzStorageblobcontent -File "D:\_TestImages\Image001.jpg" `
  -Container $containerName `
  -Blob "Image001.jpg" `
  -Context $ctx 

# upload another file
set-AzStorageblobcontent -File "D:\_TestImages\Image002.png" `
  -Container $containerName `
  -Blob "Image002.png" `
  -Context $ctx

上传尽可能多的文件,然后继续操作。

列出容器中的 Blob

使用 Get-AzStorageBlob 获取容器中的 blob 列表。 此示例仅显示已上传的 blob 的名称。

Get-AzStorageBlob -Container $ContainerName -Context $ctx | select Name

下载 Blob

将 blob 下载到本地磁盘。 对于要下载的每个 blob,请设置名称并调用 Get-AzStorageBlobContent 以下载 blob。

此示例将 blob 下载到本地磁盘的 D:\_TestImages\Downloads 中。

# download first blob
Get-AzStorageblobcontent -Blob "Image001.jpg" `
  -Container $containerName `
  -Destination "D:\_TestImages\Downloads\" `
  -Context $ctx 

# download another blob
Get-AzStorageblobcontent -Blob "Image002.png" `
  -Container $containerName `
  -Destination "D:\_TestImages\Downloads\" `
  -Context $ctx

使用 AzCopy 传输数据

若要按可编写脚本的方式高性能地传输 Azure 存储中的数据,还可使用 AzCopy 实用工具。 使用 AzCopy 将数据传输到 Blob、文件和表存储或将数据从其中传出。

在以下快速示例中,AzCopy 命令用于将名为 myfile.txt 的文件从 PowerShell 窗口上传到 mystoragecontainer 容器 。

./AzCopy `
    /Source:C:\myfolder `
    /Dest:https://mystorageaccount.blob.core.chinacloudapi.cn/mystoragecontainer `
    /DestKey:<storage-account-access-key> `
    /Pattern:"myfile.txt"

清理资源

删除所有已创建的资产。 删除资产的最简单方法是删除资源组。 删除资源组还会删除该组中包含的所有资源。 在以下示例中,删除资源组会删除存储帐户和资源组本身。

Remove-AzResourceGroup -Name $resourceGroup

后续步骤

在此快速入门中,你在本地磁盘和 Azure Blob 存储之间传输了文件。 若要详细了解如何使用 PowerShell 操作 Blob 存储,请继续学习如何将 Azure PowerShell 用于 Azure 存储。

Microsoft Azure PowerShell 存储 cmdlet 参考

Azure 存储资源管理器

  • Azure 存储资源管理器是 Microsoft 免费提供的独立应用,适用于在 Windows、macOS 和 Linux 上以可视方式处理 Azure 存储数据。