我有一个PowerShell脚本,如下所示。基本上,这样做是将新用户添加到我们的Azure Active Directory,然后尝试将用户添加到数据库。
# Create some variables
$TemporaryPassword = "Password123"
$DisplayName = "xxxxxxxxx"
$MailNickName = "xxxxxxxx"
$PrincipalName = "xxxxxxxxxxxxxxxxxxxxxxx"
# Create a password profile which the New-AzureADUser cmdlet needs
$PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
$PasswordProfile.Password = $TemporaryPassword
#Add the user to AAD
New-AzureADUser -AccountEnabled $True -DisplayName $DisplayName -PasswordProfile $PasswordProfile -MailNickName $MailNickName -UserPrincipalName $PrincipalName
# If the user was added successfully, add him/her to our database.
$Status = Get-AzureADUser -Filter "UserPrincipalName eq '$PrincipalName'"
if ($Status)
{
Invoke-Expression "&'C:\AzureFileShare\MEDsys\Powershell Scripts\AddDatabaseUser.ps1' -ServerName medsys-dev -DatabaseName Phoenix -UserName $PrincipalName"
}
此脚本正在成功执行,但我无法立即将用户添加到数据库(这是AddDatabaseUser.ps1脚本所执行的操作)。我总是会收到一条错误消息,说用户在AAD中不存在。但是,如果我再等5-15秒再次执行该特定行,则可以正常工作。
因此,即使用户成功添加到AAD,在Azure允许将用户添加到数据库之前,仍需要某种延迟。有谁知道为什么?
注意:我没有将AddDatabaseUser.ps1脚本添加到此,因为我认为问题不存在,因为如果我想在他/她添加到AAD之后需要足够长的时间,则总是添加用户。
答案 0 :(得分:1)
您面临的问题仅仅是在大型全球云身份系统中复制数据的挑战。创建新用户时,该更改需要一些时间在我们在不同集群和区域中的目录的所有副本中传播。当您创建Get-AzureADUser
时,您可能没有遇到已经获取更改的相同群集或区域,因此结果有10秒的延迟。
此处的解决方案是使用New-AzureADUser
调用的输出来填充数据库,并避免使用Get-AzureAdUser
。
如果您拨打这样的电话:
PS C:\Users\shtabriz> $result = New-AzureADUser -AccountEnabled $true -UserPrincipalName "new@shawntest.onmicrosoft.com"-DisplayName "new name" -PasswordProfile $PasswordProfile -MailNickName "newname"
然后检查$result
:
PS C:\Users\shtabriz> $result |fl
ExtensionProperty : {[odata.metadata, https://graph.windows.net/4a4d599f-e69d-4cd8-a9e1-9882ea340fb5/$meta
data#directoryObjects/Microsoft.DirectoryServices.User/@Element], [odata.type,
Microsoft.DirectoryServices.User], [employeeId, ], [onPremisesDistinguishedName, ]...}
DeletionTimestamp :
ObjectId : 49ebc6d5-835b-447c-bed0-3281f63cf7c2
ObjectType : User
AccountEnabled : True
AssignedLicenses : {}
AssignedPlans : {}
City :
CompanyName :
Country :
CreationType :
Department :
DirSyncEnabled :
DisplayName : new name
FacsimileTelephoneNumber :
GivenName :
IsCompromised :
ImmutableId :
JobTitle :
LastDirSyncTime :
Mail :
MailNickName : newname
Mobile :
OnPremisesSecurityIdentifier :
OtherMails : {}
PasswordPolicies :
PasswordProfile : class PasswordProfile {
Password:
ForceChangePasswordNextLogin: True
EnforceChangePasswordPolicy: False
}
PhysicalDeliveryOfficeName :
PostalCode :
PreferredLanguage :
ProvisionedPlans : {}
ProvisioningErrors : {}
ProxyAddresses : {}
RefreshTokensValidFromDateTime : 11/2/2017 8:39:28 PM
ShowInAddressList :
SignInNames : {}
SipProxyAddress :
State :
StreetAddress :
Surname :
TelephoneNumber :
UsageLocation :
UserPrincipalName : new@shawntest.onmicrosoft.com
UserType : Member
这与Get-AzureAdUser
完全相同:
PS C:\Users\shtabriz> Get-AzureADUser -ObjectId 49ebc6d5-835b-447c-bed0-3281f63cf7c2 | fl
ExtensionProperty : {[odata.metadata, https://graph.windows.net/4a4d599f-e69d-4cd8-a9e1-9882ea340fb5/$metadata#directoryObjects/Microsoft.DirectoryServices.User/@Element], [odata.type, Microsoft.DirectoryServices.User], [employeeId, ],
[onPremisesDistinguishedName, ]...}
DeletionTimestamp :
ObjectId : 49ebc6d5-835b-447c-bed0-3281f63cf7c2
ObjectType : User
AccountEnabled : True
AssignedLicenses : {}
AssignedPlans : {}
City :
CompanyName :
Country :
CreationType :
Department :
DirSyncEnabled :
DisplayName : new name
FacsimileTelephoneNumber :
GivenName :
IsCompromised :
ImmutableId :
JobTitle :
LastDirSyncTime :
Mail :
MailNickName : newname
Mobile :
OnPremisesSecurityIdentifier :
OtherMails : {}
PasswordPolicies :
PasswordProfile : class PasswordProfile {
Password:
ForceChangePasswordNextLogin: True
EnforceChangePasswordPolicy: False
}
PhysicalDeliveryOfficeName :
PostalCode :
PreferredLanguage :
ProvisionedPlans : {}
ProvisioningErrors : {}
ProxyAddresses : {}
RefreshTokensValidFromDateTime : 11/2/2017 8:39:28 PM
ShowInAddressList :
SignInNames : {}
SipProxyAddress :
State :
StreetAddress :
Surname :
TelephoneNumber :
UsageLocation :
UserPrincipalName : new@shawntest.onmicrosoft.com
UserType : Member
如果这可以解决您的问题,请告诉我。