Microsoft Entra Koneksi: Server penahapan dan pemulihan bencana

Dengan server dalam mode penahapan, Anda dapat membuat perubahan pada konfigurasi dan mempratinjau perubahan sebelum Anda membuat server aktif. Ini juga memungkinkan Anda menjalankan impor penuh dan sinkronisasi penuh untuk memverifikasi bahwa semua perubahan benar-benar diharapkan sebelum Anda membuat perubahan ini ke lingkungan produksi Anda.

Mode penahapan

Mode penahapan dapat digunakan untuk beberapa skenario, termasuk:

  • Ketersediaan tinggi.
  • Uji dan sebarkan perubahan konfigurasi baru.
  • Perkenalkan server baru dan nonaktif yang lama.

Selama penginstalan, Anda dapat memilih server untuk berada dalam mode penahapan. Tindakan ini membuat server aktif untuk impor dan sinkronisasi, tetapi tidak menjalankan ekspor apa pun. Server dalam mode penahapan tidak menjalankan sinkronisasi kata sandi atau tulis balik kata sandi, meskipun Anda memilih fitur ini selama penginstalan. Ketika Anda menonaktifkan mode penahapan, server mulai mengekspor, mengaktifkan sinkronisasi kata sandi, dan mengaktifkan tulis balik kata sandi.

Catatan

Misalkan Anda mengaktifkan microsoft Entra Koneksi dengan fitur Sinkronisasi Hash Kata Sandi. Saat Anda mengaktifkan mode pementasan, server berhenti menyinkronkan perubahan kata sandi dari AD lokal. Saat Anda menonaktifkan mode pementasan, server berhenti menyinkronkan perubahan kata sandi dari tempat terakhir kali Anda keluar. Jika server dibiarkan dalam mode penahapan untuk jangka waktu yang lama, perlu waktu beberapa saat bagi server untuk menyinkronkan semua perubahan kata sandi yang telah terjadi selama periode waktu.

Anda masih dapat memaksa ekspor menggunakan pengelola layanan sinkronisasi.

Server dalam mode penahapan terus menerima perubahan dari Direktori Aktif dan ID Microsoft Entra dan dapat dengan cepat mengambil alih tanggung jawab server lain jika terjadi kegagalan. Jika Anda membuat perubahan konfigurasi ke server utama, Anda bertanggung jawab untuk membuat perubahan yang sama pada server dalam mode penahapan.

Bagi Anda yang memiliki pengetahuan tentang teknologi sinkronisasi yang lebih lama, mode penahapan berbeda karena server memiliki database SQL sendiri. Arsitektur ini memungkinkan server mode penahapan ditempatkan di pusat data yang berbeda.

Memverifikasi konfigurasi server

Untuk menerapkan metode ini, ikuti langkah-langkah berikut:

  1. Siapkan
  2. Konfigurasi
  3. Impor dan Sinkronkan
  4. Verifikasi
  5. Ganti server aktif

Siapkan

  1. Instal Microsoft Entra Koneksi, pilih mode penahapan, dan batal pilih mulai sinkronisasi pada halaman terakhir dalam wizard penginstalan. Mode ini memungkinkan Anda menjalankan mesin sinkronisasi secara manual. Cuplikan layar memperlihatkan halaman Siap dikonfigurasi dalam kotak dialog Microsoft Entra Koneksi.
  2. Keluar/masuk dan dari menu mulai, pilih Layanan Sinkronisasi.

Konfigurasi

Jika Anda telah membuat perubahan kustom pada server utama dan ingin membandingkan konfigurasi dengan server penahapan, gunakan dokumenter konfigurasi Microsoft Entra Koneksi.

Impor dan Sinkronkan

  1. Pilih Konektor, dan pilih Konektor pertama dengan tipe Layanan Domain Active Directory Azure. Klik Jalankan, pilih Impor penuh, dan OK. Lakukan langkah-langkah berikut untuk semua Konektor jenis ini.
  2. Pilih Koneksi or dengan jenis MICROSOFT Entra ID (Microsoft). Klik Jalankan, pilih Impor penuh, dan OK.
  3. Pastikan konektor tab masih dipilih. Untuk setiap Konektor dengan tipe Layanan Domain Direktori Aktif, klik Jalankan, pilih Sinkronisasi Delta, dan OK.
  4. Pilih Koneksi or dengan jenis MICROSOFT Entra ID (Microsoft). Klik Jalankan, pilih Sinkronisasi Delta, dan OK.

