Aracılığıyla paylaş


PowerShell veya Microsoft Graph API kullanarak kiracılar arası eşitlemeyi yapılandırma

Bu makalede, Microsoft Graph PowerShell veya Microsoft Graph API kullanarak kiracılar arası eşitlemeyi yapılandırmaya yönelik temel adımlar açıklanmaktadır. Yapılandırıldığında, Microsoft Entra Id hedef kiracınızdaki B2B kullanıcılarını otomatik olarak sağlar ve sağlamalarını kaldırıyor. Microsoft Entra yönetim merkezini kullanmayla ilgili ayrıntılı adımlar için bkz . Kiracılar arası eşitlemeyi yapılandırma.

Kaynak kiracı ile hedef kiracı arasındaki kiracılar arası eşitlemeyi gösteren diyagram.

Önkoşullar

Kaynak kiracı simgesi.
Kaynak kiracı

Hedef kiracı simgesi.
Hedef kiracı

1. Adım: Hedef kiracıda oturum açma

Hedef kiracı simgesi.
Hedef kiracı

  1. PowerShell'i başlatın.

  2. Gerekirse Microsoft Graph PowerShell SDK'sını yükleyin.

  3. Kaynak ve hedef kiracıların kiracı kimliğini alın ve değişkenleri başlatın.

    $SourceTenantId = "<SourceTenantId>"
    $TargetTenantId = "<TargetTenantId>"
    
  4. Hedef kiracıda oturum açmak ve aşağıdaki gerekli izinleri kabul etmek için Connect-MgGraph komutunu kullanın.

    • Policy.Read.All
    • Policy.ReadWrite.CrossTenantAccess
    Connect-MgGraph -TenantId $TargetTenantId -Scopes "Policy.Read.All","Policy.ReadWrite.CrossTenantAccess"
    

2. Adım: Hedef kiracıda kullanıcı eşitlemesini etkinleştirme

Hedef kiracı simgesi.
Hedef kiracı

  1. Hedef kiracıda New-MgPolicyCrossTenantAccessPolicyPartner komutunu kullanarak hedef kiracı ile kaynak kiracı arasındaki kiracılar arası erişim ilkesinde yeni bir iş ortağı yapılandırması oluşturun. İstekte kaynak kiracı kimliğini kullanın.

    hatasını New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already existsalırsanız, zaten var olan bir yapılandırmanız olabilir. Daha fazla bilgi için bkz . Belirti - Yeni-MgPolicyCrossTenantAccessPolicyPartner_Create hatası.

    $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]]}
    
  2. Hedef kiracıda kullanıcı eşitlemesini etkinleştirmek için Invoke-MgGraphRequest komutunu kullanın.

    Hata Request_MultipleObjectsWithSameKeyValue alırsanız zaten bir ilkeniz olabilir. Daha fazla bilgi için bkz . Belirti - Request_MultipleObjectsWithSameKeyValue hatası.

    $Params = @{
        userSyncInbound = @{
            isSyncAllowed = $true
        }
    }
    Invoke-MgGraphRequest -Method PUT -Uri "https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/partners/$SourceTenantId/identitySynchronization" -Body $Params
    
  3. Doğru olarak ayarlandığını doğrulamak IsSyncAllowed için Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization komutunu kullanın.

    (Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInbound
    
    IsSyncAllowed
    -------------
    True
    

3. Adım: Davetleri hedef kiracıda otomatik olarak kullanma

Hedef kiracı simgesi.
Hedef kiracı

  1. Hedef kiracıda, davetleri otomatik olarak kullanmak ve gelen erişim için onay istemlerini engellemek için Update-MgPolicyCrossTenantAccessPolicyPartner komutunu kullanın.

    $AutomaticUserConsentSettings = @{
        "InboundAllowed"="True"
    }
    Update-MgPolicyCrossTenantAccessPolicyPartner -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId -AutomaticUserConsentSettings $AutomaticUserConsentSettings
    

4. Adım: Kaynak kiracıda oturum açma

Kaynak kiracı simgesi.
Kaynak kiracı

  1. PowerShell örneğini başlatın.

  2. Kaynak ve hedef kiracıların kiracı kimliğini alın ve değişkenleri başlatın.

    $SourceTenantId = "<SourceTenantId>"
    $TargetTenantId = "<TargetTenantId>"
    
  3. Kaynak kiracıda oturum açmak ve aşağıdaki gerekli izinleri kabul etmek için Connect-MgGraph komutunu kullanın.

    • 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"
    

5. Adım: Davetleri kaynak kiracıda otomatik olarak kullanma

Kaynak kiracı simgesi.
Kaynak kiracı

  1. Kaynak kiracı ile hedef kiracı arasındaki kiracılar arası erişim ilkesinde yeni bir iş ortağı yapılandırması oluşturmak için kaynak kiracıda New-MgPolicyCrossTenantAccessPolicyPartner komutunu kullanın. İstekte hedef kiracı kimliğini kullanın.

    hatasını New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already existsalırsanız, zaten var olan bir yapılandırmanız olabilir. Daha fazla bilgi için bkz . Belirti - Yeni-MgPolicyCrossTenantAccessPolicyPartner_Create hatası.

    $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]]}
    
    
  2. Davetleri otomatik olarak kullanmak ve giden erişim için onay istemlerini engellemek için Update-MgPolicyCrossTenantAccessPolicyPartner komutunu kullanın.

    $AutomaticUserConsentSettings = @{
        "OutboundAllowed"="True"
    }
    Update-MgPolicyCrossTenantAccessPolicyPartner -CrossTenantAccessPolicyConfigurationPartnerTenantId $TargetTenantId -AutomaticUserConsentSettings $AutomaticUserConsentSettings
    

