PowerShell 操作 Azure Blob Storage

前端之家收集整理的这篇文章主要介绍了PowerShell 操作 Azure Blob Storage前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

文件的上传,下载,复制,删除等操作。代码执行的结果,本文使用了 MS 发布的一个 Azure Storage 客户端工具:,文中简称为 Storage Explorer。

Get-Module PowerShellGet -list | Select-Object Name,Version,Path

Install-Module AzureRM -AllowClobber

Import-Module AzureRM

文件进行操作,需要提供访问 Storage Account 的认证信息。我们的方式是直接通过 New-AzureStorageContext 命令创建一个 AzureStorageContext 类型的对象,这个对象中包含了认证信息,所以接下来所有对 storage 的访问操作都需要使用它:

= New-AzureStorageContext -ConnectionString

= = = New-AzureStorageContext -StorageAccountName -StorageAccountKey -Protocol Https

添加必要的认证选项外,我们还显式的指定了通信协议。指定 https 是非常重要的,因为以 https 协议上传下载的数据默认会进行数据的完整性校验。也就是说在进行文件上传或者下载时,我们不需要再做额外的数据完整性校验了。

登录,然后找到某个(或者是创建一个) Storage Account,并获取其 Context 属性

文件的操作前,我们需要先创建一个 Container:

= -AzureStorageContainer -Name -Permission Off -Context

文件,当前一共有三个权限类型:Container:匿名用户可以访问文件内容,并且可以枚举 Container 中的所有文件Blob:匿名用户可以访问文件内容,但是不能枚举 container 中的文件Off:匿名用户不能访问文件生成的对象 $ctx。

上传文件

上传文件,需要指定文件存放的 Container 和 访问 Storage Account 的上下文:

Set-AzureStorageBlobContent -Container -Blob -Context

上传成功后我们可以通过 Storage Explorer 直观的检查一下:

上传的文件都是直接放在 Container 的根目录下的,如果要对文件存放的目录进行管理,需要在上传时指定包含目录名称文件名:

Set-AzureStorageBlobContent -Container -Blob -Context

上传后,文件 cortana.jpg 会存放在 images 目录下。

上传目录下的多个文件上传某个目录下的所有文件

Get-ChildItem -Path -Recurse | Set-AzureStorageBlobContent -Container -Context

文件的上传,并且这些文件的目录结构和原来都是一样的。

上传一个文件,并指定了一个已经存在的 blob 名称,此时会与用户交互以确定是否覆盖已经存在的 blob。对于各种自动化的任务,我们不希望交互的行为,所以可以加上 -Force 选项强制覆盖已有文件

Set-AzureStorageBlobContent -Container -Blob -Context -Force

文件

文件。下载文件的前提是你知道某个 blob 对象的名称

= -AzureStorageBlobContent -Destination -Container -Blob -Context -Force

文件路径为:"D:\images\cortana.jpg"。

名称,我们需要下载满足某些情况的 blob,比如下载 images 目录下的所有文件。这里的问题是我们不知道 images 究竟是哪级目录,所以可能的做法是遍历 Container 下的所有文件,然后检查文件名称中包含 images 目录的文件并下载它。为了遍历 Container 中的文件,需要使用 Get-AzureStorageBlob 命令:

= = Get-AzureStorageBlob -Container -Context ( (.Name.Contains(-AzureStorageBlobContent -Destination -Container -Blob .Name -Context -

代码中我们用 Get-AzureStorageBlob 命令拿到 Container 下的所有文件信息,然后检查文件的路径中有没有包含 "images/" 字符串,如果包含,就下载这个文件

文件

自动化的脚本操作可以轻松愉快的备份各种数据,当然也包含存储在 Storage Account 中的文件。Start-AzureStorageBlobCopy 命令用于 blob 文件的复制操作。单从名字上看这应该是个异步方法,但是真实的情况稍微复杂一些。因为这个命令既可以用于同步操作也可以用于异步操作,关键在于调用这个命令的方式!下面的命令在同一个 Container 中执行文件复制操作:

Start-AzureStorageBlobCopy -SrcBlob -SrcContainer -DestContainer -DestBlob -Context

文件拷贝到同一个 Container 的 myimages 目录下。

文件,建议你通过异步的方式进行:

= Start-AzureStorageBlobCopy -SrcBlob -SrcContainer -DestContainer -DestBlob -Context -DestContext = | Get- (.Status = | Get--Sleep 10

删除文件

删除指定的 blob 文件

Remove-AzureStorageBlob -Container -Blob -Context

文件来完成。

Set-AzureStorageContainerAcl -Name -Context -Permission Blob

猜你在找的Azure相关文章