本快速入门介绍如何使用 Azure PowerShell 创建存储任务并将其分配给 Azure 存储帐户。 然后,你将查看运行结果。 存储任务对存储帐户中存在的任何Microsoft Word 文档应用基于时间的不可变性策略。
先决条件
一份 Azure 订阅。 请参阅 免费创建帐户。
一个 Azure 存储帐户。 请参阅 创建存储帐户。 创建帐户时,请确保启用版本级不可变性支持,并且未启用分层命名空间功能。
在公开期间,你只能针对与存储任务位于同一区域的存储帐户进行操作。
在存储帐户或资源组的上下文中已向用户标识分配存储 Blob 数据所有者角色。
向资源组上下文中的用户标识分配的自定义角色,该上下文包含向存储帐户分配任务所需的 RBAC 操作。 请参阅 分配任务所需的权限。
已安装 .NET Framework 4.7.2 或更高版本。 有关详细信息,请参阅下载 .NET Framework。
PowerShell
5.1
或更高版本。
安装 PowerShell 模块
确保已安装 PowerShellGet 最新版本。
Install-Module PowerShellGet -Repository PSGallery -Force
关闭并重新打开 PowerShell 控制台。
安装 Az.Storage PowerShell 模块的版本 7.1.1-preview 或更高版本。 可能需要卸载 PowerShell 模块的其他版本。 有关如何安装 Azure PowerShell 的详细信息,请参阅使用 PowerShellGet 安装 Azure PowerShell。
Install-Module Az.Storage -Repository PsGallery -RequiredVersion 7.1.1-preview -AllowClobber -AllowPrerelease -Force
安装 Az.StorageAction 模块。
Install-Module -Name Az.StorageAction -Repository PSGallery -Force
有关如何安装 PowerShell 模块的详细信息,请参阅安装 Azure PowerShell 模块
登录到 Azure 帐户
打开 Windows PowerShell 命令窗口,然后使用该命令登录到 Azure 帐户
Connect-AzAccount
,然后按照屏幕上的说明进行作。Connect-AzAccount
如果你的标识已关联到多个订阅,且系统未提示你选择订阅,请将活动订阅设置为要对其进行操作的存储帐户的订阅。 在此示例中,请将
<subscription-id>
占位符值替换为你的订阅 ID。Select-AzSubscription -SubscriptionId <subscription-id>
创建存储任务
使用 JSON 定义 条件 。 条件是一个或多个子句的集合。 每个子句都包含一个属性、一个值和一个运算符。 在以下 JSON 中,属性为
Name
,值为.docx
,运算符为endsWith
。 此条款仅允许对 Microsoft Word 文档执行操作。$conditions = "[[endsWith(Name, '.docx')]]"
有关属性和运算符的完整列表,请参阅 存储任务条件。
小窍门
可以将多个条件添加到同一字符串中,并使用逗号分隔它们。
使用
New-AzStorageActionTaskOperationObject
命令定义每个操作。以下操作创建一个设置不可变策略的操作。
$policyoperation = New-AzStorageActionTaskOperationObject ` -Name SetBlobImmutabilityPolicy ` -Parameter @{"untilDate" = (Get-Date).AddDays(1); "mode" = "locked"} ` -OnFailure break ` -OnSuccess continue
以下操作将在 Word 文档的元数据中设置 Blob 索引标签。
$tagoperation = New-AzStorageActionTaskOperationObject -Name SetBlobTags ` -Parameter @{"tagsetImmutabilityUpdatedBy"="StorageTaskQuickstart"} ` -OnFailure break ` -OnSuccess continue
使用
New-AzStorageActionTask
命令创建存储任务,并传入前面定义的条件和操作。 此示例在“美国西部”区域中的资源组mystoragetaskresourcegroup
中创建一个命名mystoragetask
的存储任务。$task = New-AzStorageActionTask ` -Name mystoragetask ` -ResourceGroupName mystoragetaskresourcegroup ` -Location westus ` -Enabled ` -Description 'my powershell storage task' ` -IfCondition $conditions ` -IfOperation $policyoperation,$tagoperation ` -EnableSystemAssignedIdentity:$true
创建分配
存储任务 分配 指定存储帐户。 启用存储任务后,任务的条件和作将应用于该存储帐户。 分配还包含配置属性,这些属性可帮助你定位特定的 Blob,或指定任务运行的时间和频率。 可以为每个目标帐户添加任务。
使用
New-AzStorageTaskAssignment
命令创建存储任务分配。 以下分配针对名为mystorageaccount
的帐户的mycontainer
容器。 此分配指定任务只运行一次,并将执行报告保存到名为storage-tasks-report
的文件夹。 该任务计划从当前时间起运行10
分钟。$startTime = (Get-Date).AddMinutes(10) New-AzStorageTaskAssignment ` -ResourceGroupName mystoragetaskresourcegroup ` -AccountName mystorageaccount ` -name mystoragetaskAssignment ` -TaskId $task.Id ` -ReportPrefix "storage-tasks-report" ` -TriggerType RunOnce ` -StartOn $startTime.ToUniversalTime() ` -Description "task assignment" ` -Enabled:$true ` -TargetPrefix "mycontainer/" ` -TargetExcludePrefix ""
授予存储任务在目标存储帐户上执行操作的权限。 使用
New-AzRoleAssignment
命令将Storage Blob Data Owner
的角色分配给存储任务的系统分配托管标识。New-AzRoleAssignment ` -ResourceGroupName mystoragetaskresourcegroup ` -ResourceName mystorageaccount ` -ResourceType "Microsoft.Storage/storageAccounts" ` -ObjectId $task.IdentityPrincipalId ` -RoleDefinitionName "Storage Blob Data Owner"
查看任务运行的结果
任务完成运行后,使用 Get-AzStorageActionTasksReport
命令获取每个分配的运行报告摘要。
Get-AzStorageActionTasksReport `
-ResourceGroupName mystoragetaskresourcegroup `
-StorageTaskName mystoragetask | Format-List
SummaryReportPath
每个报表摘要的字段包含详细报表的路径。 该报告包含容器、Blob、执行的操作以及状态的逗号分隔列表。
清理资源
删除所有已创建的资产。 删除资产的最简单方法是删除资源组。 删除资源组还会删除该组中包含的所有资源。 在以下示例中,删除资源组会删除存储帐户和资源组本身。
Remove-AzResourceGroup -Name $ResourceGroup