Microsoft Entra Csatlakozás: Átmeneti kiszolgáló és vészhelyreállítás

Az átmeneti üzemmódú kiszolgálón módosíthatja a konfigurációt, és előre megvizsgálhatja a módosítások, mielőtt aktívvá tenné a kiszolgálót. Ezen felül teljes importálást és teljes szinkronizálást is végezhet, hogy ellenőrizze a várt változásokat, mielőtt alkalmazná ezeket a módosításokat az éles környezetben.

Átmeneti mód

Az átmeneti mód sok forgatókönyvben felhasználható, például:

  • Magas rendelkezésre állás.
  • Új konfiguráció-változtatások tesztelése és üzembe helyezése.
  • Új kiszolgáló üzembe állítása, és a régi kivonása.

A telepítés során kiválaszthatja, hogy a kiszolgáló átmeneti módban legyen. Ez a művelet aktívvá teszi a kiszolgálót az importáláshoz és a szinkronizáláshoz, de nem futtat exportálást. Az átmeneti módban lévő kiszolgálók nem futtatják a jelszószinkronizálást vagy a jelszóvisszaírást, még akkor sem, ha a telepítés során kiválasztotta ezeket a funkciókat. Amikor letiltja az átmeneti módot, a kiszolgáló elkezdi az exportálást, engedélyezi a jelszószinkronizálást, és engedélyezi a jelszóvisszaírást.

Feljegyzés

Tegyük fel, hogy engedélyezve van egy Microsoft Entra Csatlakozás jelszókivonat-szinkronizálási funkcióval. Az előkészítési mód engedélyezésekor a kiszolgáló leállítja a jelszómódosítások szinkronizálását a helyszíni AD-ből. Ha letiltja az előkészítési módot, a kiszolgáló folytatja a jelszómódosítások szinkronizálását onnan, ahol utoljára abbahagyta. Ha a kiszolgáló átmeneti módban marad hosszabb ideig, eltarthat egy ideig, amíg a kiszolgáló szinkronizálja az adott időszakban bekövetkezett összes jelszómódosítást.

A szinkronizálási szolgáltatáskezelővel továbbra is kényszerítheti az exportálást.

Az átmeneti módban lévő kiszolgálók továbbra is változásokat kapnak az Active Directorytól és a Microsoft Entra-azonosítótól, és hiba esetén gyorsan átvehetik egy másik kiszolgáló feladatait. Ha konfigurációs módosításokat hajt végre az elsődleges kiszolgálón, az Ön felelőssége, hogy ugyanazokat a módosításokat végezze el átmeneti módban.

Azok számára, akik ismerik a régebbi szinkronizálási technológiákat, az előkészítési mód más, mivel a kiszolgáló saját SQL-adatbázissal rendelkezik. Ez az architektúra lehetővé teszi, hogy az átmeneti módú kiszolgáló egy másik adatközpontban legyen.

Egy kiszolgáló konfigurációjának ellenőrzése

A módszer alkalmazásához kövesse az alábbi lépéseket:

  1. Előkészítés
  2. Konfiguráció
  3. Importálás és szinkronizálás
  4. Ellenőrizze
  5. Aktív kiszolgáló cseréje

Előkészítés

  1. Telepítse a Microsoft Entra Csatlakozás, válassza az előkészítési módot, és törölje a szinkronizálás kijelölését a telepítővarázsló utolsó lapján. Ez a mód lehetővé teszi a szinkronizálási motor manuális futtatását. Képernyőkép a Konfigurálásra kész lapról a Microsoft Entra Csatlakozás párbeszédpanelen.
  2. Jelentkezzen be/jelentkezzen be, majd a start menüben válassza a Szinkronizálási szolgáltatás lehetőséget.

Konfiguráció

Ha egyéni módosításokat végzett az elsődleges kiszolgálón, és össze szeretné hasonlítani a konfigurációt az átmeneti kiszolgálóval, használja a Microsoft Entra Csatlakozás konfiguráció-dokumentálót.

