Microsoft Entra Verbinding maken: Faseringsserver en herstel na noodgevallen

Met een server in de faseringsmodus kunt u wijzigingen aanbrengen in de configuratie en een voorbeeld van de wijzigingen bekijken voordat u de server activeert. U kunt hiermee ook een volledige import en volledige synchronisatie uitvoeren om te controleren of alle wijzigingen naar verwachting zijn voordat u deze wijzigingen in uw productieomgeving aanbrengt.

Faseringsmodus

De faseringsmodus kan worden gebruikt voor verschillende scenario's, waaronder:

  • Hoge beschikbaarheid.
  • Nieuwe configuratiewijzigingen testen en implementeren.
  • Een nieuwe server introduceren en de oude buiten gebruik stellen.

Tijdens de installatie kunt u de server selecteren die zich in de faseringsmodus bevindt. Met deze actie wordt de server actief voor importeren en synchroniseren, maar er worden geen exports uitgevoerd. Een server in de faseringsmodus voert geen wachtwoordsynchronisatie of wachtwoord terugschrijven uit, ook niet als u deze functies tijdens de installatie hebt geselecteerd. Als u de faseringsmodus uitschakelt, begint de server met exporteren en worden wachtwoordsynchronisatie en wachtwoord terugschrijven ingeschakeld.

Notitie

Stel dat u een Microsoft Entra-Verbinding maken hebt waarvoor de functie Wachtwoord-hashsynchronisatie is ingeschakeld. Wanneer u de faseringsmodus inschakelt, stopt de server met het synchroniseren van wachtwoordwijzigingen vanuit on-premises AD. Wanneer u de faseringsmodus uitschakelt, hervat de server het synchroniseren van wachtwoordwijzigingen vanaf het punt waar deze de laatste keer is gestopt. Als de server gedurende een langere periode in de faseringsmodus blijft, kan het even duren voordat de server alle wachtwoordwijzigingen heeft gesynchroniseerd die zich tijdens die periode hebben voorgedaan.

U kunt nog steeds een export afdwingen met behulp van Synchronization Service Manager.

Een server in de faseringsmodus blijft wijzigingen ontvangen van Active Directory en Microsoft Entra ID en kan snel de verantwoordelijkheden van een andere server overnemen in het geval van een fout. Als u configuratiewijzigingen aan uw primaire server aanbrengt, is het uw verantwoordelijkheid om dezelfde wijzigingen aan te brengen op de server in de faseringsmodus.

Voor degenen met kennis van oudere synchronisatietechnologieën: de faseringsmodus is afwijkend, omdat de server een eigen SQL-database heeft. Met deze architectuur kan de faseringsmodusserver zich in een ander datacenter bevinden.

Configuratie van een server controleren

Voer de volgende stappen uit om deze methode toe te passen:

  1. Voorbereiden
  2. Configuratie
  3. Importen en synchroniseren
  4. Verifiëren
  5. Actieve server wisselen

Voorbereiden

  1. Installeer Microsoft Entra Verbinding maken, selecteer faseringsmodus en hef de selectie van de synchronisatie op de laatste pagina in de installatiewizard op. In deze modus kunt u de synchronisatie-engine handmatig uitvoeren. Schermopname van de pagina Gereed om te configureren in het dialoogvenster Microsoft Entra Verbinding maken.
  2. Meld u af en meld u opnieuw aan en selecteer in het startmenu de optie Synchronisatieservice.

Configuratie

Als u aangepaste wijzigingen hebt aangebracht aan de primaire server en de configuratie wilt vergelijken met de faseringsserver, gebruikt u Microsoft Entra Verbinding maken configuratiedocumentatiedocumentatie.

Importen en synchroniseren

  1. Selecteer Connectors en selecteer de eerste connector van het type Active Directory Domain Services. Klik op Uitvoeren, selecteer Volledige importbewerking en OK. Voer deze stappen uit voor alle connectors van dit type.
  2. Selecteer de Verbinding maken or met het type Microsoft Entra ID (Microsoft). Klik op Uitvoeren, selecteer Volledige importbewerking en OK.
  3. Zorg ervoor dat het tabblad Connectors nog steeds is geselecteerd. Klik voor elke connector van het type Active Directory Domain Services op Uitvoeren, selecteer Deltasynchronisatie en OK.
  4. Selecteer de Verbinding maken or met het type Microsoft Entra ID (Microsoft). Klik op Uitvoeren, selecteer Deltasynchronisatie en OK.

