Microsoft Entra Połączenie: przejściowy serwer i odzyskiwanie po awarii

W przypadku serwera w trybie przejściowym można wprowadzać zmiany w konfiguracji i wyświetlać ich podgląd przed uaktywnieniem serwera. Możliwe jest również uruchamianie pełnego importu i pełnej synchronizacji, aby przed wprowadzeniem zmian do środowiska produkcyjnego sprawdzić, czy wszystkie one są zgodne z oczekiwaniami.

Tryb przejściowy

Tryb przejściowy może być używany w kilku scenariuszach, takich jak:

  • Wysoka dostępność.
  • Testowanie i wdrażanie nowych zmian konfiguracji.
  • Wprowadzanie nowego serwera i likwidowanie starego.

Podczas instalacji można wybrać serwer, który ma być w trybie przejściowym. Ta akcja powoduje, że serwer jest aktywny do importowania i synchronizacji, ale nie uruchamia żadnych eksportów. Serwer w trybie przejściowym nie uruchamia synchronizacji haseł ani zapisywania zwrotnego haseł, nawet jeśli te funkcje zostały wybrane podczas instalacji. Po wyłączeniu trybu przejściowego serwer rozpoczyna eksportowanie, włącza synchronizację haseł i włącza zapisywanie zwrotne haseł.

Uwaga

Załóżmy, że masz Połączenie firmy Microsoft z włączoną funkcją synchronizacji skrótów haseł. Po włączeniu trybu przejściowego serwer zatrzymuje synchronizowanie zmian haseł z lokalnej usługi AD. Po wyłączeniu trybu przejściowego serwer wznawia synchronizowanie zmian haseł z miejsca, w którym ostatnio zostało przerwane. Jeśli serwer pozostanie w trybie przejściowym przez dłuższy czas, może upłynąć pewien czas, aby serwer synchronizował wszystkie zmiany haseł, które wystąpiły w danym okresie.

Nadal można wymusić eksport przy użyciu menedżera usługi synchronizacji.

Serwer w trybie przejściowym nadal otrzymuje zmiany z usług Active Directory i Microsoft Entra ID i może szybko przejąć obowiązki innego serwera w przypadku awarii. Jeśli wprowadzisz zmiany konfiguracji na serwerze podstawowym, twoim obowiązkiem jest wprowadzenie tych samych zmian na serwerze w trybie przejściowym.

W przypadku osób znających starsze technologie synchronizacji tryb przejściowy różni się od tego, że serwer ma własną bazę danych SQL. Ta architektura umożliwia serwer trybu przejściowego znajdujący się w innym centrum danych.

Weryfikowanie konfiguracji serwera

Aby zastosować tę metodę, wykonaj następujące kroki:

  1. Przygotowywanie
  2. Konfiguracja
  3. Importowanie i synchronizowanie
  4. Weryfikacja
  5. Przełączanie aktywnego serwera

Przygotowywanie

  1. Zainstaluj Połączenie firmy Microsoft, wybierz tryb przejściowy i usuń zaznaczenie opcji Rozpocznij synchronizację na ostatniej stronie kreatora instalacji. Ten tryb umożliwia ręczne uruchamianie aparatu synchronizacji. Zrzut ekranu przedstawiający stronę Gotowe do skonfigurowania w oknie dialogowym Microsoft Entra Połączenie.
  2. Wyloguj się/zaloguj, a następnie z menu Start wybierz pozycję Usługa synchronizacji.

Konfigurowanie

Jeśli wprowadzono niestandardowe zmiany na serwerze podstawowym i chcesz porównać konfigurację z serwerem przejściowym, użyj programu Microsoft Entra Połączenie configuration documenter.

Importowanie i synchronizowanie

  1. Wybierz Połączenie or i wybierz pierwszy Połączenie or z typem domena usługi Active Directory Services. Kliknij przycisk Uruchom, wybierz pozycję Pełny import i OK. Wykonaj te kroki dla wszystkich Połączenie orów tego typu.
  2. Wybierz Połączenie or z typem Microsoft Entra ID (Microsoft). Kliknij przycisk Uruchom, wybierz pozycję Pełny import i OK.
  3. Upewnij się, że karta Połączenie or jest nadal zaznaczona. Dla każdego Połączenie or z typem domena usługi Active Directory Services kliknij przycisk Uruchom, wybierz pozycję Synchronizacja różnicowa i OK.
  4. Wybierz Połączenie or z typem Microsoft Entra ID (Microsoft). Kliknij przycisk Uruchom, wybierz pozycję Synchronizacja różnicowa i OK.

