Microsoft Entra Connect: Stagingserver und Notfallwiederherstellung
Mit einem Server im Stagingmodus können Sie Änderungen an der Konfiguration vornehmen und eine Vorschau der Änderungen anzeigen, bevor Sie den Server aktiv schalten. Ein Server im Stagingmodus ermöglicht es Ihnen außerdem, einen vollständigen Import und eine vollständige Synchronisierung durchzuführen und so sicherzustellen, dass alle Änderungen wie erwartet durchgeführt werden, bevor Sie die Änderungen in Ihrer Produktionsumgebung implementieren.
Stagingmodus
Der Stagingmodus kann für verschiedene Szenarien genutzt werden, darunter:
- Hochverfügbarkeit.
- Testen und Bereitstellen neuer Konfigurationsänderungen.
- Einführen eines neuen Servers und Außerbetriebnahme des alten Servers.
Bei der Installation können Sie auswählen, dass der Server in den Stagingmodusversetzt werden soll. Durch diese Aktion wird der Server für den Import und die Synchronisierung aktiviert, es werden jedoch keine Exporte ausgeführt. Ein Server im Stagingmodus führt keine Kennwortsynchronisierung und kein Kennwortrückschreiben durch – selbst dann nicht, wenn Sie diese Features bei der Installation ausgewählt haben. Wenn Sie den Stagingmodus deaktivieren, beginnt der Server mit dem Exportieren und aktiviert die Kennwortsynchronisierung und das Kennwortrückschreiben.
Hinweis
Angenommen Sie, Sie haben eine Microsoft Entra Connect-Instanz, für die Kennworthashsynchronisierung aktiviert ist. Wenn Sie den Stagingmodus aktivieren, beendet der Server das Synchronisieren von Kennwortänderungen aus lokalem AD. Wenn Sie den Stagingmodus deaktivieren, setzt der Server das Synchronisieren von Kennwortänderungen an der Stelle fort, an der das Synchronisieren zuletzt beendet wurde. War der Stagingsmodus längere Zeit für den Server aktiviert, kann es etwas länger dauern, bis der Server alle Kennwortänderungen synchronisiert hat, die es in diesem Zeitraum gegeben hat.
Sie können einen Export weiterhin mithilfe des Synchronisierungsdienst-Managers erzwingen.
Ein Server im Stagingmodus empfängt weiterhin Änderungen von Active Directory und Microsoft Entra und kann bei einem Ausfall schnell die Zuständigkeiten eines anderen Servers übernehmen. Wenn Sie Konfigurationsänderungen an Ihrem primären Server vornehmen, müssen Sie die gleichen Änderungen auch für den Server im Stagingmodus durchführen.
Wenn Sie sich bisher nur mit älteren Synchronisierungstechnologien auskennen, müssen Sie wissen, dass Änderungen für den Stagingmodus gelten, seit dieser über eine eigene SQL-Datenbank verfügt. Dank dieser Architektur kann sich der Server im Stagingmodus in einem anderen Datencenter befinden.
Überprüfen der Konfiguration eines Servers
Führen Sie zum Anwenden dieser Methode die folgenden Schritte aus:
Vorbereiten
- Installieren Sie Microsoft Entra Connect, wählen Sie Stagingmodus aus, und deaktivieren Sie auf der letzten Seite des Installations-Assistenten die Option Synchronisierung starten. In diesem Modus kann das Synchronisierungsmodul manuell ausgeführt werden.
- Melden Sie sich ab und wieder an, und wählen Sie im Startmenü die Option Synchronisierungsdienstaus.
Konfiguration
Wenn Sie benutzerdefinierte Änderungen an den primären Server vorgenommen haben und die Konfiguration mit dem Stagingserver vergleichen möchten, verwenden Sie Microsoft Entra Connect-Konfigurationsdokumentierer.
Importieren und Synchronisieren
- Wählen Sie Connectors aus, und wählen Sie dann den ersten Connector mit dem Typ Active Directory Domain Services aus. Klicken Sie auf Ausführen, wählen Sie Vollständiger Import aus, und klicken Sie auf OK. Führen Sie diese Schritte für alle Connectors dieses Typs aus.
- Wählen Sie den Connector mit Microsoft Entra ID (Microsoft) aus. Klicken Sie auf Ausführen, wählen Sie Vollständiger Import aus, und klicken Sie auf OK.
- Stellen Sie sicher, dass die Registerkarte „Connectors“ noch ausgewählt ist. Klicken Sie für jeden Connector mit dem Typ Active Directory Domain Services auf Ausführen, wählen Sie Deltasynchronisierung aus, und klicken Sie auf OK.
- Wählen Sie den Connector mit Microsoft Entra ID (Microsoft) aus. Klicken Sie auf Ausführen, wählen Sie Deltasynchronisierung aus, und klicken Sie auf OK.
Sie haben nun Exportänderungen an Microsoft Entra ID und an der lokalen AD vorgenommen (wenn Sie eine Exchange-Hybridbereitstellung verwenden). In den nächsten Schritten können Sie überprüfen, was geändert wird, bevor Sie mit dem Export in die Verzeichnisse beginnen.
Überprüfen
- Starten Sie eine Eingabeaufforderung, und wechseln Sie zu:
%ProgramFiles%\Microsoft Azure AD Sync\bin
- Führen Sie folgenden Befehl aus:
csexport "Name of Connector" %temp%\export.xml /f:x
Den Namen des Connectors finden Sie im Synchronisierungsdienst. Der Name hat für Microsoft Entra ID Ähnlichkeit mit „contoso.com – Microsoft Entra ID“. - Führen Sie folgenden Befehl aus:
CSExportAnalyzer %temp%\export.xml > %temp%\export.csv
Im Ordner „%temp%“ befindet sich nun eine Datei namens „export.csv“, die Sie sich in Microsoft Excel ansehen können. Diese Datei enthält alle Änderungen, die exportiert werden sollen. - Nehmen Sie erforderliche Änderungen an den Daten oder der Konfiguration vor, und führen Sie die oben genannten Schritte (Importieren, Synchronisieren, Überprüfen) erneut aus, bis Sie die Änderungen erhalten, die Sie exportieren möchten.
Grundlegendes zur Datei "export.csv"
Die meisten Bestandteile der Datei sind selbsterklärend. Nachfolgend werden zum Verständnis des Inhalts einige Abkürzungen erläutert:
- OMODT: Object Modification Type. Gibt an, ob es sich bei dem Vorgang auf Objektebene um einen Hinzufüge-, Aktualisierungs- oder Löschvorgang handelt.
- AMODT: Attribute Modification Type. Gibt an, ob es sich bei dem Vorgang auf Attributebene um einen Hinzufüge-, Aktualisierungs- oder Löschvorgang handelt.
Abrufen allgemeiner Bezeichner
Die export.csv-Datei enthält alle Änderungen, die exportiert werden sollen. Jede Zeile entspricht einer Änderung für ein Objekt im Connectorbereich, und das Objekt wird durch das DN-Attribut identifiziert. Das DN-Attribut ist ein eindeutiger Bezeichner, der einem Objekt im Connectorbereich zugewiesen ist. Wenn Sie viele Zeilen/Änderungen in „export.csv“ analysieren müssen, ist es allein anhand des DN-Attributs möglicherweise schwierig, zu ermitteln, auf welche Objekte sich die Änderungen beziehen. Um das Analysieren der Änderungen zu vereinfachen, verwenden Sie das PowerShell-Skript csanalyzer.ps1
. Das Skript ruft allgemeine Bezeichner der Objekte ab (z.B. „displayName“, „userPrincipalName“). So verwenden Sie das Skript
- Kopieren Sie das PowerShell-Skript aus dem Abschnitt CSAnalyzer in eine Datei mit dem Namen
csanalyzer.ps1
. - Öffnen Sie ein PowerShell-Fenster, und navigieren Sie zu dem Ordner, in dem Sie das PowerShell-Skript erstellt haben.
- Führen Sie
.\csanalyzer.ps1 -xmltoimport %temp%\export.xml
aus. - Sie verfügen jetzt über eine Datei namens processedusers1.csv, die in Microsoft Excel untersucht werden kann. Beachten Sie, dass die Datei eine Zuordnung des DN-Attributs zum allgemeinen Bezeichner (z.B. „displayName“ und „userPrincipalName“) enthält. Sie enthält derzeit nicht die tatsächlichen Attributänderungen, die exportiert werden sollen.
Wechseln des aktiven Servers
Microsoft Entra Connect kann in einer Aktiv-Passiv-Hochverfügbarkeits-Konfiguration eingerichtet werden, bei der ein Server Änderungen aktiv an die synchronisierten AD-Objekte an Microsoft Entra ID überträgt und der passive Server diese Änderungen für den Fall, dass er übernehmen muss, bereitstellt.
Hinweis
Sie können Microsoft Entra Connect nicht in einem Aktiv-Aktiv-Einrichtung einrichten. Es muss Aktiv-Passiv verwendet werden. Stellen Sie sicher, dass nur 1 Microsoft Entra Connect-Server aktiv Änderungen synchronisiert.
Weitere Informationen zum Einrichten eines Microsoft Entra Connect-Synchronisierungsservers im Stagingmodus finden Sie unter Stagingmodus
Möglicherweise müssen Sie aus mehreren Gründen ein Failover der Synchronisierungsserver ausführen, z. B. Upgrade der Version von Microsoft Entra Connect oder Empfang einer Warnung, dass der Integritätsdienst des Synchronisierungsdiensts keine aktuellen Informationen empfängt. In diesen Fällen können Sie ein Failover der Synchronisierungsserver versuchen, indem Sie die folgenden Schritte ausführen.
Wichtig
Das Umschalten eines Staging-Servers in den aktiven Modus kann schwerwiegende Auswirkungen auf die Synchronisierung haben, wenn die folgenden Bedingungen nicht erfüllt sind. Führen Sie als Vorsichtsmaßnahme immer einen ersten Synchronisierungszyklus aus und überprüfen Sie die ausstehenden Exporte, bevor Sie diesen Vorgang ausführen.
Voraussetzungen
- Ein derzeit aktiver Microsoft Entra Connect-Synchronisierungsserver
- Ein Staging-Microsoft Entra Verbindungssynchronisierungsserver
- Auf dem Staging-Server ist der Synchronisierungsplaner aktiviert und er wurde kürzlich mit Microsoft Entra ID synchronisiert
- Bei Aktualisierungen in Synchronisierungsregeln oder -umfang einen ersten Synchronisierungszyklus ausführen
- Sicherstellen, dass Ihr Microsoft Entra Connect-Synchronisierungsserver so konfiguriert ist, dass versehentliche Löschungen verhindert werden
- Überprüfen ausstehender Exporte und bestätigen, dass keine signifikanten Updates vorhanden sind und solche Updates erwartet werden
- Prüfen, ob der Microsoft Entra Connect Health-Agent aktualisiert wird, indem der Server im Microsoft Entra Connect Health-Portal überprüft wird
- Wechseln des aktuellen aktiven Servers in den Stagingmodus, bevor der Stagingserver auf „aktiv“ umgeschaltet wird
Versetzen des derzeit aktiven Synchronisierungsservers in den Stagingmodus
Es muss sichergestellt sein, dass während dieses Prozesses immer jeweils nur ein Synchronisierungsserver Änderungen synchronisiert. Wenn der derzeit aktive Synchronisierungsserver erreichbar ist, können Sie die folgenden Schritte ausführen, um ihn in den Stagingmodus zu versetzen. Wenn er nicht erreichbar ist, stellen Sie sicher, dass der Server oder die VM nicht unerwartet wieder Zugriff erhält, indem Sie den Server herunterfahren oder ihn von ausgehenden Verbindungen isolieren.
- Öffnen Sie für den derzeit aktiven Microsoft Entra Connect-Server den Microsoft Entra Connect-Assistenten, und klicken Sie anschließend auf „Stagingmodus konfigurieren“ und dann auf „Weiter“:
- Sie müssen sich mit den Anmeldedaten des Hybrididentitäts-Admins bei Microsoft Entra ID anmelden:
- Aktivieren Sie das Kontrollkästchen für den Stagingmodus, und klicken Sie auf „Weiter“:
- Der Microsoft Entra Connect-Server überprüft, ob Komponenten installiert sind, und fragt Sie dann, ob Sie den Synchronisierungsprozess starten möchten, sobald die Konfigurationsänderung abgeschlossen ist:
Da sich der Server im Staging-Modus befindet, werden Änderungen nicht in die Microsoft Entra ID geschrieben, sondern alle Änderungen an der AD werden in seinem Connectorbereich gespeichert und können dort geschrieben werden. Es wird empfohlen, den Synchronisierungsprozess für den Server im Stagingmodus weiterhin ausführen zu lassen, sodass er bei Aktivierung schnell die Synchronisierung übernehmen kann und keine umfangreiche Synchronisierung durchführen muss, um den aktuellen Zustand der in dem Bereich enthaltenen Active Directory- bzw. Microsoft Entra-Objekte zu erfassen.
Nachdem Sie den Synchronisierungsprozess gestartet und auf „Konfigurieren“ geklickt haben, wird der Microsoft Entra Connect-Server im Staging-Modus konfiguriert. Nach Abschluss des Vorgangs wird ein Bildschirm angezeigt, der bestätigt, dass der Staging-Modus aktiviert ist. Sie können auf „Beenden“ klicken, um den Vorgang zu beenden.
Sie können bestätigen, dass sich der Server erfolgreich im Stagingmodus befindet, indem Sie Windows PowerShell öffnen, das Modul „ADSync“ laden und die ADSync-Planerkonfiguration mithilfe der folgenden Befehle überprüfen:
Import-Module ADSync
Get-ADSyncScheduler
Überprüfen Sie anhand der Ergebnisse den Wert der Einstellung „StagingModeEnabled“. Wenn der Server erfolgreich in den Stagingmodus gewechselt ist, sollte der Wert dieser Einstellung wie im folgenden Beispiel True sein:
Versetzen des aktuellen Synchronisierungsservers im Stagingmodus in den aktiven Modus
An dieser Stelle sollten sich alle Microsoft Entra Connect-Synchronisierungsserver im Stagingmodus befinden und keine Änderungen exportieren. Wir können jetzt unseren Synchronisierungsserver im Stagingmodus in den aktiven Modus versetzen und Änderungen aktiv synchronisieren.
- Wechseln Sie nun zum Microsoft Entra Connect-Server, der ursprünglich im Stagingmodus war, und öffnen Sie den Microsoft Entra Connect-Assistenten.
Klicken Sie auf „Stagingmodus konfigurieren“ und dann auf „Weiter“:
Die Meldung am unteren Rand des Assistenten weist darauf hin, dass sich dieser Server im Stagingmodus befindet.
- Melden Sie sich bei Microsoft Entra an, und navigieren Sie dann zum Bildschirm Stagingmodus.
Deaktivieren Sie das Kontrollkästchen für den Stagingmodus, und klicken Sie auf „Weiter“.
Laut Warnung auf dieser Seite muss unbedingt sichergestellt sein, dass kein anderer Microsoft Entra Connect-Server aktiv eine Synchronisierung durchführt.
Es sollte jederzeit nur einen aktiven Microsoft Entra Connect-Synchronisierungsserver geben.
- Aktivieren Sie dieses Kontrollkästchen, wenn Sie aufgefordert werden, den Synchronisierungsprozess zu starten, und klicken Sie auf „Konfigurieren“:
- Nach Abschluss des Vorgangs sollte der folgende Bestätigungsbildschirm angezeigt werden, in dem Sie auf „Beenden“ klicken können:
- Sie können überprüfen, ob dieser Prozess funktioniert, indem Sie die Synchronisierungsdienst-Konsole öffnen und prüfen, ob Exportaufträge ausgeführt werden:
Notfallwiederherstellung
Ein Teil des Implementierungsdesigns besteht darin, einen Plan für den Fall einer Katastrophe zu erstellen, bei der der Sync-Server ausfällt. Es stehen mehrere Modelle zur Verfügung, und die Wahl des Modells ist von verschiedenen Faktoren abhängig:
- Wie hoch ist die Toleranz, wenn während der Ausfallzeit keine Objektänderungen in Microsoft Entra durchgeführt werden können?
- Ist es bei der Verwendung der Kennwortsynchronisierung für die Benutzer akzeptabel, dass sie in Microsoft Entra ihr altes Kennwort verwenden müssen, wenn sie ihr lokales Kennwort ändern?
- Besteht eine Abhängigkeit von Echtzeitvorgängen, beispielsweise dem Kennwortrückschreiben?
Abhängig von Ihren Antworten auf diese Fragen und Ihrer Organisationsrichtlinie kann eine der folgenden Strategien implementiert werden:
- Führen Sie ggf. eine Neuerstellung durch.
- Richten Sie einen Reserveserver im Standbymodus ein, auch bezeichnet als Stagingmodus.
- Verwenden Sie virtuelle Computer.
Wenn Sie nicht die integrierte SQL Express-Datenbank verwenden, sollten Sie auch den Abschnitt Hochverfügbarkeit von SQL lesen.
Neuerstellung, falls erforderlich
Eine sinnvolle Strategie besteht darin, eine ggf. erforderliche Neuerstellung des Servers zu planen. In der Regel sind die Installation des Synchronisierungsmoduls und der anfängliche Import sowie die Synchronisierung innerhalb weniger Stunden abgeschlossen. Wenn kein Ersatzserver verfügbar ist, kann vorübergehend ein Domänencontroller zum Hosten des Synchronisierungsmoduls eingesetzt werden.
Der Synchronisierungs-Engine-Server speichert keine Informationen über den Status der Objekte, sodass die Datenbank aus den Daten in Active Directory und Microsoft Entra ID neu erstellt werden kann. Das Attribut sourceAnchor wird verwendet, um die lokalen Objekte und die Cloudobjekte miteinander zu verknüpfen. Wenn Sie den Server mit vorhandenen lokalen Objekten und Cloudobjekten neu erstellen, werden diese Objekte bei der Neuinstallation vom Synchronisierungsmodul erneut abgeglichen. Dokumentieren und speichern Sie die am Server vorgenommenen Änderungen, beispielsweise die Filter- und Synchronisierungsregeln. Diese benutzerdefinierten Konfigurationen müssen erneut angewendet werden, bevor Sie die Synchronisierung starten.
Stellen Sie einen Reservestandbyserver bereit (Stagingmodus)
Wenn Sie über eine komplexere Umgebung verfügen, wird empfohlen, mindestens einen Standbyserver einzurichten. Bei der Installation können Sie festlegen, dass der Server in den Stagingmodusversetzt werden soll.
Weitere Informationen finden Sie unter Stagingmodus.
Einsatz virtueller Computer
Eine gängige und unterstützte Methode ist die Ausführung des Synchronisierungsmoduls auf einem virtuellen Computer. Wenn ein Problem mit dem Host vorliegt, kann das Image mit dem Synchronisierungsmodulserver zu einem anderen Server migriert werden.
Hochverfügbarkeit von SQL
Falls Sie nicht SQL Server Express (in Microsoft Entra Connect enthalten) verwenden, sollten Sie auch Hochverfügbarkeit für SQL Server in Erwägung ziehen. Zu den unterstützten Hochverfügbarkeitslösungen gehören SQL-Clustering und SQL AOA (Always On Availability Groups, Always On-Verfügbarkeitsgruppen). Nicht unterstützt wird z.B. die Spiegelung.
Unterstützung für SQL AOA wurde in Version 1.1.524.0 zu Microsoft Entra Connect hinzugefügt. Vor der Installation von Microsoft Entra Connect müssen Sie SQL AOA aktivieren. Während der Installation erkennt Microsoft Entra Connect, ob die bereitgestellte SQL-Instanz für SQL AOA aktiviert ist. Wenn SQL AOA aktiviert ist, prüft Microsoft Entra Connect darüber hinaus, ob SQL AOA für die Verwendung synchroner oder asynchroner Replikationen konfiguriert ist. Beim Einrichten des Verfügbarkeitsgruppenlisteners muss die Eigenschaft „RegisterAllProvidersIP“ auf „0“ festgelegt werden. Microsoft Entra Connect verwendet derzeit SQL Native Client, um eine Verbindung zu SQL herzustellen, und SQL Native Client unterstützt die Verwendung der MultiSubNetFailover-Eigenschaft nicht.
Anhang CSAnalyzer
Finden Sie im Abschnitt Überprüfen Anleitungen zum Verwenden dieses Skripts.
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
}
Nächste Schritte
Übersichtsthemen