You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写PowerShell Pester测试验证Azure应用注册权限包含指定值

Azure应用注册权限的Pester测试实现

背景

检查Azure应用注册权限时,可通过以下PowerShell命令获取其角色列表:

(Get-AzRoleAssignment -ObjectId $objectId).RoleDefinitionName

该命令返回的角色示例:Owner, Contributor, Reader, KeyVault Secret User。

测试要求

编写Pester测试,验证应用注册权限满足任一条件:

  • 包含 Owner 角色;
  • 同时包含 Contributor 和 KeyVault Secret User 角色(包含全部3个角色时测试也通过)。

初始错误代码

我尝试的代码无法正常运行:

BeforeALL {
    
    $objectId = "<应用注册对象ID>"
    $RoleDefName = Get-AzRoleAssignment -ObjectId $objectId
}

Describe "权限角色定义检查" {


    It "检查应用注册是否拥有正确权限" {
        if ($RoleDefName.RoleDefinitionName | Should -Contain 'Owner')
        {
            Write-Host "成功找到Owner权限"
        }
        else {
            $RoleDefName.RoleDefinitionName | Should -Contain 'Contributor'|'User Access Administrator'
        }
    }
}
    
}

最终可用代码

经Mark Wraggs建议调整后,实现需求的最终代码如下:

BeforeALL {
    $objectId = "<应用注册对象ID>"
    $RoleDefName = Get-AzRoleAssignment -ObjectId $objectId
}

Describe "权限角色定义检查" {

    It "检查应用注册是否拥有正确权限" -ForEach 'User Access Administrator','Contributor' {
        $RoleDefName.RoleDefinitionName -Contains 'Owner' -Or $RoleDefName.RoleDefinitionName -Contains $_ | Should -Be $true
    }
} 

注:若需严格匹配需求(同时包含Contributor和KeyVault Secret User),可将测试逻辑调整为:

It "应用注册拥有正确权限" {
    $hasOwner = $RoleDefName.RoleDefinitionName -contains 'Owner'
    $hasRequiredRoles = ($RoleDefName.RoleDefinitionName -contains 'Contributor') -and ($RoleDefName.RoleDefinitionName -contains 'KeyVault Secret User')
    $hasOwner -or $hasRequiredRoles | Should -Be $true
}

内容的提问来源于stack exchange,提问作者cress89

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 22:55:16