6. Adım: Kaynak kiracıda yapılandırma uygulaması oluşturma

Kaynak kiracı simgesi.
Kaynak kiracı

  1. Microsoft Entra uygulama galerisinden kiracınıza yapılandırma uygulamasının bir örneğini eklemek için kaynak kiracıda Invoke-MgInstantiateApplicationTemplate komutunu kullanın.

    Invoke-MgInstantiateApplicationTemplate -ApplicationTemplateId "518e5f48-1fc8-4c48-9387-9fdf28b0dfe7" -DisplayName "Fabrikam"
    
  2. Hizmet sorumlusu kimliğini ve uygulama rolü kimliğini almak için Get-MgServicePrincipal komutunu kullanın.

    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                      :
    
    ...
    
  3. Hizmet sorumlusu kimliği için bir değişken başlatın.

    Uygulama kimliği yerine hizmet sorumlusu kimliğini kullandığınızdan emin olun.

    $ServicePrincipalId = "<ServicePrincipalId>"
    
  4. Uygulama rolü kimliği için bir değişken başlatın.

    $AppRoleId= "<AppRoleId>"
    

7. Adım: Hedef kiracı bağlantısını test etme

Kaynak kiracı simgesi.
Kaynak kiracı

  1. Kaynak kiracıda Invoke-MgGraphRequest komutunu kullanarak hedef kiracıyla bağlantıyı test edin ve kimlik bilgilerini doğrulayın.

    $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
    

8. Adım: Kaynak kiracıda sağlama işi oluşturma

Kaynak kiracı simgesi.
Kaynak kiracı

Kaynak kiracıda sağlamayı etkinleştirmek için bir sağlama işi oluşturun.

  1. Kullanılacak eşitleme şablonunu ( gibi Azure2Azure) belirleyin.

    Şablonda önceden yapılandırılmış eşitleme ayarları vardır.

  2. Kaynak kiracıda, şablonu temel alan bir sağlama işi oluşturmak için New-MgServicePrincipalSynchronizationJob komutunu kullanın.

    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]}
    
  3. İş kimliği için bir değişken başlatın.

    $JobId = "<JobId>"
    

9. Adım: Kimlik bilgilerinizi kaydetme

Kaynak kiracı simgesi.
Kaynak kiracı

  1. Kimlik bilgilerinizi kaydetmek için kaynak kiracıda Invoke-MgGraphRequest komutunu kullanın.

    $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
    

10. Adım: Yapılandırmaya kullanıcı atama

Kaynak kiracı simgesi.
Kaynak kiracı

Kiracılar arası eşitlemenin çalışması için yapılandırmaya en az bir iç kullanıcı atanmalıdır.

  1. Kaynak kiracıda, yapılandırmaya bir iç kullanıcı atamak için New-MgServicePrincipalAppRoleAssignedTo komutunu kullanın.

    $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]}
    

11. Adım: İsteğe bağlı olarak sağlamayı test edin

Kaynak kiracı simgesi.
Kaynak kiracı

