Aracılığıyla paylaş


Connect 1.4.xx.x ve cihazın kaybolması Microsoft Entra anlama

müşteriler, Microsoft Entra Connect'in 1.4.xx.x sürümünün uygulanmasıyla windows cihazlarının bir kısmının veya tümünün Microsoft Entra ID'dan kaybolduğunu görebilir. Bu cihaz kimlikleri Koşullu Erişim yetkilendirmesi sırasında Microsoft Entra ID tarafından kullanılmadığından bu bir sorun oluşturmaz. Bu değişiklik, Microsoft Entra karma birleştirme için Microsoft Entra ID ile doğru kaydedilmiş windows cihazlarını silmez.

Microsoft Entra ID'da Silme Eşiğini aşan cihaz nesnelerinin silinmesini görürseniz, silmelerin geçmesine izin verin. Nasıl yapılır: Silme eşiğini aştıklarında silmelerin akmasına izin verme

Arka plan

Karma birleştirilmiş Microsoft Entra olarak kaydedilen Windows cihazları, Microsoft Entra ID cihaz nesneleri olarak temsil edilir ve Koşullu Erişim için kullanılabilir. Windows 10 cihazlar Microsoft Entra Connect aracılığıyla buluta eşitlenirken, alt düzey Windows cihazları doğrudan Active Directory Federasyon Hizmetleri (AD FS) (AD FS) veya sorunsuz çoklu oturum açma kullanılarak kaydedilir.

cihazları Windows 10

Yalnızca Microsoft Entra karma birleştirme tarafından yapılandırılan belirli bir userCertificate öznitelik değerine sahip Windows 10 cihazlar Microsoft Entra Connect tarafından buluta eşitlenmelidir. Microsoft Entra Connect'in önceki sürümlerinde bu gereksinim sıkı bir şekilde uygulanmadı ve Microsoft Entra ID gereksiz cihaz nesneleri eklendi. bu cihazların Microsoft Entra ID kaydedilmesi amaçlanmadığından, Microsoft Entra ID bu tür cihazlar her zaman "beklemede" durumda kalır.

Microsoft Entra Connect'in bu sürümü yalnızca karmaya katılmış Microsoft Entra doğru yapılandırılmış Windows 10 cihazları eşitler. belirli bir userCertificate'e Microsoft Entra katılmadan Windows 10 cihaz nesneleri Microsoft Entra ID kaldırılır.

Windows cihazlarını Down-Level

Microsoft Entra Connect hiçbir zaman alt düzey Windows cihazlarını eşitlememelidir. Microsoft Entra ID daha önce yanlış eşitlenen tüm cihazlar Microsoft Entra ID silinir. Microsoft Entra Connect alt düzey Windows cihazlarını silmeye çalışırsa, cihaz Windows 10 olmayan bilgisayarlar MSI için Microsoft Workplace Join tarafından oluşturulan cihaz değildir ve başka bir Microsoft Entra özelliği tarafından kullanılamaz.

Bazı müşterilerin Nasıl Yapılır: Windows cihazlarını doğru kaydetmek ve bu cihazların cihaz tabanlı Koşullu Erişim'e katılabileceğinden emin olmak için Microsoft Entra karma katılım uygulamanızı planlamak için yeniden ziyaret etmeleri gerekebilir.

Bu güncelleştirmeyle hangi cihazların silindiğini nasıl doğrulayabilirim?

Hangi cihazların silindiğini doğrulamak için PowerShell sertifika raporu betiğindeki PowerShell betiğini kullanın.

Bu betik, Active Directory Bilgisayarı nesnelerinde depolanan sertifikalar ve özel olarak karma birleştirme özelliği tarafından verilen sertifikalar hakkında Microsoft Entra bir rapor oluşturur.

Betik, AD'deki bir Bilgisayar nesnesinin UserCertificate özelliğinde bulunan sertifikaları da denetler. Mevcut süresi dolmamış her sertifika için betik, sertifikanın Microsoft Entra karma birleştirme özelliği için verilip verilmediğini doğrular; örneğin, Subject Name matches CN={ObjectGUID}.