Masz teraz przygotowane zmiany eksportu w usłudze Microsoft Entra ID i lokalnej usłudze AD (jeśli używasz wdrożenia hybrydowego programu Exchange). Następne kroki umożliwiają sprawdzenie, co ma się zmienić przed rozpoczęciem eksportowania do katalogów.

Weryfikacja

  1. Uruchom wiersz polecenia i przejdź do %ProgramFiles%\Microsoft Azure AD Sync\bin
  2. Run: csexport "Name of Connector" %temp%\export.xml /f:x nazwa Połączenie or można znaleźć w usłudze synchronizacji. Ma ona nazwę podobną do "contoso.com — Microsoft Entra ID" dla identyfikatora Entra firmy Microsoft.
  3. Uruchom: CSExportAnalyzer %temp%\export.xml > %temp%\export.csv masz plik w %temp% o nazwie export.csv, który można zbadać w programie Microsoft Excel. Ten plik zawiera wszystkie zmiany, które mają zostać wyeksportowane.
  4. Wprowadź niezbędne zmiany w danych lub konfiguracji i uruchom te kroki ponownie (importuj i synchronizuj i zweryfikuj), dopóki zmiany, które zostaną wyeksportowane, będą oczekiwane.

Opis pliku export.csv

Większość pliku nie wyjaśnia. Niektóre skróty umożliwiające zrozumienie zawartości:

  • OMODT — typ modyfikacji obiektu. Wskazuje, czy operacja na poziomie obiektu to Dodaj, Aktualizuj lub Usuń.
  • AMODT — typ modyfikacji atrybutu. Wskazuje, czy operacja na poziomie atrybutu jest dodawanie, aktualizowanie lub usuwanie.

Pobieranie typowych identyfikatorów

Plik export.csv zawiera wszystkie zmiany, które mają zostać wyeksportowane. Każdy wiersz odpowiada zmianie obiektu w przestrzeni łącznika, a obiekt jest identyfikowany przez atrybut DN. Atrybut DN jest unikatowym identyfikatorem przypisanym do obiektu w przestrzeni łącznika. Jeśli masz wiele wierszy/zmian w export.csv do przeanalizowania, może być trudno ustalić, które obiekty są przeznaczone dla na podstawie atrybutu DN. Aby uprościć proces analizowania zmian, użyj skryptu csanalyzer.ps1 programu PowerShell. Skrypt pobiera typowe identyfikatory (na przykład displayName, userPrincipalName) obiektów. Aby użyć skryptu:

  1. Skopiuj skrypt programu PowerShell z sekcji CSAnalyzer do pliku o nazwie csanalyzer.ps1.
  2. Otwórz okno programu PowerShell i przejdź do folderu, w którym został utworzony skrypt programu PowerShell.
  3. Uruchom polecenie: .\csanalyzer.ps1 -xmltoimport %temp%\export.xml.
  4. Masz teraz plik o nazwie processedusers1.csv , który można zbadać w programie Microsoft Excel. Należy pamiętać, że plik zawiera mapowanie z atrybutu DN na typowe identyfikatory (na przykład displayName i userPrincipalName). Obecnie nie zawiera rzeczywistych zmian atrybutów, które mają zostać wyeksportowane.

Przełączanie aktywnego serwera

Microsoft Entra Połączenie można skonfigurować w konfiguracji aktywne-pasywnej wysokiej dostępności, gdzie jeden serwer będzie aktywnie wypychać zmiany do zsynchronizowanych obiektów usługi AD do identyfikatora Microsoft Entra, a pasywny serwer będzie etapem tych zmian w przypadku, gdy konieczne będzie przejęcie.

Uwaga

Nie można skonfigurować Połączenie firmy Microsoft w konfiguracji Aktywne-Aktywne. Musi być aktywny-pasywny. Upewnij się, że tylko 1 serwer Microsoft Entra Połączenie aktywnie synchronizuje zmiany.

