Meer informatie over Microsoft Entra Connect 1.4.xx.x en de verdwijning van apparaten
Met de implementatie van versie 1.4.xx.x van Microsoft Entra Connect zien klanten mogelijk dat sommige of alle Windows-apparaten van Microsoft Entra ID verdwijnen. Dit is geen probleem, omdat deze apparaat-id's niet worden gebruikt door Microsoft Entra ID tijdens autorisatie voor voorwaardelijke toegang . Met deze wijziging worden geen Windows-apparaten verwijderd die correct zijn geregistreerd bij Microsoft Entra ID voor hybride deelname aan Microsoft Entra.
Als u het verwijderen van apparaatobjecten in Microsoft Entra-id ziet die de drempelwaarde voor exportverwijdering overschrijdt, kunt u de verwijderingen toestaan. Procedure: verwijderingen toestaan om te stromen wanneer ze de drempelwaarde voor verwijdering overschrijden
Achtergrond
Windows-apparaten die zijn geregistreerd als hybride Microsoft Entra-koppeling, worden weergegeven in Microsoft Entra ID als apparaatobjecten en kunnen worden gebruikt voor voorwaardelijke toegang. Windows 10-apparaten worden gesynchroniseerd met de cloud via Microsoft Entra Connect, terwijl Windows-apparaten op downniveau rechtstreeks worden geregistreerd met Active Directory Federation Services (AD FS) of naadloze eenmalige aanmelding.
Windows 10-apparaten
Alleen Windows 10-apparaten met een specifieke userCertificate-kenmerkwaarde die is geconfigureerd door Microsoft Entra hybrid join, moeten worden gesynchroniseerd met de cloud door Microsoft Entra Connect. In eerdere versies van Microsoft Entra Connect werd deze vereiste niet strikt afgedwongen en werden onnodige apparaatobjecten toegevoegd aan Microsoft Entra ID. Dergelijke apparaten in Microsoft Entra ID bleven altijd in de status In behandeling, omdat deze apparaten niet bedoeld waren om te worden geregistreerd bij Microsoft Entra-id.
Met deze versie van Microsoft Entra Connect worden alleen Windows 10-apparaten gesynchroniseerd die correct zijn geconfigureerd om lid te zijn van Microsoft Entra hybrid. Windows 10-apparaatobjecten zonder microsoft Entra join specific userCertificate worden verwijderd uit Microsoft Entra ID.
Windows-apparaten met een lager niveau
Microsoft Entra Connect mag Windows-apparaten op downlevel nooit synchroniseren. Alle apparaten in Microsoft Entra-id die eerder onjuist zijn gesynchroniseerd, worden verwijderd uit Microsoft Entra-id. Als Microsoft Entra Connect Windows-apparaten op lager niveau probeert te verwijderen, is het apparaat niet degene die is gemaakt door de Microsoft Workplace Join voor niet-Windows 10-computers MSI en kan het niet worden gebruikt door een andere Microsoft Entra-functie.
Sommige klanten moeten misschien teruggaan naar procedures: plan de hybride deelname-implementatie van Microsoft Entra om hun Windows-apparaten correct te registreren en ervoor te zorgen dat deze apparaten kunnen deelnemen aan voorwaardelijke toegang op basis van apparaten.
Hoe kan ik controleren welke apparaten met deze update worden verwijderd?
Als u wilt controleren welke apparaten zijn verwijderd, gebruikt u het PowerShell-script in het PowerShell-certificaatrapportscript.
Met dit script wordt een rapport gegenereerd over certificaten die zijn opgeslagen in Active Directory-computerobjecten en met name certificaten die zijn uitgegeven door de hybride joinfunctie van Microsoft Entra.
Het script controleert ook de certificaten die aanwezig zijn in de eigenschap UserCertificate van een computerobject in AD. Voor elk niet-verlopen certificaat dat aanwezig is, valideert het script of het certificaat is uitgegeven voor de hybride deelnamefunctie van Microsoft Entra; bijvoorbeeld Subject Name matches CN={ObjectGUID}
.
Vóór deze update synchroniseert Microsoft Entra Connect met Microsoft Entra elke computer met ten minste één geldig certificaat. Vanaf Microsoft Entra Connect versie 1.4 identificeert de synchronisatie-engine hybride joincertificaten van Microsoft Entra en wordt het cloudfilterfilter gebruikt om te voorkomen dat het computerobject wordt gesynchroniseerd met Microsoft Entra-id, tenzij er een geldig Hybride Join-certificaat van Microsoft Entra is.
Microsoft Entra-apparaten die eerder zijn gesynchroniseerd met AD, maar geen geldig hybride Microsoft Entra-joincertificaat hebben, worden verwijderd door de synchronisatie-engine met behulp van het filter CloudFiltered=TRUE
.
PowerShell-certificaatrapportscript
<#
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)"
}
Volgende stappen
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.