U hebt nu exportwijzigingen in Microsoft Entra ID en on-premises AD gefaseerd (als u hybride implementatie van Exchange gebruikt). Met de volgende stappen kunt u controleren wat er gaat veranderen voordat u de export naar de mappen daadwerkelijk start.

Verifiëren

  1. Start een cmd-prompt en ga naar %ProgramFiles%\Microsoft Azure AD Sync\bin
  2. Voer het volgende uit: csexport "Name of Connector" %temp%\export.xml /f:x De naam van de connector vindt u in de synchronisatieservice. Het heeft een naam die lijkt op 'contoso.com – Microsoft Entra ID' voor Microsoft Entra ID.
  3. Voer het volgende uit: CSExportAnalyzer %temp%\export.xml > %temp%\export.csv U hebt een bestand in %temp% met de naam export.csv dat in Microsoft Excel kan worden onderzocht. Dit bestand bevat alle wijzigingen die op het punt staan te worden geëxporteerd.
  4. Breng eventuele noodzakelijke wijzigingen aan de gegevens of configuratie aan en voer deze stappen opnieuw uit (importeren, synchroniseren en verifiëren) totdat de wijzigingen die binnenkort worden geëxporteerd, naar wens zijn.

Informatie over het bestand export.csv

Het grootste deel van het bestand spreekt voor zich. Enkele afkortingen voor een goed begrip van de inhoud:

  • OMODT: Object Modification Type (objectwijzigingstype). Geeft aan of de bewerking op objectniveau Toevoegen, Bijwerken of Verwijderen is.
  • AMODT – Attribute Modification Type (kenmerkwijzigingstype). Geeft aan of de bewerking op kenmerkniveau Toevoegen, Bijwerken of Verwijderen is.

Algemene id's ophalen

Het bestand export.csv bevat alle wijzigingen die op het punt staan te worden geëxporteerd. Elke rij komt overeen met een wijziging voor een object in het connectorgebied en het object wordt door het DN-kenmerk geïdentificeerd. Het DN-kenmerk is een unieke id, die aan een object in het connectorgebied is toegewezen. Wanneer u veel rijen/wijzigingen in de export.csv moet analyseren, kan het lastig zijn om te achterhalen voor welke objecten de wijzigingen zijn bedoeld op basis van slechts het DN-kenmerk. Gebruik PowerShell-script csanalyzer.ps1 om het analyseren van de wijzigingen te vereenvoudigen. Met het script worden algemene id's (bijvoorbeeld displayName, userPrincipalName) van de objecten opgehaald. Het script gebruiken:

  1. Kopieer het PowerShell-script vanuit de sectie CSAnalyzer naar een bestand met de naam csanalyzer.ps1.
  2. Open een PowerShell-venster en blader naar de map waarin u het PowerShell-script hebt gemaakt.
  3. Uitvoeren: .\csanalyzer.ps1 -xmltoimport %temp%\export.xml.
  4. U hebt nu een bestand met de naam processedusers1.csv, dat in Microsoft Excel kan worden onderzocht. Het bestand bevat een toewijzing van het DN-kenmerk aan algemene id's (bijvoorbeeld displayName en userPrincipalName). Het bevat momenteel niet de werkelijke kenmerkwijzigingen die op het punt staan te worden geëxporteerd.

Actieve server wisselen

Microsoft Entra Verbinding maken kan worden ingesteld in een actief-passieve hoge beschikbaarheidsinstallatie, waarbij één server actief wijzigingen naar de gesynchroniseerde AD-objecten naar Microsoft Entra-id pusht en de passieve server deze wijzigingen in het geval dat deze moet worden overgenomen.

Notitie

U kunt Microsoft Entra Verbinding maken niet instellen in een actief-actief-installatie. De installatie moet Actief-Passief zijn. Zorg ervoor dat slechts 1 Microsoft Entra-Verbinding maken-server wijzigingen actief synchroniseert.

Zie de faseringsmodus voor meer informatie over het instellen van een Microsoft Entra Verbinding maken Sync-server in de faseringsmodus