Aby uzyskać więcej informacji na temat konfigurowania serwera microsoft Entra Połączenie Sync w trybie przejściowym, zobacz tryb przejściowy

Może być konieczne przejście w tryb failover serwerów synchronizacji z kilku powodów, takich jak uaktualnienie wersji programu Microsoft Entra Połączenie lub otrzymanie alertu informującego, że usługa kondycji usługi synchronizacji nie otrzymuje aktualnych informacji. W tych zdarzeniach można spróbować przejść w tryb failover serwerów synchronizacji, wykonując poniższe kroki.

Ważne

Przełączenie serwera przejściowego na tryb aktywny może mieć poważny wpływ na synchronizację, jeśli następujące warunki nie zostaną spełnione. Jako środek ostrożności należy zawsze uruchamiać początkowy cykl synchronizacji i weryfikować oczekujące eksporty przed wykonaniem tej operacji.

Wymagania wstępne

  • Jeden aktualnie aktywny serwer microsoft Entra Połączenie Sync Server
  • Jeden przejściowy serwer microsoft Entra Połączenie Sync
  • Na serwerze przejściowym włączono harmonogram synchronizacji i ostatnio zsynchronizowano z identyfikatorem Entra firmy Microsoft
  • W przypadku aktualizacji w regułach synchronizacji lub w zakresie synchronizacji uruchom początkowy cykl synchronizacji
  • Upewnij się, że serwer microsoft Entra Połączenie Sync jest skonfigurowany w celu zapobiegania przypadkowym usunięciom
  • Sprawdź oczekujące eksporty i upewnij się, że nie ma znaczących aktualizacji, a takie aktualizacje są oczekiwane
  • Sprawdź, czy agent microsoft Entra Połączenie Health jest aktualizowany, sprawdzając serwer w portalu Microsoft Entra Połączenie Health
  • Przełącz bieżący aktywny serwer do trybu przejściowego przed przełączeniem serwera przejściowego na aktywny

Zmiana aktualnie aktywnego serwera synchronizacji na tryb przejściowy

Musimy upewnić się, że tylko jeden serwer synchronizacji synchronizuje zmiany w dowolnym momencie w tym procesie. Jeśli obecnie aktywny serwer synchronizacji jest osiągalny, możesz wykonać poniższe kroki, aby przenieść go do trybu przejściowego. Jeśli nie jest osiągalny, upewnij się, że serwer lub maszyna wirtualna nie odzyskają dostępu nieoczekiwanie, zamykając serwer lub izolując go od połączeń wychodzących.

  1. W przypadku aktualnie aktywnego serwera Microsoft Entra Połączenie otwórz kreatora Microsoft Entra Połączenie i kliknij przycisk "Skonfiguruj tryb przejściowy", a następnie przycisk Dalej:

    Zrzut ekranu przedstawiający tryb przejściowy wyróżniony w oknie dialogowym Active Microsoft Entra Połączenie.

  2. Musisz zalogować się do usługi Microsoft Entra ID przy użyciu globalnych Administracja istratora lub poświadczeń Administracja tożsamości hybrydowej:

    Zrzut ekranu przedstawiający monit logowania w oknie dialogowym Active Microsoft Entra Połączenie.

  3. Zaznacz pole wyboru Tryb przejściowy i kliknij przycisk Dalej:

    Zrzut ekranu przedstawiający konfigurację trybu przejściowego w oknie dialogowym Active Microsoft Entra Połączenie.

  4. Serwer Microsoft Entra Połączenie sprawdzi zainstalowane składniki, a następnie wyświetli monit o uruchomienie procesu synchronizacji po zakończeniu zmiany konfiguracji:

    Zrzut ekranu przedstawiający ekran Gotowe do skonfigurowania w oknie dialogowym Active Microsoft Entra Połączenie.