Anda sekarang telah melakukan perubahan ekspor bertahap ke MICROSOFT Entra ID dan AD lokal (jika Anda menggunakan penyebaran hibrid Exchange). Langkah selanjutnya memungkinkan Anda memeriksa apa yang akan berubah sebelum Anda benar-benar memulai ekspor ke direktori.

Verifikasi

  1. Mulai perintah cmd dan buka %ProgramFiles%\Microsoft Azure AD Sync\bin
  2. Jalankan: csexport "Name of Connector" %temp%\export.xml /f:x Nama Konektor dapat ditemukan di Layanan Sinkronisasi. Ini memiliki nama yang mirip dengan "contoso.com – ID Microsoft Entra" untuk ID Microsoft Entra.
  3. Jalankan: CSExportAnalyzer %temp%\export.xml > %temp%\export.csv Anda sekarang memiliki file dalam %temp% bernama export.csv yang bisa diperiksa di Microsoft Excel. File ini memuat semua perubahan yang akan diekspor.
  4. Buat perubahan yang diperlukan pada data atau konfigurasi, dan jalankan langkah-langkah ini lagi (Impor, Sinkronkan, dan Verifikasi) hingga perubahan yang akan diekspor adalah apa yang Anda harapkan.

Memahami file export.csv

Sebagian besar file sudah cukup jelas. Beberapa singkatan untuk memahami konten:

  • OMODT – Object Modification Type. Menunjukkan apakah operasi pada tingkat objek adalah Tambahkan, Perbarui, atau Hapus.
  • AMODT – Attribute Modification Type. Menunjukkan apakah operasi pada tingkat atribut adalah Tambahkan, Perbarui, atau Hapus.

Mengambil pengidentifikasi umum

File export.csv memuat semua perubahan yang akan diekspor. Setiap baris terkait dengan perubahan untuk objek di ruang konektor dan objek diidentifikasi oleh atribut DN. Atribut DN adalah pengidentifikasi unik yang ditetapkan ke objek di ruang konektor. Ketika Anda memiliki banyak baris/perubahan dalam export.csv untuk dianalisis, mungkin sulit bagi Anda untuk mencari tahu objek mana yang untuk perubahan berdasarkan atribut DN saja. Untuk menyederhanakan proses menganalisis perubahan, gunakan skrip csanalyzer.ps1 PowerShell. Skrip mengambil pengidentifikasi umum (misalnya, displayName, userPrincipalName) dari objek. Untuk menggunakan skrip:

  1. Salin skrip PowerShell dari bagian CSAnalyzer ke file bernama csanalyzer.ps1.
  2. Buka jendela PowerShell dan telusuri ke folder untuk membuat skrip PowerShell.
  3. Jalankan: .\csanalyzer.ps1 -xmltoimport %temp%\export.xml.
  4. Anda sekarang memiliki file bernama processedusers1.csv yang bisa diperiksa di Microsoft Excel. Perhatikan bahwa file tersebut menyediakan pemetaan dari atribut DN ke pengidentifikasi umum (misalnya displayName dan userPrincipalName). Saat ini tidak mencakup perubahan atribut aktual yang akan diekspor.

Ganti server aktif

Microsoft Entra Koneksi dapat disiapkan dalam penyiapan Ketersediaan Tinggi Pasif Aktif, di mana satu server akan secara aktif mendorong perubahan ke objek AD yang disinkronkan ke ID Microsoft Entra dan server pasif akan melakukan perubahan ini jika perlu diambil alih.

Catatan

Anda tidak dapat menyiapkan Microsoft Entra Koneksi dalam penyetelan Aktif-Aktif. Ia harus Aktif-Pasif. Pastikan bahwa hanya 1 server Microsoft Entra Koneksi yang secara aktif menyinkronkan perubahan.

