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

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

先决条件

若要访问 Azure 存储,需要一个 Azure 订阅。 如果还没有订阅,请在开始前创建一个试用帐户

此外,你还需要存储 Blob 数据参与者角色来读取、写入和删除 Azure 存储容器和 blob。

注意

若要与 Azure 交互,建议使用 Azure Az PowerShell 模块。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 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

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

Get-AzLocation | Select-Object -Property Location
$Location = 'chinaeast'

创建资源组

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

$ResourceGroup = 'MyResourceGroup'
New-AzResourceGroup -Name $ResourceGroup -Location $Location

创建存储帐户

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

$StorageHT = @{
  ResourceGroupName = $ResourceGroup
  Name              = 'MyStorageAccount'
  SkuName           = 'Standard_LRS'
  Location          =  $Location
}
$StorageAccount = New-AzStorageAccount @StorageHT
$Context = $StorageAccount.Context

创建容器

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

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

$ContainerName = 'quickstartblobs'
New-AzStorageContainer -Name $ContainerName -Context $Context -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:\Images 文件夹上传到你创建的容器中 。

# upload a file to the default account (inferred) access tier
$Blob1HT = @{
  File             = 'D:\Images\Image001.jpg'
  Container        = $ContainerName
  Blob             = "Image001.jpg"
  Context          = $Context
  StandardBlobTier = 'Hot'
}
Set-AzStorageBlobContent @Blob1HT
  
 # upload another file to the Cool access tier
 $Blob2HT = @{
  File             = 'D:\Images\Image002.jpg'
  Container        = $ContainerName
  Blob             = 'Image002.png'
  Context          = $Context
  StandardBlobTier = 'Cool'
 }
 Set-AzStorageBlobContent @Blob2HT
  
# upload a file to a folder to the Archive access tier
$Blob3HT = @{
  File             = 'D:\Images\FolderName\Image003.jpg'
  Container        = $ContainerName
  Blob             = 'FolderName/Image003.jpg'
  Context          = $Context
  StandardBlobTier = 'Archive'
}
Set-AzStorageBlobContent @Blob3HT


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

列出容器中的 Blob

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

Get-AzStorageBlob -Container $ContainerName -Context $Context |
  Select-Object -Property Name

下载 Blob

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

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

# Download first blob
$DLBlob1HT = @{
  Blob        = 'Image001.jpg'
  Container   = $ContainerName
  Destination = 'D:\Images\Downloads\'
  Context     = $Context
}
Get-AzStorageBlobContent @DLBlob1HT

# Download another blob
$DLBlob2HT = @{
  Blob        = 'Image002.png'
  Container   = $ContainerName
  Destination = 'D:\Images\Downloads\'
  Context     = $Context  
}
Get-AzStorageBlobContent @DLBlob2HT

使用 AzCopy 传输数据

AzCopy 命令行实用程序提供适用于 Azure 存储的高性能且可编写脚本的数据传输。 可使用 AzCopy 将数据传输到 Blob 存储和 Azure 文件存储,或将数据从其中传出。 有关 AzCopy v10(最新版 AzCopy)的详细信息,请参阅 AzCopy 入门。 若要了解如何将 AzCopy v10 与 Blob 存储配合使用,请参阅使用 AzCopy 和 Blob 存储传输数据

以下示例使用 AzCopy 将本地文件上传到 blob。 请务必将示例值替换为你自己的值:

azcopy login --aad-endpoint https://login.partner.microsoftonline.cn
azcopy copy 'D:\Images\Image001.jpg' "https://$StorageAccountName.blob.core.chinacloudapi.cn/$ContainerName/NewGaphic.jpg"

清理资源

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

Remove-AzResourceGroup -Name $ResourceGroup 

后续步骤

在本快速入门中,你在本地文件系统和 Azure Blob 存储之间传输了文件。 若要详细了解如何通过使用 PowerShell 来处理 Blob 存储,请选择下面某个选项。

Azure PowerShell 存储 cmdlet 参考

Microsoft Azure 存储资源管理器