Bu güncelleştirmeden önce, Microsoft Entra Connect en az bir geçerli sertifika içeren herhangi bir Bilgisayar Microsoft Entra eşitlenir. Microsoft Entra Connect sürüm 1.4'ten başlayarak, eşitleme altyapısı karma birleştirme sertifikalarını Microsoft Entra tanımlar ve geçerli bir Microsoft Entra olmadığı sürece bilgisayar nesnesinin Microsoft Entra ID eşitlenmesini önlemek için cloudfilter filtresini kullanır Microsoft Entra karma birleştirme sertifikası.

Daha önce AD ile eşitlenmiş ancak geçerli bir Microsoft Entra karma birleştirme sertifikası olmayan Microsoft Entra cihazlar, eşitleme altyapısı tarafından filtre CloudFiltered=TRUEkullanılarak silinir.

PowerShell sertifika raporu betiği

<#

Filename:    Export-ADSyncToolsHybridAzureADjoinCertificateReport.ps1.

DISCLAIMER:
Copyright (c) Microsoft Corporation. All rights reserved. This script is made available to you without any express, implied or statutory warranty, not even the implied warranty of  merchantability or fitness for a particular purpose, or the warranty of title or non-infringement. The entire risk of the use or the results from the use of this script remains with you.
.Synopsis
This script generates a report about certificates stored in Active Directory Computer objects, specifically, 
certificates issued by the Microsoft Entra hybrid join feature.
.DESCRIPTION
It checks the certificates present in the UserCertificate property of a Computer object in AD and, for each 
non-expired certificate present, validates if the certificate was issued for the Microsoft Entra hybrid join feature 
(i.e. Subject Name matches CN={ObjectGUID}).
Before, Microsoft Entra Connect would synchronize to Microsoft Entra ID any Computer that contained at least one valid 
certificate but starting on Microsoft Entra Connect version 1.4, the sync engine can identify Hybrid 
Microsoft Entra join certificates and will 'cloudfilter' the computer object from synchronizing to Microsoft Entra ID unless 
there's a valid Microsoft Entra hybrid join certificate.
Microsoft Entra Device objects that were already synchronized to AD but do not have a valid Microsoft Entra hybrid join 
certificate will be deleted (CloudFiltered=TRUE) by the sync engine.
.EXAMPLE
.\Export-ADSyncToolsHybridAzureADjoinCertificateReport.ps1 -DN 'CN=Computer1,OU=SYNC,DC=Fabrikam,DC=com'
.EXAMPLE
.\Export-ADSyncToolsHybridAzureADjoinCertificateReport.ps1 -OU 'OU=SYNC,DC=Fabrikam,DC=com' -Filename "MyHybridAzureADjoinReport.csv" -Verbose