Ponieważ serwer będzie w trybie przejściowym, nie zapisze zmian w identyfikatorze Entra firmy Microsoft, ale zachowa wszelkie zmiany w usłudze AD w obszarze Połączenie or, gotowe do ich zapisania.
Zaleca się pozostawienie procesu synchronizacji dla serwera w trybie przejściowym, więc jeśli stanie się aktywny, szybko przejmie i nie będzie musiał wykonywać dużej synchronizacji, aby nadrobić zaległości do bieżącego stanu obiektów Usługi Active Directory / Microsoft Entra w zakresie.

  1. Po wybraniu opcji uruchomienia procesu synchronizacji i kliknięciu pozycji Konfiguruj serwer Microsoft Entra Połączenie zostanie skonfigurowany w trybie przejściowym.
    Po zakończeniu zostanie wyświetlony monit z ekranem z potwierdzeniem włączenia trybu przejściowego.
    Możesz kliknąć przycisk Zakończ, aby zakończyć.

  2. Możesz potwierdzić, że serwer jest pomyślnie w trybie przejściowym, otwierając program Windows PowerShell, ładując moduł "ADSync" i sprawdzając konfigurację harmonogramu adSync, używając następujących poleceń:

Import-Module ADSync
Get-ADSyncScheduler

Z wyników sprawdź wartość ustawienia "StagingModeEnabled". Jeśli serwer został pomyślnie przełączony do trybu przejściowego, wartość tego ustawienia powinna mieć wartość True , jak w poniższym przykładzie:

Zrzut ekranu przedstawiający konsolę usługi synchronizacji w oknie dialogowym Active Microsoft Entra Połączenie.

Zmień bieżący serwer synchronizacji przejściowej na aktywny

W tym momencie wszystkie nasze serwery synchronizacji firmy Microsoft Połączenie powinny znajdować się w trybie przejściowym i nie eksportować zmian. Teraz możemy przenieść nasz tymczasowy serwer synchronizacji do trybu aktywnego i aktywnie synchronizować zmiany.

  1. Teraz przejdź do serwera Microsoft Entra Połączenie, który był pierwotnie w trybie przejściowym i otwórz kreatora Microsoft Entra Połączenie.

    Kliknij pozycję "Konfiguruj tryb przejściowy", a następnie kliknij przycisk Dalej:

    Zrzut ekranu przedstawiający tryb przejściowy wyróżniony w oknie dialogowym Staging Microsoft Entra Połączenie.

    Komunikat w dolnej części kreatora wskazuje, że ten serwer jest w trybie przejściowym.

  2. Zaloguj się do identyfikatora Entra firmy Microsoft, a następnie przejdź do ekranu Tryb przejściowy.

    Usuń zaznaczenie pola trybu przejściowego i kliknij przycisk Dalej

    Zrzut ekranu przedstawiający konfigurację trybu przejściowego w oknie dialogowym Staging Microsoft Entra Połączenie.

    Zgodnie z ostrzeżeniem na tej stronie należy upewnić się, że żaden inny serwer Microsoft Entra Połączenie jest aktywnie synchronizowany.

    W dowolnym momencie powinien istnieć tylko jeden aktywny serwer Microsoft Entra Połączenie Sync.

  3. Po wyświetleniu monitu o uruchomienie procesu synchronizacji zaznacz to pole i kliknij przycisk Konfiguruj:

    Zrzut ekranu przedstawiający ekran Gotowe do skonfigurowania w oknie dialogowym Staging Microsoft Entra Połączenie.

  4. Po zakończeniu procesu powinien zostać wyświetlony poniższy ekran potwierdzenia, na którym można kliknąć przycisk Zakończ, aby zakończyć:

    Zrzut ekranu przedstawiający ekran Potwierdzenie w oknie dialogowym Staging Microsoft Entra Połączenie.

  5. Możesz potwierdzić, że działa to, otwierając konsolę usługi synchronizacji i sprawdzając, czy zadania eksportu są uruchomione:

    Zrzut ekranu przedstawiający konsolę usługi synchronizacji w oknie dialogowym Staging Microsoft Entra Połączenie.

Odzyskiwanie po awarii