Mogelijk moet u om verschillende redenen een failover van de synchronisatieservers uitvoeren, zoals het upgraden van de versie van Microsoft Entra Verbinding maken of het ontvangen van een waarschuwing dat de statusservice van de Synchronisatieservice geen up-to-date informatie ontvangt. In deze gevallen kunt u een failover van de synchronisatieservers uitvoeren door de onderstaande stappen uit te voeren.

Belangrijk

Het overschakelen van een faseringsserver naar de actieve modus kan ernstige gevolgen hebben in de synchronisatie als niet aan de volgende voorwaarden wordt voldaan. Als voorzorgsmaatregel voert u altijd een eerste synchronisatiecyclus uit en controleert u de in behandeling zijnde exports voordat u deze bewerking uitvoert.

Vereisten

  • Eén actieve Microsoft Entra Verbinding maken Sync Server
  • Eén staging Microsoft Entra Verbinding maken Sync Server
  • De faseringsserver heeft synchronisatieplanner ingeschakeld en is onlangs gesynchroniseerd met Microsoft Entra-id
  • In het geval van updates in synchronisatieregels of synchronisatiebereik voert u een initiële synchronisatiecyclus uit
  • Controleer of uw Microsoft Entra-Verbinding maken-synchronisatieserver is geconfigureerd om onbedoelde verwijderingen te voorkomen
  • Controleer of de export in behandeling is en controleer of er geen significante updates zijn en of dergelijke updates worden verwacht
  • Controleer of microsoft Entra Verbinding maken Health-agent is bijgewerkt door de server te controleren in de Microsoft Entra Verbinding maken Health-portal
  • Schakel de huidige actieve server over naar de faseringsmodus voordat u de faseringsserver overschakelt naar actief

De momenteel actieve synchronisatieserver in de faseringsmodus overbrengen

Zorg ervoor dat tijdens dit proces altijd slechts één synchronisatieserver wijzigingen synchroniseert. Als de momenteel actieve synchronisatieserver bereikbaar is, kunt u de onderstaande stappen uitvoeren om deze naar de faseringsmodus te verplaatsen. Als deze niet bereikbaar is, moet u ervoor zorgen dat de server of VM niet onverwacht weer toegang krijgt door de server af te sluiten of te isoleren van uitgaande verbindingen.

  1. Voor de momenteel actieve Microsoft Entra Verbinding maken-server opent u de wizard Microsoft Entra Verbinding maken en klikt u op Faseringsmodus configureren en vervolgens op Volgende:

    Schermopname van faseringsmodus gemarkeerd in het dialoogvenster Actieve Microsoft Entra Verbinding maken.

  2. U moet zich aanmelden bij Microsoft Entra ID met de referenties van Global Beheer istrator of Hybrid Identity Beheer:

    Schermopname van de aanmeldingsprompt in het dialoogvenster Active Microsoft Entra Verbinding maken.

  3. Schakel het selectievakje bij de faseringsmodus in en klik op Volgende:

    Schermopname van de configuratie van de faseringsmodus in het dialoogvenster Active Microsoft Entra Verbinding maken.

  4. De Microsoft Entra Verbinding maken-server controleert op geïnstalleerde onderdelen en vraagt u vervolgens of u het synchronisatieproces wilt starten wanneer de configuratiewijziging is voltooid:

    Schermopname van het scherm Gereed om te configureren in het dialoogvenster Actieve Microsoft Entra Verbinding maken.

Omdat de server zich in de faseringsmodus bevindt, worden er geen wijzigingen naar Microsoft Entra-id geschreven, maar blijven wijzigingen in de AD behouden in de Verbinding maken or Space, klaar om ze te schrijven.
Het is raadzaam om het synchronisatieproces voor de server in de faseringsmodus ingeschakeld te laten, dus als het actief wordt, wordt het snel overgenomen en hoeft u geen grote synchronisatie uit te voeren om de huidige status van de Active Directory-/Microsoft Entra-objecten binnen het bereik in te halen.

  1. Nadat u hebt geselecteerd om het synchronisatieproces te starten en op Configureren te klikken, wordt de Microsoft Entra-Verbinding maken-server geconfigureerd in de faseringsmodus.
    Wanneer dit is voltooid, verschijnt er een scherm waarin wordt bevestigd dat de faseringsmodus is ingeschakeld.
    U kunt op Afsluiten klikken om te voltooien.

  2. U kunt controleren of de server zich in de faseringsmodus bevindt door Windows PowerShell te openen, de module ADSync te laden en de configuratie van ADSync Scheduler te controleren met behulp van de volgende opdrachten:

Import-Module ADSync
Get-ADSyncScheduler

Controleer in de resultaten de waarde van de instelling StagingModeEnabled. Als de server is overgeschakeld naar de faseringsmodus, moet de waarde van deze instelling waar zijn, zoals in het onderstaande voorbeeld:

Schermopname van de Sync Service-console in het dialoogvenster Active Microsoft Entra Verbinding maken.

Faseringssynchronisatieserver overbrengen naar actieve modus

Op dit moment moeten al onze Microsoft Entra-Verbinding maken-synchronisatieservers zich in de faseringsmodus bevinden en geen wijzigingen exporteren. De faseringssynchronisatieserver kan naar de actieve modus worden overgebracht en er kunnen actief wijzigingen worden gesynchroniseerd.

  1. Ga nu naar de Microsoft Entra Verbinding maken-server die zich oorspronkelijk in de faseringsmodus bevond en open de wizard Microsoft Entra Verbinding maken.

    Klik op Faseringsmodus configureren en klik op Volgende:

    Schermopname van faseringsmodus gemarkeerd in het dialoogvenster Fasering Microsoft Entra Verbinding maken.

    Het bericht onderaan de wizard geeft aan dat deze server zich in de faseringsmodus bevindt.

  2. Meld u aan bij Microsoft Entra ID en ga vervolgens naar het scherm Faseringsmodus.

    Schakel het selectievakje bij de faseringsmodus uit en klik op Volgende

    Schermopname van de configuratie van de faseringsmodus in het dialoogvenster Staging Microsoft Entra Verbinding maken.

    Op basis van de waarschuwing op deze pagina is het belangrijk om ervoor te zorgen dat er geen andere Microsoft Entra-Verbinding maken-server actief wordt gesynchroniseerd.

    Er mag maar één actieve Microsoft Entra Verbinding maken Sync-server zijn.

  3. Wanneer u wordt gevraagd het synchronisatieproces te starten, vinkt u dit vakje aan en klikt u op Configureren:

    Schermopname van het scherm Gereed om te configureren in het dialoogvenster Fasering microsoft Entra Verbinding maken.

  4. Zodra het proces is voltooid, verschijnt het onderstaande bevestigingsscherm waarin u op Afsluiten kunt klikken:

    Schermopname van het bevestigingsscherm in het dialoogvenster Staging Microsoft Entra Verbinding maken.

  5. U kunt controleren of dit werkt door de Synchronisatieserviceconsole te openen en te controleren of exporttaken worden uitgevoerd:

    Schermopname van de Sync Service-console in het dialoogvenster Staging Microsoft Entra Verbinding maken.

Herstel na noodgeval

Een onderdeel van het implementatieontwerp is het plannen van wat u moet doen in het geval er een noodgeval is waarbij de synchronisatieserver verloren gaat. Er zijn verschillende modellen die u kunt gebruiken. Welke u wilt gebruiken, is afhankelijk van verschillende factoren, waaronder:

  • Wat is uw tolerantie voor het niet kunnen aanbrengen van wijzigingen in objecten in Microsoft Entra ID tijdens de downtime?
  • Als u wachtwoordsynchronisatie gebruikt, accepteren de gebruikers dan dat ze het oude wachtwoord in Microsoft Entra ID moeten gebruiken voor het geval ze het on-premises wijzigen?
  • Bent u afhankelijk van realtime bewerkingen, zoals wachtwoord terugschrijven?

Afhankelijk van de antwoorden op deze vragen en het beleid van de organisatie, kan een van de volgende strategieën worden geïmplementeerd:

  • Herbouwen wanneer dat nodig is.
  • Zorgen voor een extra stand-byserver, ook wel faseringsmodus genoemd.
  • Virtuele machines gebruiken.

Als u de ingebouwde SQL Express-database niet gebruikt, moet u ook de sectie Hoge beschikbaarheid van SQL bekijken.

Herbouwen wanneer dat nodig is