Untuk informasi selengkapnya tentang menyiapkan server Microsoft Entra Koneksi Sync dalam Mode Penahapan, lihat mode penahapan

Anda mungkin perlu melakukan failover Server Sinkronisasi karena beberapa alasan, seperti memutakhirkan versi Microsoft Entra Koneksi, atau menerima pemberitahuan bahwa layanan kesehatan Layanan Sinkronisasi tidak menerima informasi terbaru. Dalam peristiwa ini Anda dapat mencoba failover Server Sinkronisasi dengan mengikuti langkah di bawah ini.

Penting

Mengalihkan server penahapan ke mode aktif dapat berdampak parah dalam sinkronisasi, jika kondisi berikut tidak terpenuhi. Sebagai tindakan pencegahan, selalu jalankan siklus sinkronisasi awal dan Verifikasi ekspor yang tertunda , sebelum melakukan operasi ini.

Prasyarat

  • Satu Microsoft Entra Koneksi Sync Server yang saat ini aktif
  • Satu pementasan Microsoft Entra Koneksi Sync Server
  • Server penahapan mengaktifkan penjadwal sinkronisasi dan telah disinkronkan dengan ID Microsoft Entra baru-baru ini
  • Jika ada pembaruan dalam aturan sinkronisasi atau dalam cakupan sinkronisasi, jalankan siklus sinkronisasi awal
  • Konfirmasikan bahwa Microsoft Entra Koneksi Sync Server Anda dikonfigurasi untuk mencegah penghapusan yang tidak disengaja
  • Verifikasi ekspor yang tertunda dan konfirmasikan bahwa tidak ada pembaruan yang signifikan, dan pembaruan tersebut diharapkan
  • Periksa apakah agen Microsoft Entra Koneksi Health diperbarui dengan memeriksa server di portal Microsoft Entra Koneksi Health
  • Alihkan server aktif saat ini ke mode penahapan, sebelum mengalihkan server penahapan ke aktif

Mengubah Server Sinkronisasi yang saat ini Aktif ke mode penahapan

Kita perlu memastikan bahwa hanya satu Server Sinkronisasi yang menyinkronkan perubahan pada waktu tertentu sepanjang proses ini. Jika Sync Server yang saat ini aktif dapat dijangkau, Anda dapat melakukan langkah-langkah di bawah ini untuk memindahkannya ke Mode Penahapan. Jika tidak dapat dijangkau, pastikan bahwa server atau VM tidak mendapatkan kembali akses secara tak terduga baik dengan mematikan server atau mengisolasinya dari koneksi keluar.

  1. Untuk server Microsoft Entra Koneksi yang saat ini aktif, buka wizard Microsoft Entra Koneksi dan klik "Konfigurasikan mode penahapan" lalu Berikutnya:

    Cuplikan layar memperlihatkan Mode Penahapan disorot dalam kotak dialog Microsoft Entra Koneksi Aktif.

  2. Anda harus masuk ke ID Microsoft Entra dengan info masuk Administrator Global atau Admin Identitas Hibrid:

    Cuplikan layar memperlihatkan perintah Masuk dalam kotak dialog Koneksi Microsoft Entra Aktif.

  3. Centang kotak untuk Mode Penahapan dan klik Berikutnya:

    Cuplikan layar memperlihatkan konfigurasi Mode Penahapan dalam kotak dialog Koneksi Microsoft Entra Aktif.

  4. Server Microsoft Entra Koneksi akan memeriksa komponen yang diinstal lalu menanyakan apakah Anda ingin memulai proses sinkronisasi saat perubahan konfigurasi selesai:

    Cuplikan layar memperlihatkan layar Siap Dikonfigurasi dalam kotak dialog Koneksi Microsoft Entra Aktif.