W ramach projektu implementacji należy zaplanować, co zrobić w przypadku awarii powodującej utratę serwera synchronizacji. Istnieją różne modele postępowania, a wybór odpowiedniego do użycia w danym przypadku zależy od kilku czynników, takich jak:

  • Jaka jest tolerancja braku możliwości wprowadzania zmian w obiektach w identyfikatorze Entra firmy Microsoft podczas przestoju?
  • Jeśli korzystasz z synchronizacji haseł, czy użytkownicy akceptują fakt, że muszą używać starego hasła w Microsoft Entra ID w przypadku jego zmiany w środowisku lokalnym?
  • Czy istnieje zależność od operacji w czasie rzeczywistym, takich jak zapisywanie zwrotne haseł?

W zależności od odpowiedzi na te pytania i zasady organizacji można zaimplementować jedną z następujących strategii:

  • W razie potrzeby ponownie skompiluj.
  • Ma zapasowy serwer rezerwowy, znany jako tryb przejściowy.
  • Użyj maszyn wirtualnych.

Jeśli nie używasz wbudowanej bazy danych SQL Express, zapoznaj się również z sekcją Wysoka dostępność SQL.

Ponowne kompilowanie w razie potrzeby

Realną strategią jest zaplanowanie ponownego kompilowania serwera w razie potrzeby. Zazwyczaj zainstalowanie aparatu synchronizacji i wykonanie początkowego importowania i synchronizacji można wykonać w ciągu kilku godzin. Jeśli nie ma dostępnego zapasowego serwera, można tymczasowo użyć kontrolera domeny do hostowania aparatu synchronizacji.

Serwer aparatu synchronizacji nie przechowuje żadnego stanu obiektów, więc bazę danych można odtworzyć z danych w usługach Active Directory i Microsoft Entra ID. Atrybut sourceAnchor służy do łączenia obiektów ze środowiska lokalnego i chmury. Jeśli ponownie skompilujesz serwer z istniejącymi obiektami lokalnymi i chmurą, aparat synchronizacji będzie ponownie pasować do tych obiektów podczas ponownej instalacji. Czynności, które należy udokumentować i zapisać, to zmiany konfiguracji wprowadzone na serwerze, takie jak reguły filtrowania i synchronizacji. Przed rozpoczęciem synchronizacji należy ponownie zastosować te konfiguracje niestandardowe.

Posiadanie zapasowego serwera rezerwowego — tryb przejściowy

Jeśli masz bardziej złożone środowisko, zalecane jest posiadanie co najmniej jednego serwera rezerwowego. Podczas instalacji można włączyć serwer w trybie przejściowym.

Aby uzyskać więcej informacji, zobacz tryb przejściowy.

Korzystanie z maszyn wirtualnych

Typową i obsługiwaną metodą jest uruchomienie aparatu synchronizacji na maszynie wirtualnej. Jeśli host ma problem, obraz z serwerem aparatu synchronizacji można migrować do innego serwera.

Wysoka dostępność sql

Jeśli nie używasz programu SQL Server Express dostarczanego z usługą Microsoft Entra Połączenie, należy również rozważyć wysoką dostępność dla programu SQL Server. Obsługiwane rozwiązania wysokiej dostępności obejmują klastrowanie SQL oraz AOA (Zawsze włączone grupy dostępności). Nieobsługiwane rozwiązania obejmują dublowanie.

Dodano obsługę usługi SQL AOA do usługi Microsoft Entra Połączenie w wersji 1.1.524.0. Przed zainstalowaniem usługi Microsoft Entra Połączenie należy włączyć usługę SQL AOA. Podczas instalacji firma Microsoft Entra Połączenie wykrywa, czy udostępnione wystąpienie SQL jest włączone dla usługi SQL AOA, czy nie. Jeśli usługa SQL AOA jest włączona, firma Microsoft Entra Połączenie dalsze informacje, czy usługa SQL AOA jest skonfigurowana do używania replikacji synchronicznej lub replikacji asynchronicznej. Podczas konfigurowania odbiornika grupy dostępności właściwość RegisterAllProvidersIP musi być ustawiona na 0. Dzieje się tak dlatego, że firma Microsoft Entra Połączenie obecnie używa klienta natywnego SQL do nawiązywania połączenia z bazą danych SQL i klientem natywnym SQL nie obsługuje używania właściwości MultiSubNetFailover.

Dodatek CSAnalyzer

Zobacz sekcję zweryfikuj , jak używać tego skryptu.

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
}

Następne kroki

Tematy omówienia