Het is een nuttige strategie om een server opnieuw op te bouwen, indien nodig. Normaal gesproken kan het installeren van de synchronisatie-engine en het initiële importeren en synchroniseren binnen een paar uur worden voltooid. Als er geen extra server beschikbaar is, is het mogelijk om tijdelijk een domeincontroller te gebruiken om de synchronisatie-engine te hosten.

De synchronisatie-engineserver slaat geen status op over de objecten, zodat de database opnieuw kan worden opgebouwd op basis van de gegevens in Active Directory en Microsoft Entra-id. Het kenmerk sourceAnchor wordt gebruikt om de on-premises objecten en die uit de cloud samen te voegen. Als u de server herbouwt met bestaande on-premises objecten en cloudobjecten, worden die objecten bij het opnieuw installeren door de synchronisatie-engine opnieuw met elkaar in overeenstemming gebracht. Documenteer de configuratiewijzigingen aan de server en sla deze op, bijvoorbeeld de filter- en synchronisatieregels. Deze aangepaste configuraties moeten opnieuw worden toegepast voordat u begint met synchroniseren.

Zorgen voor een extra stand-byserver - faseringsmodus

Als u een complexere omgeving hebt, wordt aangeraden om een of meer stand-byservers te hebben. Tijdens de installatie kunt u ervoor zorgen dat een server in de faseringsmodus moet worden gebracht.

Zie Faseringsmodus voor meer informatie.

Virtuele machines gebruiken

Een veelgebruikte en ondersteunde methode is het uitvoeren van de synchronisatie-engine op een virtuele machine. Als de host een probleem heeft, kan de installatiekopie met de synchronisatie-engineserver naar een andere server worden gemigreerd.

Hoge beschikbaarheid van SQL

Als u niet de SQL Server Express gebruikt die wordt geleverd bij Microsoft Entra Verbinding maken, moet hoge beschikbaarheid voor SQL Server ook worden overwogen. De ondersteunde oplossingen voor hoge beschikbaarheid zijn onder meer het clusteren van SQL en AOA (Always On-beschikbaarheidsgroepen). Niet ondersteund wordt bijvoorbeeld spiegeling.

Ondersteuning voor SQL AOA is toegevoegd aan Microsoft Entra Verbinding maken in versie 1.1.524.0. U moet SQL AOA inschakelen voordat u Microsoft Entra Verbinding maken installeert. Tijdens de installatie detecteert Microsoft Entra Verbinding maken of het opgegeven SQL-exemplaar is ingeschakeld voor SQL AOA of niet. Als SQL AOA is ingeschakeld, Verbinding maken Microsoft Entra verder uitzoeken of SQL AOA is geconfigureerd voor het gebruik van synchrone replicatie of asynchrone replicatie. Bij het instellen van de listener voor beschikbaarheidsgroepen moet de eigenschap RegisterAllProvidersIP worden ingesteld op 0. Dit komt doordat Microsoft Entra Verbinding maken momenteel gebruikmaakt van SQL Native Client om verbinding te maken met SQL en SQL Native Client, biedt geen ondersteuning voor het gebruik van de eigenschap MultiSubNetFailover.

Bijlage: CSAnalyzer

Zie de sectie controleren over hoe u dit script gebruikt.

Param(
    [Parameter(Mandatory=$true, HelpMessage="Must be a file generated using csexport 'Name of Connector' export.xml /f:x)")]
    [string]$xmltoimport="%temp%\exportedStage1a.xml",
    [Parameter(Mandatory=$false, HelpMessage="Maximum number of users per output file")][int]$batchsize=1000,
    [Parameter(Mandatory=$false, HelpMessage="Show console output")][bool]$showOutput=$false
)

#LINQ isn't loaded automatically, so force it
[Reflection.Assembly]::Load("System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") | Out-Null

[int]$count=1
[int]$outputfilecount=1
[array]$objOutputUsers=@()

#XML must be generated using "csexport "Name of Connector" export.xml /f:x"
write-host "Importing XML" -ForegroundColor Yellow

#XmlReader.Create won't properly resolve the file location,
#so expand and then resolve it
$resolvedXMLtoimport=Resolve-Path -Path ([Environment]::ExpandEnvironmentVariables($xmltoimport))