Karena server akan berada dalam mode penahapan, server tidak akan menulis perubahan pada ID Microsoft Entra, tetapi mempertahankan perubahan apa pun pada AD di ruang Koneksi ornya, siap untuk menulisnya.
Disarankan untuk membiarkan proses sinkronisasi aktif untuk server dalam Mode Penahapan, jadi jika aktif, itu akan dengan cepat mengambil alih dan tidak perlu melakukan sinkronisasi besar untuk mengejar status objek Active Directory / Microsoft Entra saat ini dalam cakupan.

  1. Setelah memilih untuk memulai proses sinkronisasi dan mengklik Konfigurasikan, server Microsoft Entra Koneksi akan dikonfigurasi ke dalam Mode Penahapan.
    Ketika langkah ini selesai, Anda akan diminta dengan layar yang mengonfirmasi Mode Penahapan diaktifkan.
    Anda dapat mengklik Keluar untuk menyelesaikan.

  2. Anda dapat mengonfirmasi bahwa server berhasil dalam Mode Penahapan dengan membuka Windows PowerShell, memuat modul "SINKRONISASI AAD" dan memverifikasi konfigurasi AdSync Scheduler, menggunakan perintah berikut:

Import-Module ADSync
Get-ADSyncScheduler

Dari hasilnya, verifikasi nilai pengaturan "StagingModeEnabled". Jika server berhasil dialihkan ke mode penahapan, nilai pengaturan ini harus Benar seperti pada contoh di bawah ini:

Cuplikan layar memperlihatkan konsol Layanan Sinkronisasi pada kotak dialog Microsoft Entra Koneksi Aktif.

Mengubah server Sinkronisasi yang saat ini dalam mode Penahapan ke mode aktif

Pada titik ini, semua Microsoft Entra Koneksi Sync Server kami harus dalam Mode Penahapan dan tidak mengekspor perubahan. Kita sekarang dapat memindahkan Server Sinkronisasi dalam mode Penahapan ke mode Aktif dan menyinkronkan perubahan secara aktif.

  1. Sekarang pindah ke server Microsoft Entra Koneksi yang awalnya dalam Mode Penahapan dan buka wizard Microsoft Entra Koneksi.

    Klik "Konfigurasikan mode penahapan" dan klik Berikutnya:

    Cuplikan layar memperlihatkan Mode Penahapan disorot dalam kotak dialog Pentahapan Microsoft Entra Koneksi.

    Pesan di bagian bawah wizard menunjukkan server ini dalam Mode Penahapan.

  2. Masuk ke MICROSOFT Entra ID, lalu buka layar Mode Penahapan.

    Hapus centang pada kotak untuk Mode Penahapan dan klik Berikutnya

    Cuplikan layar memperlihatkan konfigurasi Mode Penahapan dalam kotak dialog Penahapan Microsoft Entra Koneksi.

    Sesuai peringatan di halaman ini, penting untuk memastikan tidak ada server Microsoft Entra Koneksi lain yang secara aktif disinkronkan.

    Seharusnya hanya ada satu server Microsoft Entra Koneksi Sync aktif kapan saja.

  3. Ketika Anda diminta untuk memulai proses sinkronisasi, centang kotak ini dan klik Konfigurasikan:

    Cuplikan layar memperlihatkan layar Siap Dikonfigurasi dalam kotak dialog Penahapan Microsoft Entra Koneksi.

  4. Setelah proses selesai, Anda akan mendapatkan layar konfirmasi di bawah ini tempat Anda dapat mengeklik Keluar untuk menyelesaikan:

    Cuplikan layar memperlihatkan layar Konfirmasi dalam kotak dialog Penahapan Microsoft Entra Koneksi.

  5. Anda dapat mengonfirmasi bahwa ini berfungsi dengan membuka Konsol Layanan Sinkronisasi dan memeriksa apakah pekerjaan Ekspor berjalan:

    Cuplikan layar memperlihatkan konsol Layanan Sinkronisasi pada kotak dialog Pentahapan Microsoft Entra Koneksi.

Pemulihan dari bencana