Importálás és szinkronizálás

  1. Válassza ki a Csatlakozás orokat, és válassza ki az első Csatlakozás ort az Active Directory tartományi szolgáltatások típussal. Kattintson a Futtatás, a Teljes importálás és az OK gombra. Hajtsa végre ezeket a lépéseket az összes ilyen típusú Csatlakozás.
  2. Válassza ki a Csatlakozás ort a Microsoft Entra ID (Microsoft) típussal. Kattintson a Futtatás, a Teljes importálás és az OK gombra.
  3. Győződjön meg arról, hogy a tabulátor Csatlakozás még ki van jelölve. A Active Directory tartományi szolgáltatások típusú Csatlakozás orok esetében kattintson a Futtatás gombra, válassza a Delta-szinkronizálás lehetőséget, majd az OK gombot.
  4. Válassza ki a Csatlakozás ort a Microsoft Entra ID (Microsoft) típussal. Kattintson a Futtatás gombra, válassza a Delta-szinkronizálás és az OK lehetőséget.

Most már előkészítette az exportálási módosításokat a Microsoft Entra ID-ra és a helyszíni AD-be (ha hibrid Exchange-telepítést használ). A következő lépésekkel megvizsgálhatja, hogy mi fog megváltozni, mielőtt ténylegesen megkezdené az exportálást a könyvtárakba.

Ellenőrzés

  1. Parancsüzenet indítása, majd ugrás a következőre: %ProgramFiles%\Microsoft Azure AD Sync\bin
  2. Futtatás: csexport "Name of Connector" %temp%\export.xml /f:x A Csatlakozás or neve a Szinkronizálási szolgáltatásban található. Neve hasonló a Microsoft Entra ID "contoso.com – Microsoft Entra ID" nevéhez.
  3. Futtatás: CSExportAnalyzer %temp%\export.xml > %temp%\export.csv A(z) %temp% fájl neve export.csv, amely a Microsoft Excelben vizsgálható. Ez a fájl tartalmazza az exportálni kívánt összes módosítást.
  4. Végezze el a szükséges módosításokat az adatokon vagy a konfiguráción, és futtassa újra ezeket a lépéseket (importálás és szinkronizálás és ellenőrzés), amíg az exportálni kívánt módosítások nem várhatók.

A export.csv fájl ismertetése

A fájl nagy része magától értetődő. Néhány rövidítés a tartalom megértéséhez:

  • OMODT – Objektummódosítás típusa. Azt jelzi, hogy az objektumszinten végzett művelet Hozzáadás, Frissítés vagy Törlés.
  • AMODT – Attribútummódosítás típusa. Azt jelzi, hogy az attribútumszinten végzett művelet hozzáadás, frissítés vagy törlés-e.

Gyakori azonosítók lekérése

A export.csv fájl tartalmazza az exportálni kívánt összes módosítást. Minden sor az összekötőtérben lévő objektumok változásának felel meg, és az objektumot a DN attribútum azonosítja. A DN attribútum egy egyedi azonosító, amely egy objektumhoz van hozzárendelve az összekötőtérben. Ha sok sort/módosítást szeretne elemezni a export.csv, nehéz lehet megállapítania, hogy a módosítások mely objektumokhoz tartoznak egyedül a DN attribútum alapján. A módosítások elemzési folyamatának egyszerűsítése érdekében használja a csanalyzer.ps1 PowerShell-szkriptet. A szkript lekéri az objektumok gyakori azonosítóit (például displayName, userPrincipalName). A szkript használata:

  1. Másolja a PowerShell-szkriptet a CSAnalyzer szakaszból egy nevű csanalyzer.ps1fájlba.
  2. Nyisson meg egy PowerShell-ablakot, és keresse meg azt a mappát, amelyben létrehozta a PowerShell-szkriptet.
  3. Futtatás: .\csanalyzer.ps1 -xmltoimport %temp%\export.xml.
  4. Most már rendelkezik egy processedusers1.csv nevű fájllal, amely megvizsgálható a Microsoft Excelben. Vegye figyelembe, hogy a fájl megfeleltetést biztosít a DN attribútumból a gyakori azonosítókhoz (például displayName és userPrincipalName). Jelenleg nem tartalmazza az exportálni kívánt tényleges attribútummódosításokat.

Aktív kiszolgáló cseréje

A Microsoft Entra Csatlakozás egy aktív-passzív magas rendelkezésre állású beállításban állíthatók be, ahol egy kiszolgáló aktívan leküldi a szinkronizált AD-objektumok módosításait a Microsoft Entra-azonosítóba, és a passzív kiszolgáló ezeket a módosításokat abban az esetben állítja be, amikor át kell vennie.

Feljegyzés