#use an XmlReader to deal with even large files
$result=$reader = [System.Xml.XmlReader]::Create($resolvedXMLtoimport) 
$result=$reader.ReadToDescendant('cs-object')
if($result)
{
    do 
    {
        #create the object placeholder
        #adding them up here means we can enforce consistency
        $objOutputUser=New-Object psobject
        Add-Member -InputObject $objOutputUser -MemberType NoteProperty -Name ID -Value ""
        Add-Member -InputObject $objOutputUser -MemberType NoteProperty -Name Type -Value ""
        Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name DN -Value ""
        Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name operation -Value ""
        Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name UPN -Value ""
        Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name displayName -Value ""
        Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name sourceAnchor -Value ""
        Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name alias -Value ""
        Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name primarySMTP -Value ""
        Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name onPremisesSamAccountName -Value ""
        Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name mail -Value ""

        $user = [System.Xml.Linq.XElement]::ReadFrom($reader)
        if ($showOutput) {Write-Host Found an exported object... -ForegroundColor Green}

        #object id
        $outID=$user.Attribute('id').Value
        if ($showOutput) {Write-Host ID: $outID}
        $objOutputUser.ID=$outID

        #object type
        $outType=$user.Attribute('object-type').Value
        if ($showOutput) {Write-Host Type: $outType}
        $objOutputUser.Type=$outType

        #dn
        $outDN= $user.Element('unapplied-export').Element('delta').Attribute('dn').Value
        if ($showOutput) {Write-Host DN: $outDN}
        $objOutputUser.DN=$outDN

        #operation
        $outOperation= $user.Element('unapplied-export').Element('delta').Attribute('operation').Value
        if ($showOutput) {Write-Host Operation: $outOperation}
        $objOutputUser.operation=$outOperation

        #now that we have the basics, go get the details

        foreach ($attr in $user.Element('unapplied-export-hologram').Element('entry').Elements("attr"))
        {
            $attrvalue=$attr.Attribute('name').Value
            $internalvalue= $attr.Element('value').Value

            switch ($attrvalue)
            {
                "userPrincipalName"
                {
                    if ($showOutput) {Write-Host UPN: $internalvalue}
                    $objOutputUser.UPN=$internalvalue
                }
                "displayName"
                {
                    if ($showOutput) {Write-Host displayName: $internalvalue}
                    $objOutputUser.displayName=$internalvalue
                }
                "sourceAnchor"
                {
                    if ($showOutput) {Write-Host sourceAnchor: $internalvalue}
                    $objOutputUser.sourceAnchor=$internalvalue
                }
                "alias"
                {
                    if ($showOutput) {Write-Host alias: $internalvalue}
                    $objOutputUser.alias=$internalvalue
                }
                "proxyAddresses"
                {
                    if ($showOutput) {Write-Host primarySMTP: ($internalvalue -replace "SMTP:","")}
                    $objOutputUser.primarySMTP=$internalvalue -replace "SMTP:",""
                }
            }
        }

        $objOutputUsers += $objOutputUser

        Write-Progress -activity "Processing ${xmltoimport} in batches of ${batchsize}" -status "Batch ${outputfilecount}: " -percentComplete (($objOutputUsers.Count / $batchsize) * 100)

        #every so often, dump the processed users in case we blow up somewhere
        if ($count % $batchsize -eq 0)
        {
            Write-Host Hit the maximum users processed without completion... -ForegroundColor Yellow

            #export the collection of users as a CSV
            Write-Host Writing processedusers${outputfilecount}.csv -ForegroundColor Yellow
            $objOutputUsers | Export-Csv -path processedusers${outputfilecount}.csv -NoTypeInformation

            #increment the output file counter
            $outputfilecount+=1

            #reset the collection and the user counter
            $objOutputUsers = $null
            $count=0
        }

        $count+=1

        #need to bail out of the loop if no more users to process
        if ($reader.NodeType -eq [System.Xml.XmlNodeType]::EndElement)
        {
            break
        }

    } while ($reader.Read)

    #need to write out any users that didn't get picked up in a batch of 1000
    #export the collection of users as CSV
    Write-Host Writing processedusers${outputfilecount}.csv -ForegroundColor Yellow
    $objOutputUsers | Export-Csv -path processedusers${outputfilecount}.csv -NoTypeInformation
}
else
{
    Write-Host "Imported XML file is empty. No work to do." -ForegroundColor Red
}

Volgende stappen

Overzichtsonderwerpen