Bagian dari desain implementasi adalah merencanakan apa yang harus dilakukan jika terjadi bencana di mana Anda kehilangan server sinkronisasi. Ada model yang berbeda untuk digunakan dan mana yang digunakan tergantung pada beberapa faktor termasuk:

  • Apa toleransi Anda agar tidak dapat membuat perubahan pada objek di ID Microsoft Entra selama waktu henti?
  • Jika Anda menggunakan sinkronisasi kata sandi, apakah pengguna menerima bahwa mereka harus menggunakan kata sandi lama di Microsoft Entra ID jika mereka mengubahnya secara lokal?
  • Apakah Anda memiliki ketergantungan pada operasi real-time, seperti tulis balik kata sandi?

Bergantung pada jawaban atas pertanyaan-pertanyaan ini dan kebijakan organisasi Anda, salah satu strategi berikut dapat diterapkan:

  • Buat ulang ketika diperlukan.
  • Miliki server siaga cadangan, yang dikenal sebagai mode penahapan.
  • Gunakan komputer virtual.

Jika Anda tidak menggunakan database SQL Express bawaan, maka Anda juga harus meninjau bagian Ketersediaan Tinggi SQL.

Membuat ulang ketika diperlukan

Strategi yang layak adalah merencanakan buat ulang server saat diperlukan. Biasanya, menginstal mesin sinkronisasi dan melakukan impor dan sinkronisasi awal dapat diselesaikan dalam beberapa jam. Jika tidak ada server cadangan yang tersedia, Anda bisa menggunakan pengontrol domain untuk sementara waktu guna menghosting mesin sinkronisasi.

Server mesin sinkronisasi tidak menyimpan status apa pun tentang objek sehingga database dapat dibangun kembali dari data di Direktori Aktif dan ID Microsoft Entra. Atribut sourceAnchor digunakan untuk menggabungkan objek dari lokal dan cloud. Jika Anda membuat ulang server dengan objek lokal dan cloud yang ada, maka mesin sinkronisasi cocok dengan objek tersebut bersama-sama lagi pada penginstalan ulang. Hal-hal yang perlu Anda dokumentasikan dan simpan adalah perubahan konfigurasi yang dilakukan pada server, seperti aturan pemfilteran dan sinkronisasi. Konfigurasi kustom ini harus diterapkan kembali sebelum Anda mulai menyinkronkan.

Memiliki server siaga cadangan - mode penahapan

Jika Anda memiliki lingkungan yang lebih kompleks, maka memiliki satu atau beberapa server siaga sangat disarankan. Selama penginstalan, Anda dapat mengaktifkan server untuk berada dalam mode penahapan.

Untuk informasi selengkapnya, lihat mode pementasan.

Menggunakan komputer virtual

Metode yang umum dan didukung adalah menjalankan mesin sinkronisasi di komputer virtual. Jika host memiliki masalah, citra dengan server mesin sinkronisasi dapat dimigrasikan ke server lain.

Ketersediaan Tinggi SQL

Jika Anda tidak menggunakan SQL Server Express yang dilengkapi dengan Microsoft Entra Koneksi, ketersediaan tinggi untuk SQL Server juga harus dipertimbangkan. Solusi ketersediaan tinggi yang didukung mencakup pengelompokan SQL dan AOA (Always On Availability Group). Solusi yang tidak didukung mencakup pencerminan.

Dukungan untuk SQL AOA ditambahkan ke Microsoft Entra Koneksi di versi 1.1.524.0. Anda harus mengaktifkan SQL AOA sebelum menginstal Microsoft Entra Koneksi. Selama penginstalan, Microsoft Entra Koneksi mendeteksi apakah instans SQL yang disediakan diaktifkan untuk SQL AOA atau tidak. Jika SQL AOA diaktifkan, Microsoft Entra Koneksi mencari tahu lebih lanjut apakah SQL AOA dikonfigurasi untuk menggunakan replikasi sinkron atau replikasi asinkron. Saat menyiapkan Listener Grup Ketersediaan, properti RegisterAllProvidersIP harus diatur ke 0. Ini karena Microsoft Entra Koneksi saat ini menggunakan SQL Native Client untuk terhubung ke SQL dan SQL Native Client tidak mendukung penggunaan properti MultiSubNetFailover.

Lampiran CSAnalyzer

Lihat bagian verifikasi mengenai cara menggunakan skrip ini.

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
}

Langkah berikutnya

Topik ringkasan