Artık bir yapılandırmanız olduğuna göre, kullanıcılarınızdan biriyle isteğe bağlı sağlamayı test edebilirsiniz.

  1. Şema kuralı kimliğini almak için kaynak kiracıda Get-MgServicePrincipalSynchronizationJobSchema komutunu kullanın.

    $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 : {}
    
  2. Kural kimliği için bir değişken başlatın.

    $RuleId = "<RuleId>"
    
  3. İsteğe bağlı bir test kullanıcısı sağlamak için New-MgServicePrincipalSynchronizationJobOnDemand komutunu kullanın.

    $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]}
    

12. Adım: Sağlama işini başlatma

Kaynak kiracı simgesi.
Kaynak kiracı

  1. Sağlama işi yapılandırıldığına göre kaynak kiracıda, sağlama işini başlatmak için Start-MgServicePrincipalSynchronizationJob komutunu kullanın.

    Start-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId
    

13. Adım: Sağlamayı izleme

Kaynak kiracı simgesi.
Kaynak kiracı

  1. Artık sağlama işi çalıştırıldığına göre kaynak kiracıda Get-MgServicePrincipalSynchronizationJob komutunu kullanarak geçerli sağlama döngüsünün ilerleme durumunu ve hedef sistemde oluşturulan kullanıcı ve grup sayısı gibi bugüne kadarki istatistikleri izleyin.

    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]}
    
  2. Sağlama işinin durumunu izlemeye ek olarak, sağlama günlüklerini almak ve gerçekleşen tüm sağlama olaylarını almak için Get-MgAuditLogProvisioning komutunu kullanın. Örneğin, belirli bir kullanıcıyı sorgulayıp başarıyla sağlanıp sağlanmadığını belirleyin.

    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 : {}
    

Sorun giderme ipuçları

Belirti - Yetersiz ayrıcalık hatası

Bir eylem gerçekleştirmeye çalıştığınızda, aşağıdakine benzer bir hata iletisi alırsınız:

code: Authorization_RequestDenied
message: Insufficient privileges to complete the operation.

Neden

Oturum açmış kullanıcının yeterli ayrıcalığı yok veya gerekli izinlerden birini onaylamanız gerekiyor.

Çözüm

  1. Gerekli rollere atandığınızdan emin olun. Bu makalenin önceki bölümlerinde yer alan Önkoşullar bölümüne bakın.

  2. Connect-MgGraph ile oturum açtığınızda, gerekli kapsamları belirttiğinizden emin olun. Bu makalenin önceki bölümlerinde yer alan 1. Adım: Hedef kiracıda oturum açma ve 4. Adım: Kaynak kiracıda oturum açma konusuna bakın.

Belirti - Yeni MgPolicyCrossTenantAccessPolicyPartner_Create hatası

Yeni bir iş ortağı yapılandırması oluşturmaya çalıştığınızda, aşağıdakine benzer bir hata iletisi alırsınız:

New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists.

Neden

Büyük olasılıkla, muhtemelen önceki bir yapılandırmadan zaten var olan bir yapılandırma veya nesne oluşturmaya çalışıyorsunuz.

Çözüm

  1. Söz diziminizi ve doğru kiracı kimliğini kullandığınızı doğrulayın.

  2. Var olan nesneyi listelemek için Get-MgPolicyCrossTenantAccessPolicyPartner komutunu kullanın.

  3. Mevcut bir nesneniz varsa Update-MgPolicyCrossTenantAccessPolicyPartner kullanarak bir güncelleştirme yapmanız gerekebilir

Belirti - Request_MultipleObjectsWithSameKeyValue hatası

Kullanıcı eşitlemesini etkinleştirmeye çalıştığınızda, aşağıdakine benzer bir hata iletisi alırsınız:

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.", ... }}}

Neden

Büyük olasılıkla daha önceki bir yapılandırmadan zaten var olan bir ilke oluşturmaya çalışıyorsunuz.

Çözüm

  1. Söz diziminizi ve doğru kiracı kimliğini kullandığınızı doğrulayın.

  2. Ayarı listelemek IsSyncAllowed için Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization komutunu kullanın.

    (Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInbound
    
  3. Mevcut bir ilkeniz varsa, kullanıcı eşitlemesini etkinleştirmek için Set-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization komutunu kullanarak bir güncelleştirme yapmanız gerekebilir.

    $Params = @{
        userSyncInbound = @{
            isSyncAllowed = $true
        }
    }
    Set-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId -BodyParameter $Params
    

Sonraki adımlar