A Microsoft Entra Csatlakozás nem állítható be aktív-aktív beállításban. Aktív-passzívnak kell lennie. Győződjön meg arról, hogy csak 1 Microsoft Entra Csatlakozás kiszolgáló szinkronizálja aktívan a módosításokat.

A Microsoft Entra Csatlakozás Szinkronizálási kiszolgáló átmeneti módban való beállításáról további információt az előkészítési módban talál

Előfordulhat, hogy a szinkronizálási kiszolgálók feladatátvételét több okból is el kell végeznie, például frissítenie kell a Microsoft Entra Csatlakozás verzióját, vagy riasztást kell kapnia arról, hogy a szinkronizálási szolgáltatás állapotszolgáltatása nem kap naprakész információkat. Ezekben az eseményekben az alábbi lépések végrehajtásával megkísérelheti a szinkronizálási kiszolgálók feladatátvételét.

Fontos

Az átmeneti kiszolgáló aktív módra váltása súlyos hatással lehet a szinkronizálásra, ha az alábbi feltételek nem teljesülnek. A művelet végrehajtása előtt elővigyázatosságból mindig futtasson egy kezdeti szinkronizálási ciklust, és ellenőrizze a függőben lévő exportálásokat.

Előfeltételek

  • Egy jelenleg aktív Microsoft Entra Csatlakozás Szinkronizálási kiszolgáló
  • Egy átmeneti Microsoft Entra Csatlakozás Szinkronizálási kiszolgáló
  • Az átmeneti kiszolgáló engedélyezve van a szinkronizálásütemezővel, és a közelmúltban szinkronizálódott a Microsoft Entra-azonosítóval
  • A szinkronizálási szabályokban vagy a szinkronizálási hatókörben lévő frissítések esetén futtasson egy kezdeti szinkronizálási ciklust
  • Ellenőrizze, hogy a Microsoft Entra Csatlakozás szinkronizálási kiszolgálója konfigurálva van-e a véletlen törlések megelőzésére
  • Ellenőrizze a függőben lévő exportálásokat, és győződjön meg arról, hogy nincsenek jelentős frissítések, és ezek a frissítések várhatók
  • Ellenőrizze, hogy a Microsoft Entra Csatlakozás Health-ügynök frissült-e a Microsoft Entra Csatlakozás Health portál kiszolgálójának ellenőrzésével
  • Váltás az aktuális aktív kiszolgáló átmeneti üzemmódra, mielőtt az átmeneti kiszolgálót aktívra váltanál

Az aktív szinkronizálási kiszolgáló aktuális állapotának módosítása átmeneti módra

Biztosítanunk kell, hogy a folyamat során mindig csak egy szinkronizálási kiszolgáló szinkronizálja a módosításokat. Ha a jelenleg aktív szinkronizálási kiszolgáló elérhető, az alábbi lépéseket végrehajtva áthelyezheti átmeneti módba. Ha nem érhető el, győződjön meg arról, hogy a kiszolgáló vagy a virtuális gép nem nyeri vissza váratlanul a hozzáférést a kiszolgáló leállításával vagy a kimenő kapcsolatokból való elkülönítésével.

  1. Az aktuálisan aktív Microsoft Entra Csatlakozás-kiszolgálón nyissa meg a Microsoft Entra Csatlakozás varázslót, és kattintson az "Előkészítési mód konfigurálása" elemre, majd a Tovább gombra:

    Képernyőkép az Aktív Microsoft Entra Csatlakozás párbeszédpanelen kiemelt Átmeneti módról.

  2. Globális Rendszergazda istrator vagy hibrid identitás Rendszergazda hitelesítő adatokkal kell bejelentkeznie a Microsoft Entra-azonosítóba:

    Képernyőkép: Bejelentkezési kérés az Active Microsoft Entra Csatlakozás párbeszédpanelen.

  3. Jelölje be az előkészítési mód jelölőnégyzetét, és kattintson a Tovább gombra:

    Képernyőkép az Átmeneti mód konfigurációjáról az Active Microsoft Entra Csatlakozás párbeszédpanelen.

  4. A Microsoft Entra Csatlakozás kiszolgáló ellenőrzi a telepített összetevőket, majd megkérdezi, hogy szeretné-e elindítani a szinkronizálási folyamatot a konfigurációmódosítás befejeződésekor:

    Képernyőkép a Konfigurálásra kész képernyőről az Aktív Microsoft Entra Csatlakozás párbeszédpanelen.

