5

Sto lavorando a uno script PowerShell che creerà un gruppo di risorse, registrare l'applicazione inclusa (in questo esempio, un API Web) all'AAD associato. Tuttavia, quando si chiama cercando di assegnare i diritti Reader, continua a non riuscire.AzureAD PowerShell New-AzureRmRoleAssignment continua a non riuscire

Ho iniziato dal file di distribuzione di base * .ps1 fornito con il modello AzureResourceGroup in Visual Studio (2015).

sto correndo il seguente codice:

#Requires -Version 3.0 
#Requires -Module AzureRM.Resources 
#Requires -Module Azure.Storage 
Import-Module Azure -ErrorAction SilentlyContinue 
Set-StrictMode -Version 3 

Login-AzureRmAccount 

$tenantWebSite = New-AzureRmADApplication -DisplayName "TheSiteName" -HomePage "http://MySignOnUrl" -IdentifierUris "http://MyIdentifierUrl" -Password "MyClientSecret" 

$tenantWebSiteServicePrincipal = New-AzureRmADServicePrincipal -ApplicationId $tenantWebSite.ApplicationId 

New-AzureRmRoleAssignment -RoleDefinitionName Reader -ServicePrincipalName $tenantWebSite.ApplicationId 

Questo ultimo comando (New-AzureRmRoleAssignment) continua a non aver con il seguente errore:

09:58:26 - [ERROR] New-AzureRmRoleAssignment : PrincipalNotFound: Principal 
09:58:26 - [ERROR] 50f3d430c68b485b8c11a63552171550 does not exist in the directory 
09:58:26 - [ERROR] <MyTenantId>. 
09:58:26 - [ERROR] At D:\dev_new_2010\cto\src\dev\d.tom.0\deploy\calidos.maat.deploy.azureresource 
09:58:26 - [ERROR] group\Scripts\Deploy-AzureResourceGroup.ps1:115 char:1 
09:58:26 - [ERROR] + New-AzureRmRoleAssignment -RoleDefinitionName Reader -ServicePrincipa ... 
09:58:26 - [ERROR] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
09:58:26 - [ERROR]  + CategoryInfo   : CloseError: (:) [New-AzureRmRoleAssignment], Clo 
09:58:26 - [ERROR] udException 
09:58:26 - [ERROR]  + FullyQualifiedErrorId : Microsoft.Azure.Commands.Resources.NewAzureRoleA 
09:58:26 - [ERROR] ssignmentCommand 

Normalmente, eseguire questo script utilizzando l'implementazione opzione in studio visivo. Quando eseguo questo script da una finestra di comando Microsoft Azure PowerShell, ottengo lo stesso errore.

MA, quando eseguo il comando esatto nella stessa finestra di PowerShell, funziona!

New-AzureRmRoleAssignment -RoleDefinitionName Reader -ServicePrincipalName <ApplicationId> 

Qualcuno ha un'idea sul motivo per cui ciò non riuscirebbe all'interno del file ps1? Ho anche provato a definire esplicitamente l'ambito, ma non ha funzionato.

risposta

2

EDIT:

Ok, la "soluzione" precedente era pura fortuna ... A quanto pare, il New-AzureRmADServicePrincipal viene creato in modo asincrono. Questo metodo restituisce immediatamente un oggetto, ma il principale effettivo non viene creato immediatamente ...

Ho lavorato a questo problema aggiungendo un comando Start-Sleep -s 15.

Se ciò non è sufficiente, aumentarlo o rilevare l'errore e attendere qualche secondo prima di riprovare.

+0

Ho scoperto che avevo bisogno di aggiungere la logica di riprova. A volte ci sono voluti 30 secondi per completare la creazione, così da poter aggiungere un ruolo –