Konfigurieren der mandantenübergreifenden Synchronisierung mithilfe von Microsoft Graph PowerShell oder der Microsoft Graph-API
In diesem Artikel werden die wichtigsten Schritte zum Konfigurieren der mandantenübergreifenden Synchronisierung mithilfe von Microsoft Graph PowerShell oder der Microsoft Graph-API beschrieben. Bei der Konfiguration stellt Microsoft Entra ID automatisch B2B-Benutzer*innen in Ihrem Zielmandanten bereit und hebt diese Bereitstellung auf. Ausführliche Schritte zur Verwendung des Microsoft Entra Admin Centers finden Sie unter Konfigurieren der mandantenübergreifenden Synchronisierung.
Voraussetzungen
Quellmandant
- Microsoft Entra ID-P1- oder P2-Lizenz Weitere Informationen finden Sie unter Lizenzanforderungen.
- Die Rolle Sicherheitsadministrator zum Konfigurieren der Einstellungen für den mandantenübergreifenden Zugriff.
- Die Rolle Hybrid-Identitätsadministrator zum Konfigurieren der mandantenübergreifenden Synchronisierung.
- Die Rolle Cloud-Anwendungsadministrator oder Anwendungsadministrator zum Zuweisen von Benutzern zu einer Konfiguration und zum Löschen einer Konfiguration.
- Die Rolle Globaler Administratorzum Zustimmen zu den erforderlichen Berechtigungen.
Zielmandant
- Microsoft Entra ID-P1- oder P2-Lizenz Weitere Informationen finden Sie unter Lizenzanforderungen.
- Die Rolle Sicherheitsadministrator zum Konfigurieren der Einstellungen für den mandantenübergreifenden Zugriff.
- Die Rolle Globaler Administratorzum Zustimmen zu den erforderlichen Berechtigungen.
Schritt 1: Anmelden beim Zielmandanten
Zielmandant
Starten Sie PowerShell.
Installieren Sie bei Bedarf das Microsoft Graph PowerShell SDK.
Rufen Sie die Mandanten-ID der Quell- und Zielmandanten ab, und initialisieren Sie Variablen.
$SourceTenantId = "<SourceTenantId>" $TargetTenantId = "<TargetTenantId>"
Verwenden Sie den Befehl Connect-MgGraph, um sich beim Zielmandanten anzumelden und den folgenden erforderlichen Berechtigungen zuzustimmen.
Policy.Read.All
Policy.ReadWrite.CrossTenantAccess
Connect-MgGraph -TenantId $TargetTenantId -Scopes "Policy.Read.All","Policy.ReadWrite.CrossTenantAccess"
Schritt 2: Aktivieren der Benutzersynchronisierung im Zielmandanten
Zielmandant
Verwenden Sie im Zielmandanten den Befehl New-MgPolicyCrossTenantAccessPolicyPartner, um eine neue Partnerkonfiguration in einer mandantenübergreifenden Zugriffsrichtlinie zwischen dem Zielmandanten und dem Quellmandanten zu erstellen. Verwenden Sie die Quellmandanten-ID in der Anforderung.
Wenn Sie den Fehler
New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists
erhalten, verfügen Sie möglicherweise bereits über eine vorhandene Konfiguration. Weitere Informationen finden Sie unter Symptom – Fehler: New-MgPolicyCrossTenantAccessPolicyPartner_Create.$Params = @{ TenantId = $SourceTenantId } New-MgPolicyCrossTenantAccessPolicyPartner -BodyParameter $Params | Format-List
AutomaticUserConsentSettings : Microsoft.Graph.PowerShell.Models.MicrosoftGraphInboundOutboundPolicyConfiguration B2BCollaborationInbound : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting B2BCollaborationOutbound : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting B2BDirectConnectInbound : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting B2BDirectConnectOutbound : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting IdentitySynchronization : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantIdentitySyncPolicyPartner InboundTrust : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyInboundTrust IsServiceProvider : TenantId : <SourceTenantId> TenantRestrictions : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyTenantRestrictions AdditionalProperties : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#policies/crossTenantAccessPolicy/partners/$entity], [crossCloudMeetingConfiguration, System.Collections.Generic.Dictionary`2[System.String,System.Object]], [protectedContentSharing, System.Collections.Generic.Dictionary`2[System.String,System.Object]]}
Verwenden Sie den Befehl Invoke-MgGraphRequest, um die Benutzersynchronisierung im Zielmandanten zu aktivieren.
Wenn Sie einen Fehler vom Typ
Request_MultipleObjectsWithSameKeyValue
erhalten, verfügen Sie möglicherweise bereits über eine vorhandene Richtlinie. Weitere Informationen finden Sie unter Symptom: Fehler „Request_MultipleObjectsWithSameKeyValue“.$Params = @{ userSyncInbound = @{ isSyncAllowed = $true } } Invoke-MgGraphRequest -Method PUT -Uri "https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/partners/$SourceTenantId/identitySynchronization" -Body $Params
Verwenden Sie den Befehl Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization, um zu überprüfen, ob
IsSyncAllowed
auf „true“ festgelegt ist.(Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInbound
IsSyncAllowed ------------- True
Schritt 3: Automatisches Einlösen von Einladungen im Zielmandanten
Zielmandant
Verwenden Sie im Zielmandanten den Befehl Update-MgPolicyCrossTenantAccessPolicyPartner, um Einladungen automatisch einzulösen und Einwilligungsaufforderungen für eingehenden Zugriff zu unterdrücken.
$AutomaticUserConsentSettings = @{ "InboundAllowed"="True" } Update-MgPolicyCrossTenantAccessPolicyPartner -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId -AutomaticUserConsentSettings $AutomaticUserConsentSettings
Schritt 4: Anmelden beim Quellmandanten
Quellmandant
Starten Sie eine Instanz von PowerShell.
Rufen Sie die Mandanten-ID der Quell- und Zielmandanten ab, und initialisieren Sie Variablen.
$SourceTenantId = "<SourceTenantId>" $TargetTenantId = "<TargetTenantId>"
Verwenden Sie den Befehl Connect-MgGraph, um sich beim Quellmandanten anzumelden und den folgenden erforderlichen Berechtigungen zuzustimmen.
Policy.Read.All
Policy.ReadWrite.CrossTenantAccess
Application.ReadWrite.All
Directory.ReadWrite.All
AuditLog.Read.All
Connect-MgGraph -TenantId $SourceTenantId -Scopes "Policy.Read.All","Policy.ReadWrite.CrossTenantAccess","Application.ReadWrite.All","Directory.ReadWrite.All","AuditLog.Read.All"
Schritt 5: Automatisches Einlösen von Einladungen im Quellmandanten
Quellmandant
Verwenden Sie im Quellmandanten den Befehl New-MgPolicyCrossTenantAccessPolicyPartner, um eine neue Partnerkonfiguration in einer mandantenübergreifenden Zugriffsrichtlinie zwischen dem Quellmandanten und dem Zielmandanten zu erstellen. Verwenden Sie die Zielmandanten-ID in der Anforderung.
Wenn Sie den Fehler
New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists
erhalten, verfügen Sie möglicherweise bereits über eine vorhandene Konfiguration. Weitere Informationen finden Sie unter Symptom – Fehler: New-MgPolicyCrossTenantAccessPolicyPartner_Create.$Params = @{ TenantId = $TargetTenantId } New-MgPolicyCrossTenantAccessPolicyPartner -BodyParameter $Params | Format-List
AutomaticUserConsentSettings : Microsoft.Graph.PowerShell.Models.MicrosoftGraphInboundOutboundPolicyConfiguration B2BCollaborationInbound : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting B2BCollaborationOutbound : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting B2BDirectConnectInbound : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting B2BDirectConnectOutbound : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting IdentitySynchronization : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantIdentitySyncPolicyPartner InboundTrust : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyInboundTrust IsServiceProvider : TenantId : <TargetTenantId> TenantRestrictions : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyTenantRestrictions AdditionalProperties : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#policies/crossTenantAccessPolicy/partners/$entity], [crossCloudMeetingConfiguration, System.Collections.Generic.Dictionary`2[System.String,System.Object]], [protectedContentSharing, System.Collections.Generic.Dictionary`2[System.String,System.Object]]}
Verwenden Sie den Befehl Update-MgPolicyCrossTenantAccessPolicyPartner, um Einladungen automatisch einzulösen und Einwilligungsaufforderungen für ausgehenden Zugriff zu unterdrücken.
$AutomaticUserConsentSettings = @{ "OutboundAllowed"="True" } Update-MgPolicyCrossTenantAccessPolicyPartner -CrossTenantAccessPolicyConfigurationPartnerTenantId $TargetTenantId -AutomaticUserConsentSettings $AutomaticUserConsentSettings
Schritt 6: Erstellen einer Konfigurationsanwendung im Quellmandanten
Quellmandant
Verwenden Sie im Quellmandanten den Befehl Invoke-MgInstantiateApplicationTemplate, um Ihrem Mandanten eine Instanz einer Konfigurationsanwendung aus dem Microsoft Entra-Anwendungskatalog hinzuzufügen.
Invoke-MgInstantiateApplicationTemplate -ApplicationTemplateId "518e5f48-1fc8-4c48-9387-9fdf28b0dfe7" -DisplayName "Fabrikam"
Verwenden Sie den Befehl Get-MgServicePrincipal, um die Dienstprinzipal-ID und die App-Rollen-ID abzurufen.
Get-MgServicePrincipal -Filter "DisplayName eq 'Fabrikam'" | Format-List
AccountEnabled : True AddIns : {} AlternativeNames : {} AppDescription : AppDisplayName : Fabrikam AppId : <AppId> AppManagementPolicies : AppOwnerOrganizationId : <AppOwnerOrganizationId> AppRoleAssignedTo : AppRoleAssignmentRequired : True AppRoleAssignments : AppRoles : {<AppRoleId>} ApplicationTemplateId : 518e5f48-1fc8-4c48-9387-9fdf28b0dfe7 ClaimsMappingPolicies : CreatedObjects : CustomSecurityAttributes : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCustomSecurityAttributeValue DelegatedPermissionClassifications : DeletedDateTime : Description : DisabledByMicrosoftStatus : DisplayName : Fabrikam Endpoints : ErrorUrl : FederatedIdentityCredentials : HomeRealmDiscoveryPolicies : Homepage : https://account.activedirectory.windowsazure.com:444/applications/default.aspx?metadata=aad2aadsync|ISV9.1|primary|z Id : <ServicePrincipalId> Info : Microsoft.Graph.PowerShell.Models.MicrosoftGraphInformationalUrl KeyCredentials : {} LicenseDetails : ...
Initialisieren Sie eine Variable für die Dienstprinzipal-ID.
Achten Sie darauf, die Dienstprinzipal-IDs anstelle der Anwendungs-ID zu verwenden.
$ServicePrincipalId = "<ServicePrincipalId>"
Initialisieren Sie eine Variable für die App-Rollen-ID.
$AppRoleId= "<AppRoleId>"
Schritt 7: Testen der Verbindung mit dem Zielmandanten
Quellmandant
Verwenden Sie im Quellmandanten den Befehl Invoke-MgGraphRequest, um die Verbindung mit dem Zielmandanten zu testen und die Anmeldeinformationen zu überprüfen.
$Params = @{ "useSavedCredentials" = $false "templateId" = "Azure2Azure" "credentials" = @( @{ "key" = "CompanyId" "value" = $TargetTenantId } @{ "key" = "AuthenticationType" "value" = "SyncPolicy" } ) } Invoke-MgGraphRequest -Method POST -Uri "https://graph.microsoft.com/v1.0/servicePrincipals/$ServicePrincipalId/synchronization/jobs/validateCredentials" -Body $Params
Schritt 8: Erstellen eines Bereitstellungsauftrags im Quellmandanten
Quellmandant
Erstellen Sie im Quellmandanten einen Bereitstellungsauftrag, um die Bereitstellung zu aktivieren.
Bestimmen Sie die zu verwendende Synchronisierungsvorlage, z. B.
Azure2Azure
.Eine Vorlage verfügt über vorkonfigurierte Synchronisierungseinstellungen.
Verwenden Sie im Quellmandanten den Befehl New-MgServicePrincipalSynchronizationJob, um einen Bereitstellungsauftrag basierend auf einer Vorlage zu erstellen.
New-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -TemplateId "Azure2Azure" | Format-List
Id : <JobId> Schedule : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationSchedule Schema : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationSchema Status : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationStatus SynchronizationJobSettings : {AzureIngestionAttributeOptimization, LookaheadQueryEnabled} TemplateId : Azure2Azure AdditionalProperties : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#servicePrincipals('<ServicePrincipalId>')/synchro nization/jobs/$entity]}
Initialisieren Sie eine Variable für die Auftrags-ID.
$JobId = "<JobId>"
Schritt 9: Speichern Ihrer Anmeldeinformationen
Quellmandant
Verwenden Sie im Quellmandanten den Befehl Invoke-MgGraphRequest, um Ihre Anmeldeinformationen zu speichern.
$Params = @{ "value" = @( @{ "key" = "AuthenticationType" "value" = "SyncPolicy" } @{ "key" = "CompanyId" "value" = $TargetTenantId } ) } Invoke-MgGraphRequest -Method PUT -Uri "https://graph.microsoft.com/v1.0/servicePrincipals/$ServicePrincipalId/synchronization/secrets" -Body $Params
Schritt 10: Zuweisen eines Benutzenden zur Konfiguration
Quellmandant
Damit die mandantenübergreifende Synchronisierung funktioniert, muss der Konfiguration mindestens ein interner Benutzer zugewiesen sein.
Verwenden Sie im Quellmandanten den Befehl New-MgServicePrincipalAppRoleAssignedTo, um der Konfiguration einen internen Benutzenden zuzuweisen.
$Params = @{ PrincipalId = "<PrincipalId>" ResourceId = $ServicePrincipalId AppRoleId = $AppRoleId } New-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $ServicePrincipalId -BodyParameter $Params | Format-List
AppRoleId : <AppRoleId> CreatedDateTime : 7/31/2023 10:27:12 PM DeletedDateTime : Id : <Id> PrincipalDisplayName : User1 PrincipalId : <PrincipalId> PrincipalType : User ResourceDisplayName : Fabrikam ResourceId : <ServicePrincipalId> AdditionalProperties : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#appRoleAssignments/$entity]}
Schritt 11: Testen der bedarfsorientierten Bereitstellung
Quellmandant
Nachdem Sie nun über eine Konfiguration verfügen, können Sie die bedarfsorientierte Bereitstellung mit einem Ihrer Benutzer testen.
Verwenden Sie im Quellmandanten den Befehl Get-MgServicePrincipalSynchronizationJobSchema, um die Schemaregel-ID abzurufen.
$SynchronizationSchema = Get-MgServicePrincipalSynchronizationJobSchema -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId $SynchronizationSchema.SynchronizationRules | Format-List
ContainerFilter : Microsoft.Graph.PowerShell.Models.MicrosoftGraphContainerFilter Editable : True GroupFilter : Microsoft.Graph.PowerShell.Models.MicrosoftGraphGroupFilter Id : <RuleId> Metadata : {defaultSourceObjectMappings, supportsProvisionOnDemand} Name : USER_INBOUND_USER ObjectMappings : {Provision Azure Active Directory Users, , , ...} Priority : 1 SourceDirectoryName : Azure Active Directory TargetDirectoryName : Azure Active Directory (target tenant) AdditionalProperties : {}
Initialisieren Sie eine Variable für die Regel-ID.
$RuleId = "<RuleId>"
Verwenden Sie den Befehl New-MgServicePrincipalSynchronizationJobOnDemand, um bei Bedarf einen Testbenutzer bereitzustellen.
$Params = @{ Parameters = @( @{ Subjects = @( @{ ObjectId = "<UserObjectId>" ObjectTypeName = "User" } ) RuleId = $RuleId } ) } New-MgServicePrincipalSynchronizationJobOnDemand -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId -BodyParameter $Params | Format-List
Key : Microsoft.Identity.Health.CPP.Common.DataContracts.SyncFabric.StatusInfo Value : [{"provisioningSteps":[{"name":"EntryImport","type":"Import","status":"Success","description":"Retrieved User 'user1@fabrikam.com' from Azure Active Directory","timestamp":"2023-07-31T22:31:15.9116590Z","details":{"objectId": "<UserObjectId>","accountEnabled":"True","displayName":"User1","mailNickname":"user1","userPrincipalName":"use ... AdditionalProperties : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.stringKeyStringValuePair]}
Schritt 12: Starten des Bereitstellungsauftrags
Quellmandant
Verwenden Sie nach der Konfiguration des Bereitstellungsauftrags jetzt im Quellmandanten den Befehl Start-MgServicePrincipalSynchronizationJob, um den Bereitstellungsauftrag zu starten.
Start-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId
Schritt 13: Überwachen der Bereitstellung
Quellmandant
Nun, da der Bereitstellungsauftrag ausgeführt wird, verwenden Sie im Quellmandanten den Befehl Get-MgServicePrincipalSynchronizationJob, um den Fortschritt des aktuellen Bereitstellungszyklus sowie die bisherigen Statistiken zu überwachen, z. B. die Anzahl der Benutzenden und Gruppen, die im Zielsystem erstellt wurden.
Get-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId | Format-List
Id : <JobId> Schedule : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationSchedule Schema : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationSchema Status : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationStatus SynchronizationJobSettings : {AzureIngestionAttributeOptimization, LookaheadQueryEnabled} TemplateId : Azure2Azure AdditionalProperties : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#servicePrincipals('<ServicePrincipalId>')/synchro nization/jobs/$entity]}
Verwenden Sie zusätzlich zur Überwachung des Status des Bereitstellungsauftrags den Befehl Get-MgAuditLogProvisioning, um die Bereitstellungsprotokolle abzurufen und alle aufgetretenen Bereitstellungsereignisse zu erhalten. Sie können beispielsweise einen bestimmten Benutzer abfragen, um zu ermitteln, ob dieser erfolgreich bereitgestellt wurde.
Get-MgAuditLogDirectoryAudit | Select -First 10 | Format-List
ActivityDateTime : 7/31/2023 12:08:17 AM ActivityDisplayName : Export AdditionalDetails : {Details, ErrorCode, EventName, ipaddr...} Category : ProvisioningManagement CorrelationId : aaaa0000-bb11-2222-33cc-444444dddddd Id : Sync_aaaa0000-bb11-2222-33cc-444444dddddd_L5BFV_161778479 InitiatedBy : Microsoft.Graph.PowerShell.Models.MicrosoftGraphAuditActivityInitiator1 LoggedByService : Account Provisioning OperationType : Result : success ResultReason : User 'user2@fabrikam.com' was created in Azure Active Directory (target tenant) TargetResources : {<ServicePrincipalId>, } AdditionalProperties : {} ActivityDateTime : 7/31/2023 12:08:17 AM ActivityDisplayName : Export AdditionalDetails : {Details, ErrorCode, EventName, ipaddr...} Category : ProvisioningManagement CorrelationId : aaaa0000-bb11-2222-33cc-444444dddddd Id : Sync_aaaa0000-bb11-2222-33cc-444444dddddd_L5BFV_161778264 InitiatedBy : Microsoft.Graph.PowerShell.Models.MicrosoftGraphAuditActivityInitiator1 LoggedByService : Account Provisioning OperationType : Result : success ResultReason : User 'user2@fabrikam.com' was updated in Azure Active Directory (target tenant) TargetResources : {<ServicePrincipalId>, } AdditionalProperties : {} ActivityDateTime : 7/31/2023 12:08:14 AM ActivityDisplayName : Synchronization rule action AdditionalDetails : {Details, ErrorCode, EventName, ipaddr...} Category : ProvisioningManagement CorrelationId : aaaa0000-bb11-2222-33cc-444444dddddd Id : Sync_aaaa0000-bb11-2222-33cc-444444dddddd_L5BFV_161778395 InitiatedBy : Microsoft.Graph.PowerShell.Models.MicrosoftGraphAuditActivityInitiator1 LoggedByService : Account Provisioning OperationType : Result : success ResultReason : User 'user2@fabrikam.com' will be created in Azure Active Directory (target tenant) (User is active and assigned in Azure Active Directory, but no matching User was found in Azure Active Directory (target tenant)) TargetResources : {<ServicePrincipalId>, } AdditionalProperties : {}
Tipps zur Problembehandlung
Symptom: Fehler aufgrund von unzureichenden Berechtigungen
Wenn Sie versuchen, eine Aktion auszuführen, erhalten Sie eine Fehlermeldung ähnlich der folgenden:
code: Authorization_RequestDenied
message: Insufficient privileges to complete the operation.
Ursache
Entweder verfügt der angemeldete Benutzer nicht über ausreichende Berechtigungen, oder Sie müssen einer der erforderlichen Berechtigungen zustimmen.
Lösung
Stellen Sie sicher, dass Ihnen die erforderlichen Rollen zugewiesen sind. Siehe Abschnitt Voraussetzungen weiter oben in diesem Artikel.
Wenn Sie sich mit Connect-MgGraph anmelden, stellen Sie sicher, dass Sie die erforderlichen Bereiche angeben. Weitere Informationen finden Sie unter Schritt 1: Anmelden beim Zielmandanten und Schritt 4: Anmelden beim Quellmandanten weiter oben in diesem Artikel.
Symptom – Fehler: New-MgPolicyCrossTenantAccessPolicyPartner_Create
Wenn Sie versuchen, eine neue Partnerkonfiguration zu erstellen, erhalten Sie eine Fehlermeldung ähnlich der folgenden:
New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists.
Ursache
Sie versuchen wahrscheinlich, eine bereits vorhandene Konfiguration oder ein bereits vorhandenes Objekt zu erstellen, das möglicherweise aus einer vorherigen Konfiguration stammt.
Lösung
Überprüfen Sie Ihre Syntax, und stellen Sie sicher, dass Sie die richtige Mandanten-ID verwenden.
Verwenden Sie den Befehl Get-MgPolicyCrossTenantAccessPolicyPartner, um das vorhandene Objekt auflisten.
Wenn Sie ein bestehendes Objekt haben, müssen Sie möglicherweise mit Update-MgPolicyCrossTenantAccessPolicyPartner eine Aktualisierung vornehmen.
Symptom: Fehler „Request_MultipleObjectsWithSameKeyValue“
Wenn Sie versuchen, die Benutzersynchronisierung zu aktivieren, erhalten Sie eine Fehlermeldung ähnlich der folgenden:
Invoke-MgGraphRequest: PUT https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/partners/<SourceTenantId>/identitySynchronization
HTTP/1.1 409 Conflict
...
{"error":{"code":"Request_MultipleObjectsWithSameKeyValue","message":"A conflicting object with one or more of the specified property values is present in the directory.","details":[{"code":"ConflictingObjects","message":"A conflicting object with one or more of the specified property values is present in the directory.", ... }}}
Ursache
Sie versuchen wahrscheinlich, eine Richtlinie zu erstellen, die bereits existiert, möglicherweise aus einer früheren Konfiguration.
Lösung
Überprüfen Sie Ihre Syntax, und stellen Sie sicher, dass Sie die richtige Mandanten-ID verwenden.
Verwenden Sie den Befehl Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization, um die Einstellung
IsSyncAllowed
aufzuführen.(Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInbound
Wenn Sie über eine vorhandene Richtlinie verfügen, müssen Sie möglicherweise mit dem Befehl Set-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization eine Aktualisierung vornehmen, um die Benutzersynchronisierung zu aktivieren.
$Params = @{ userSyncInbound = @{ isSyncAllowed = $true } } Set-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId -BodyParameter $Params