Mivel a kiszolgáló átmeneti módban lesz, nem a Microsoft Entra-azonosító módosításait fogja írni, hanem megtartja az AD módosításait a Csatlakozás or Space-ben, készen arra, hogy megírja őket.
Javasoljuk, hogy átmeneti módban hagyja a szinkronizálási folyamatot a kiszolgálónál, ezért ha aktívvá válik, gyorsan átveszi a szinkronizálást, és nem kell nagy szinkronizálást végeznie, hogy felzárkózzon a hatókörben lévő Active Directory/Microsoft Entra-objektumok aktuális állapotához.

  1. Miután kiválasztotta a szinkronizálási folyamat elindítását, és a Konfigurálás gombra kattintott, a Microsoft Entra Csatlakozás kiszolgáló átmeneti módba lesz konfigurálva.
    Ha ez befejeződött, a rendszer egy képernyővel kéri, amely megerősíti, hogy az átmeneti mód engedélyezve van.
    A befejezéshez kattintson a Kilépés gombra.

  2. A Windows PowerShell megnyitásával, az "ADSync" modul betöltésével és az ADSync Scheduler konfigurációjának ellenőrzésével az alábbi parancsokkal ellenőrizheti, hogy a kiszolgáló sikeresen átmeneti módban van-e:

Import-Module ADSync
Get-ADSyncScheduler

Az eredményekből ellenőrizze a "StagingModeEnabled" beállítás értékét. Ha a kiszolgálót sikeresen átmeneti üzemmódra váltottuk, a beállítás értékének igaznak kell lennie, mint az alábbi példában:

Képernyőkép a Szolgáltatáskonzol szinkronizálásáról az Active Microsoft Entra Csatlakozás párbeszédpanelen.

Az aktuális átmeneti szinkronizálási kiszolgáló módosítása aktív üzemmódra

Ezen a ponton az összes Microsoft Entra Csatlakozás szinkronizálási kiszolgálónak átmeneti módban kell lennie, és nem exportálnia kell a módosításokat. Most már áthelyezhetjük az átmeneti szinkronizálási kiszolgálót aktív módba, és aktívan szinkronizálhatjuk a módosításokat.

  1. Lépjen az eredetileg átmeneti módban lévő Microsoft Entra Csatlakozás kiszolgálóra, és nyissa meg a Microsoft Entra Csatlakozás varázslót.

    Kattintson az "Előkészítési mód konfigurálása" elemre, és kattintson a Tovább gombra:

    A Microsoft Entra Csatlakozás előkészítési párbeszédpanelen kiemelt Átmeneti mód képernyőképe.

    A varázsló alján található üzenet azt jelzi, hogy ez a kiszolgáló átmeneti módban van.

  2. Jelentkezzen be a Microsoft Entra-azonosítóba, majd lépjen az Előkészítési mód képernyőre.

    Bontsa ki az előkészítési mód mezőjét, és kattintson a Tovább gombra

    Képernyőkép az Átmeneti mód konfigurációjáról az átmeneti Microsoft Entra Csatlakozás párbeszédpanelen.

    Az ezen a lapon megjelenő figyelmeztetésnek megfelelően fontos gondoskodni arról, hogy a Microsoft Entra Csatlakozás kiszolgáló ne szinkronizáljon aktívan.

    Egyszerre csak egy aktív Microsoft Entra Csatlakozás Sync-kiszolgálónak kell lennie.

  3. Amikor a rendszer kéri a szinkronizálási folyamat elindítását, jelölje be ezt a jelölőnégyzetet, és kattintson a Konfigurálás gombra:

    Képernyőkép a Konfigurálásra kész képernyőről az előkészítési Microsoft Entra Csatlakozás párbeszédpanelen.

  4. Ha a folyamat befejeződött, az alábbi megerősítési képernyőt kell kapnia, ahol a Kilépés gombra kattintva befejezheti:

    Képernyőkép a Megerősítő képernyőről az átmeneti Microsoft Entra Csatlakozás párbeszédpanelen.

  5. A szinkronizálási szolgáltatáskonzol megnyitásával és az exportálási feladatok futtatásának ellenőrzésével ellenőrizheti, hogy ez működik-e:

    Képernyőkép a Szolgáltatáskonzol szinkronizálásáról az átmeneti Microsoft Entra Csatlakozás párbeszédpanelen.

Vészhelyreállítás

