我有一个 Powershell 脚本,用于设置 Azure Web 应用程序、数据库等,但在运行脚本之前,我必须执行以下操作:
PS C:/> Login-AzureRmAccount
这会弹出一个 GUI,我必须在其中手动添加我的用户、密码和我的 2 因素身份验证代码。我最终想将该脚本用作构建/部署自动化脚本的一部分。
我从几篇关于使用“服务主体”的文章中收集到以下内容。
首先我这样做:
PS C:\> Add-AzureRmAccount
在这个调用中,我必须输入我的用户、密码和验证码
之后我必须执行以下操作(即使我不完全理解)。
$app = New-AzureRmADApplication -DisplayName "GGReal" -HomePage "https://www.example.org/ggreal" -IdentifierUris "https://www.example.org/ggreal" -Password "mysecretpass"
New-AzureRmADServicePrincipal -ApplicationId $app.ApplicationId
这似乎有效:
然后我试试这个,它失败了。
New-AzureRmRoleAssignment -RoleDefinitionName Reader -ServicePrincipalName $app.ApplicationId
我收到以下错误:
New-AzureRmRoleAssignment : AuthorizationFailed: The client jay@myemail.com' with object id '8ee9a6ec-yyyy-xxxx-xxxx-4ac0883f2a12' does not have authorization to perform action 'Microsoft.Authorization/roleAssignments/write' over scope '/subscriptions/5ba06de5-xxxx-zzzz-yyyy-27f7d2c8bba6'.
At line:1 char:1
+ New-AzureRmRoleAssignment -RoleDefinitionName Reader -ServicePrincipa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [New-AzureRmRoleAssignment], CloudException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Resources.NewAzureRoleAssignmentCommand
我必须做什么才能在没有人工干预的情况下启用脚本授权?