#>
   [CmdletBinding()]
   Param
   (
       # Computer DistinguishedName
       [Parameter(ParameterSetName='SingleObject',
               Mandatory=$true,
               ValueFromPipelineByPropertyName=$true,
               Position=0)]
       [String]
       $DN,

       # AD OrganizationalUnit
       [Parameter(ParameterSetName='MultipleObjects',
               Mandatory=$true,
               ValueFromPipelineByPropertyName=$true,
               Position=0)]
       [String]
       $OU,

       # Output CSV filename (optional)
       [Parameter(Mandatory=$false,
               ValueFromPipelineByPropertyName=$false,
               Position=1)]
       [String]
       $Filename

   )

   # Generate Output filename if not provided
   If ($Filename -eq "")
   {
       $Filename = [string] "$([string] $(Get-Date -Format yyyyMMddHHmmss))_ADSyncAADHybridJoinCertificateReport.csv"
   }
   Write-Verbose "Output filename: '$Filename'"
   
   # Read AD object(s)
   If ($PSCmdlet.ParameterSetName -eq 'SingleObject')
   {
       $directoryObjs = @(Get-ADObject $DN -Properties UserCertificate)
       Write-Verbose "Starting report for a single object '$DN'"
   }
   Else
   {
       $directoryObjs = Get-ADObject -Filter { ObjectClass -like 'computer' } -SearchBase $OU -Properties UserCertificate
       Write-Verbose "Starting report for $($directoryObjs.Count) computer objects in OU '$OU'"
   }

   Write-Host "Processing $($directoryObjs.Count) directory object(s). Please wait..."
   # Check Certificates on each AD Object
   $results = @()
   ForEach ($obj in $directoryObjs)
   {
       # Read UserCertificate multi-value property
       $objDN = [string] $obj.DistinguishedName
       $objectGuid = [string] ($obj.ObjectGUID).Guid
       $userCertificateList = @($obj.UserCertificate)
       $validEntries = @()
       $totalEntriesCount = $userCertificateList.Count
       Write-verbose "'$objDN' ObjectGUID: $objectGuid"
       Write-verbose "'$objDN' has $totalEntriesCount entries in UserCertificate property."
       If ($totalEntriesCount -eq 0)
       {
           Write-verbose "'$objDN' has no Certificates - Skipped."
           Continue
       }

       # Check each UserCertificate entry and build array of valid certs
       ForEach($entry in $userCertificateList)
       {
           Try
           {
               $cert = [System.Security.Cryptography.X509Certificates.X509Certificate2] $entry
           }
           Catch
           {
               Write-verbose "'$objDN' has an invalid Certificate!"
               Continue
           }
           Write-verbose "'$objDN' has a Certificate with Subject: $($cert.Subject); Thumbprint:$($cert.Thumbprint)."
           $validEntries += $cert

       }
       
       $validEntriesCount = $validEntries.Count
       Write-verbose "'$objDN' has a total of $validEntriesCount certificates (shown above)."
       
       # Get non-expired Certs (Valid Certificates)
       $validCerts = @($validEntries | Where-Object {$_.NotAfter -ge (Get-Date)})
       $validCertsCount = $validCerts.Count
       Write-verbose "'$objDN' has $validCertsCount valid certificates (not-expired)."

       # Check for Microsoft Entra hybrid join Certificates
       $hybridJoinCerts = @()
       $hybridJoinCertsThumbprints = [string] "|"
       ForEach ($cert in $validCerts)
       {
           $certSubjectName = $cert.Subject
           If ($certSubjectName.StartsWith($("CN=$objectGuid")) -or $certSubjectName.StartsWith($("CN={$objectGuid}")))
           {
               $hybridJoinCerts += $cert
               $hybridJoinCertsThumbprints += [string] $($cert.Thumbprint) + '|'
           }
       }

       $hybridJoinCertsCount = $hybridJoinCerts.Count
       if ($hybridJoinCertsCount -gt 0)
       {
           $cloudFiltered = 'FALSE'
           Write-verbose "'$objDN' has $hybridJoinCertsCount Microsoft Entra hybrid join Certificates with Thumbprints: $hybridJoinCertsThumbprints (cloudFiltered=FALSE)"
       }
       Else
       {
           $cloudFiltered = 'TRUE'
           Write-verbose "'$objDN' has no Microsoft Entra hybrid join Certificates (cloudFiltered=TRUE)."
       }
       
       # Save results
       $r = "" | Select ObjectDN, ObjectGUID, TotalEntriesCount, CertsCount, ValidCertsCount, HybridJoinCertsCount, CloudFiltered
       $r.ObjectDN = $objDN
       $r.ObjectGUID = $objectGuid
       $r.TotalEntriesCount = $totalEntriesCount
       $r.CertsCount = $validEntriesCount
       $r.ValidCertsCount = $validCertsCount
       $r.HybridJoinCertsCount = $hybridJoinCertsCount
       $r.CloudFiltered = $cloudFiltered
       $results += $r
   }

   # Export results to CSV
   Try
   {        
       $results | Export-Csv $Filename -NoTypeInformation -Delimiter ';'
       Write-Host "Exported Hybrid Microsoft Entra Domain Join Certificate Report to '$Filename'.`n"
   }
   Catch
   {
       Throw "There was an error saving the file '$Filename': $($_.Exception.Message)"
   }

Sonraki Adımlar

Yardım için bize ulaşın

Sorularınız veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteği isteyin. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.