Az implementációs terv része annak megtervezése, hogy mi a teendő vészhelyzet esetén, amikor a szinkronizálási kiszolgáló kiesik. Többféle modell használható, és a választás több tényezőn, például az alábbiakon múlik:

  • Milyen tűréshatára van annak, hogy az állásidő alatt nem lehet módosítani az objektumokat a Microsoft Entra-azonosítóban?
  • Ha jelszószinkronizálást használ, elfogadják-e a felhasználók, hogy a régi jelszót kell használniuk a Microsoft Entra ID-ban, ha helyben megváltoztatják azt?
  • Függ olyan valós idejű műveletektől, mint a jelszóvisszaírás?

A fenti kérdésekre adott válaszoktól és a szervezet házirendjétől függően az alábbi stratégiák egyikét lehet megvalósítani:

  • Szükség esetén újraépítés.
  • Legyen tartalék készenléti kiszolgálója, más néven átmeneti mód.
  • Használjon virtuális gépeket.

Ha nem használja a beépített SQL Express-adatbázist, tekintse át a magas rendelkezésre állású SQL-szakaszt is.

Újraépítés, amikor szükséges

Az életképes stratégia a kiszolgáló újraépítésének tervezése, ha szükséges. A szinkronizálási motor telepítése és a kezdeti importálás és szinkronizálás végrehajtása általában néhány órán belül elvégezhető. Ha nem áll rendelkezésre tartalék kiszolgáló, ideiglenesen használhat tartományvezérlőt a szinkronizálási motor üzemeltetéséhez.

A szinkronizálási motorkiszolgáló nem tárol semmilyen állapotot az objektumokról, így az adatbázis újraépíthető az Active Directoryban és a Microsoft Entra-azonosítóban lévő adatokból. A sourceAnchor attribútum a helyszíni és a felhőbeli objektumok összekapcsolására szolgál. Ha újraépíti a kiszolgálót a helyszíni és a felhőbeli meglévő objektumokkal, akkor a szinkronizálási motor újratelepítéskor újra egyezik az objektumokkal. A dokumentumkészítéshez és a mentéshez a kiszolgáló konfigurációs módosításaira van szükség, például a szűrési és szinkronizálási szabályokra. Ezeket az egyéni konfigurációkat újra kell alkalmazni a szinkronizálás megkezdése előtt.

Tartalék készenléti kiszolgáló használata – előkészítési mód

Ha összetettebb környezettel rendelkezik, akkor egy vagy több készenléti kiszolgáló használata javasolt. A telepítés során engedélyezheti, hogy a kiszolgáló átmeneti módban legyen.

További információkért lásd az előkészítési módot.

Virtuális gépek használata

Gyakori és támogatott módszer a szinkronizálási motor futtatása egy virtuális gépen. Ha a gazdagépnek problémája van, a szinkronizálási motorkiszolgáló lemezképe áttelepíthető egy másik kiszolgálóra.

Magas rendelkezésre állású SQL

Ha nem a Microsoft Entra Csatlakozás-hez tartozó SQL Server Expresst használja, akkor az SQL Server magas rendelkezésre állását is figyelembe kell venni. A támogatott magas rendelkezésre állású megoldások közé tartozik az SQL-fürtözés és az AOA (AlwaysOn rendelkezésre állási csoportok). A nem támogatott megoldások közé tartozik a tükrözés.

Az SQL AOA támogatása a Microsoft Entra Csatlakozás 1.1.524.0-s verziójában lett hozzáadva. A Microsoft Entra Csatlakozás telepítése előtt engedélyeznie kell az SQL AOA-t. A telepítés során a Microsoft Entra Csatlakozás észleli, hogy a megadott SQL-példány engedélyezve van-e az SQL AOA-hoz. Ha az SQL AOA engedélyezve van, a Microsoft Entra Csatlakozás további információ arról, hogy az SQL AOA szinkron vagy aszinkron replikáció használatára van-e konfigurálva. A rendelkezésre állási csoport figyelőjének beállításakor a RegisterAllProvidersIP tulajdonságot 0 értékre kell állítani. Ennek az az oka, hogy a Microsoft Entra Csatlakozás jelenleg natív SQL-ügyféllel csatlakozik az SQL-hez, és az SQL Native Client nem támogatja a MultiSubNetFailover tulajdonság használatát.

CSAnalyzer függelék

Tekintse meg a szkript használatának ellenőrzésére vonatkozó szakaszt.

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
}

Következő lépések

Áttekintési témakörök