Microsoft Entra Connect: Hazırlama sunucusu ve olağanüstü durum kurtarma

Sunucu hazırlama modundayken yapılandırmada değişiklikler yapabilir ve sunucuyu etkin duruma getirmeden önce değişikliklerin önizlemesine bakabilirsiniz. Ayrıca tüm değişiklikleri üretim ortamınızda yapmadan önce bu değişikliklerin beklendiği gibi olduğunu doğrulamak için tam içeri aktarma ve tam eşitleme çalıştırmanıza olanak tanır.

Hazırlama modu

Hazırlama modu aşağıdakiler gibi çeşitli senaryolarda kullanılabilir:

  • Yüksek kullanılabilirlik.
  • Yeni yapılandırma değişikliklerini test etme ve dağıtma.
  • Yeni bir sunucu tanıtma ve eskisinin yetkisini alma.

Yükleme sırasında, hazırlama modunda olacak sunucuyu seçebilirsiniz. Bu eylem, sunucuyu içeri aktarma ve eşitleme için etkin hale getirir, ancak dışarı aktarma çalıştırmaz. Hazırlık modundaki bir sunucu, yükleme sırasında bu özellikleri seçmiş olsanız bile parola eşitleme veya parola geri yazma çalıştırmıyor. Hazırlama modunu devre dışı bırakırsanız, sunucu dışarı aktarmaya başlar, parola eşitlemeyi etkinleştirir ve parola geri yazmayı etkinleştirir.

Not

Parola Karması Eşitleme özelliği etkinleştirilmiş bir Microsoft Entra Connect özelliğine sahip olduğunuzu varsayalım. Hazırlama modunu etkinleştirdiğinizde, sunucu şirket içi AD'den parola değişikliklerini eşitlemeyi durdurur. Hazırlama modunu devre dışı bıraktığınızda, sunucu parola değişikliklerini son kaldığı yerden eşitlemeye devam eder. Sunucu uzun bir süre için hazırlama modunda bırakılırsa, sunucunun zaman aralığında gerçekleşen tüm parola değişikliklerini eşitlemesi biraz zaman alabilir.

Eşitleme hizmeti yöneticisini kullanarak dışarı aktarmayı yine de zorlayabilirsiniz.

Hazırlama modundaki bir sunucu Active Directory ve Microsoft Entra Id'den değişiklikler almaya devam eder ve hata durumunda başka bir sunucunun sorumluluklarını hızla devralabilir. Birincil sunucunuzda yapılandırma değişiklikleri yaparsanız, aynı değişiklikleri hazırlama modunda sunucuda yapmak sizin sorumluluğunuzdadır.

Eski eşitleme teknolojileri hakkında bilgi sahibi olanlar için, sunucunun kendi SQL veritabanı olduğundan hazırlama modu farklıdır. Bu mimari, hazırlama modu sunucusunun farklı bir veri merkezinde bulunmasına olanak tanır.

Sunucunun yapılandırmasını doğrulama

Bu yöntemi uygulamak için şu adımları izleyin:

  1. Hazırlama
  2. Yapılandırma
  3. İçeri Aktarma ve Eşitleme
  4. Doğrulamak
  5. Etkin sunucuyu değiştirme

Hazırlama

  1. Microsoft Entra Connect'i yükleyin, hazırlama modunu seçin ve yükleme sihirbazının son sayfasında eşitlemeyi başlat'ın seçimini kaldırın. Bu mod, eşitleme altyapısını el ile çalıştırmanızı sağlar. Ekran görüntüsü, Microsoft Entra Connect iletişim kutusundaki Yapılandırmaya hazır sayfasını gösterir.
  2. Oturumu kapatın/oturum açın ve başlat menüsünde Eşitleme Hizmeti'ni seçin.

Yapılandırma

Birincil sunucuda özel değişiklikler yaptıysanız ve yapılandırmayı hazırlama sunucusuyla karşılaştırmak istiyorsanız, Microsoft Entra Connect yapılandırma belgeleyicisini kullanın.

İçeri Aktarma ve Eşitleme

  1. Bağlayıcılar'ı seçin ve Hizmetler türüne sahip ilk Bağlayıcıyı Active Directory Etki Alanı. Çalıştır'a tıklayın, Tam içeri aktarma'yı ve Tamam'ı seçin. Bu tür tüm Bağlayıcılar için bu adımları uygulayın.
  2. Microsoft Entra ID (Microsoft) türündeki Bağlayıcıyı seçin. Çalıştır'a tıklayın, Tam içeri aktarma'yı ve Tamam'ı seçin.
  3. Bağlayıcılar sekmesinin hala seçili olduğundan emin olun. Active Directory Etki Alanı Hizmetleri türüne sahip her Bağlayıcı için Çalıştır'a tıklayın, Delta Eşitleme'yi seçin ve Tamam'ı seçin.
  4. Microsoft Entra ID (Microsoft) türündeki Bağlayıcıyı seçin. Çalıştır'a tıklayın, Delta Eşitleme'yi ve Tamam'ı seçin.

Dışarı aktarma değişikliklerini Microsoft Entra Id ve şirket içi AD'de (Exchange karma dağıtımı kullanıyorsanız) hazırlamış oldunuz. Sonraki adımlar, dizinlere dışarı aktarma işlemini başlatmadan önce nelerin değişeceğini incelemenize olanak sağlar.

Doğrulama

  1. Bir cmd istemi başlatın ve %ProgramFiles%\Microsoft Azure AD Sync\bin
  2. Çalıştırma: csexport "Name of Connector" %temp%\export.xml /f:x Bağlayıcının adı Eşitleme Hizmeti'nde bulunabilir. Microsoft Entra Id için "contoso.com – Microsoft Entra Id" benzeri bir ada sahiptir.
  3. Çalıştır: CSExportAnalyzer %temp%\export.xml > %temp%\export.csv %temp% içinde microsoft Excel'de inceleyebileceğiniz export.csv adlı bir dosyanız var. Bu dosya, dışarı aktarılacak olan tüm değişiklikleri içerir.
  4. Verilerde veya yapılandırmada gerekli değişiklikleri yapın ve dışarı aktarılacak değişiklikler beklenene kadar bu adımları yeniden çalıştırın (İçeri Aktar ve Eşitle ve Doğrula).

export.csv dosyasını anlama

Dosyanın çoğu kendi kendine açıklayıcıdır. İçeriği anlamak için bazı kısaltmalar:

  • OMODT – Nesne Değiştirme Türü. Nesne düzeyindeki işlemin Ekle, Güncelleştir veya Sil olduğunu gösterir.
  • AMODT – Öznitelik Değiştirme Türü. Öznitelik düzeyindeki işlemin Ekle, Güncelleştir veya sil olduğunu gösterir.

Ortak tanımlayıcıları alma

export.csv dosyası, dışarı aktarılacak tüm değişiklikleri içerir. Her satır, bağlayıcı alanında bir nesnenin değişikliğine karşılık gelir ve nesne DN özniteliğiyle tanımlanır. DN özniteliği, bağlayıcı alanında bir nesneye atanmış benzersiz bir tanımlayıcıdır. çözümlenecek export.csv çok sayıda satırınız/değişikliğiniz olduğunda, değişikliklerin yalnızca DN özniteliğine göre hangi nesnelere yönelik olduğunu bulmak zor olabilir. Değişiklikleri çözümleme işlemini basitleştirmek için PowerShell betiğini kullanın csanalyzer.ps1 . Betik, nesnelerin ortak tanımlayıcılarını (örneğin, displayName, userPrincipalName) alır. Betiği kullanmak için:

  1. CSAnalyzer bölümündeki PowerShell betiğini adlı csanalyzer.ps1bir dosyaya kopyalayın.
  2. Bir PowerShell penceresi açın ve PowerShell betiğini oluşturduğunuz klasöre göz atın.
  3. Komutunu çalıştırın: .\csanalyzer.ps1 -xmltoimport %temp%\export.xml.
  4. Artık Microsoft Excel'de incelenebilen processedusers1.csv adlı bir dosyanız var. Dosyanın DN özniteliğinden ortak tanımlayıcılara (örneğin, displayName ve userPrincipalName) bir eşleme sağladığını unutmayın. Şu anda dışarı aktarılacak olan gerçek öznitelik değişikliklerini içermez.

Etkin sunucuyu değiştirme

Microsoft Entra Connect, bir sunucunun eşitlenen AD nesnelerine değişiklikleri etkin bir şekilde Microsoft Entra ID'ye göndermesi ve pasif sunucunun bu değişiklikleri devralması gereken durumda hazırlaması durumunda Etkin-Pasif Yüksek Kullanılabilirlik kurulumunda ayarlanabilir.

Not

Microsoft Entra Connect'i Active-Active kurulumunda ayarlayamazsınız. Aktif-Pasif olmalı. Yalnızca 1 Microsoft Entra Connect sunucusunun değişiklikleri etkin bir şekilde eşitlediğinden emin olun.

Microsoft Entra Connect Sync sunucusunu Hazırlama Modunda ayarlama hakkında daha fazla bilgi için bkz . hazırlama modu

Microsoft Entra Connect sürümünü yükseltme veya Eşitleme Hizmeti'nin sistem durumu hizmetinin güncel bilgileri almadığını belirten bir uyarı alma gibi çeşitli nedenlerle Eşitleme Sunucularının yük devretmesini gerçekleştirmeniz gerekebilir. Bu olaylarda, aşağıdaki adımları izleyerek Eşitleme Sunucularının yük devretmesini denemeniz gerekir.

Önemli

Aşağıdaki koşullar karşılanmazsa, hazırlama sunucusunun etkin moda geçmesi eşitlemede ciddi bir etkiye sahip olabilir. Önlem olarak, bu işlemi yapmadan önce her zaman bir ilk eşitleme döngüsü çalıştırın ve Bekleyen dışarı aktarmaları doğrulayın .

Önkoşullar

  • Şu anda etkin olan bir Microsoft Entra Connect Eşitleme Sunucusu
  • Bir hazırlama Microsoft Entra Connect Eşitleme Sunucusu
  • Hazırlama sunucusunda eşitleme zamanlayıcısı etkindir ve yakın zamanda Microsoft Entra Kimliği ile eşitlenmiştir
  • Eşitleme kurallarında veya eşitleme kapsamında herhangi bir güncelleştirme olması durumunda, ilk eşitleme döngüsünü çalıştırın
  • Microsoft Entra Connect Eşitleme Sunucunuzun yanlışlıkla silmeleri önlemek için yapılandırıldığını onaylayın
  • Bekleyen dışarı aktarmaları doğrulayın ve önemli güncelleştirmeler olmadığını ve bu güncelleştirmelerin beklendiğini onaylayın
  • Microsoft Entra Connect Health portalında sunucuyu denetleyerek Microsoft Entra Connect Health aracısının güncelleştirilip güncelleştirilmediğini denetleyin
  • Hazırlama sunucusunu etkin olarak değiştirmeden önce geçerli etkin sunucuyu hazırlama moduna geçirin

Şu anda Etkin Eşitleme Sunucusu'nu hazırlama moduna değiştirme

Bu işlem boyunca herhangi bir zamanda yalnızca bir Eşitleme Sunucusunun değişiklikleri eşitlediğinden emin olmamız gerekir. Etkin durumdaki Eşitleme Sunucusuna ulaşılabilir durumdaysa, hazırlama moduna taşımak için aşağıdaki adımları gerçekleştirebilirsiniz. Erişilemiyorsa, sunucuyu kapatarak veya giden bağlantılardan yalıtarak sunucunun veya VM'nin beklenmedik bir şekilde yeniden erişim kazanmadığından emin olun.

  1. Şu anda etkin olan Microsoft Entra Connect sunucusu için Microsoft Entra Connect sihirbazını açın ve "Hazırlama modunu yapılandır" seçeneğine ve ardından İleri'ye tıklayın:

Etkin Microsoft Entra Connect iletişim kutusunda Hazırlama Modu'nu vurgulanmış olarak gösteren ekran görüntüsü.

  1. Karma Kimlik Yöneticisi kimlik bilgileriyle Microsoft Entra Id'de oturum açmanız gerekir:

Etkin Microsoft Entra Connect iletişim kutusunda Oturum açma istemini gösteren ekran görüntüsü.

  1. Hazırlama Modu kutusunu işaretleyin ve İleri'ye tıklayın:

Etkin Microsoft Entra Connect iletişim kutusundaki Hazırlama Modu yapılandırmasını gösteren ekran görüntüsü.

  1. Microsoft Entra Connect sunucusu yüklü bileşenleri denetler ve yapılandırma değişikliği tamamlandığında eşitleme işlemini başlatmak isteyip istemediğinizi sorar:

Etkin Microsoft Entra Connect iletişim kutusunda Yapılandırmaya Hazır ekranını gösteren ekran görüntüsü.

Sunucu hazırlama modunda olduğundan Microsoft Entra Id'de değişiklik yazmaz, ancak AD'deki değişiklikleri Bağlayıcı Alanı'nda yazmaya hazır olarak tutar. Sunucu için eşitleme işlemini Hazırlama Modu'nda bırakmanız önerilir, bu nedenle etkin hale gelirse, hızlı bir şekilde devralır ve kapsamdaki Active Directory / Microsoft Entra nesnelerinin geçerli durumuna yetişmek için büyük bir eşitleme yapması gerekmez.

  1. Eşitleme işlemini başlatmayı seçtikten ve Yapılandır'a tıkladıktan sonra, Microsoft Entra Connect sunucusu Hazırlama Modu'na yapılandırılır. Tamamlandıktan sonra, Hazırlama Modu'nun etkinleştirildiğini onaylayan bir ekran istenir. Bitirmek için Çıkış'a tıklayabilirsiniz.

  2. Aşağıdaki komutları kullanarak Windows PowerShell'i açarak, "ADSync" modülünü yükleyerek ve ADSync Scheduler yapılandırmasını doğrulayarak sunucunun Hazırlama Modu'nda başarılı olduğunu doğrulayabilirsiniz:

Import-Module ADSync
Get-ADSyncScheduler

Sonuçlardan "StagingModeEnabled" ayarının değerini doğrulayın. Sunucu hazırlama moduna başarıyla geçirildiyse, aşağıdaki örnekte olduğu gibi bu ayarın değeri True olmalıdır:

Etkin Microsoft Entra Connect iletişim kutusundaki Eşitleme Hizmeti konsolunu gösteren ekran görüntüsü.

Geçerli Hazırlama Eşitleme sunucusunu etkin moda değiştirme

Bu noktada, tüm Microsoft Entra Connect Eşitleme Sunucularımızın hazırlama modunda olması ve değişiklikleri dışarı aktarmaması gerekir. Artık Hazırlama Eşitleme Sunucumuzu Etkin moda taşıyabilir ve değişiklikleri etkin bir şekilde eşitleyebiliriz.

  1. Şimdi, başlangıçta Hazırlama Modunda olan Microsoft Entra Connect sunucusuna gidin ve Microsoft Entra Connect sihirbazını açın.

"Hazırlama modunu yapılandır" seçeneğine tıklayın ve İleri'ye tıklayın:

Hazırlama Microsoft Entra Connect iletişim kutusunda Hazırlama Modu'nu vurgulanmış olarak gösteren ekran görüntüsü.

Sihirbazın en altındaki ileti, bu sunucunun Hazırlama Modu'nda olduğunu gösterir.

  1. Microsoft Entra Id'de oturum açın, ardından Hazırlama Modu ekranına gidin.

Hazırlama Modu kutusunun işaretini kaldırın ve İleri'ye tıklayın.

Microsoft Entra Connect Hazırlama iletişim kutusunda Hazırlama Modu yapılandırmasını gösteren ekran görüntüsü.

Bu sayfadaki uyarıya göre, başka bir Microsoft Entra Connect sunucusunun etkin olarak eşitlenmediğinden emin olmak önemlidir.

Herhangi bir zamanda yalnızca bir etkin Microsoft Entra Connect Sync sunucusu olmalıdır.

  1. Eşitleme işlemini başlatmanız istendiğinde, bu kutuyu işaretleyin ve Yapılandır'a tıklayın:

Microsoft Entra Connect Hazırlama iletişim kutusunda Yapılandırmaya Hazır ekranını gösteren ekran görüntüsü.

  1. İşlem tamamlandıktan sonra, bitirmek için Çıkış'a tıklayabileceğiniz aşağıdaki onay ekranını almalısınız:

Ekran görüntüsü, Hazırlama Microsoft Entra Connect iletişim kutusundaki Onay ekranını gösterir.

  1. Eşitleme Hizmeti Konsolu'nu açıp dışarı aktarma işlerinin çalışıp çalışmadığını denetleyerek bu işlemin çalıştığını onaylayabilirsiniz:

Microsoft Entra Connect hazırlama iletişim kutusundaki Eşitleme Hizmeti konsolunu gösteren ekran görüntüsü.

Olağanüstü durum kurtarma

Uygulama tasarımının bir parçası, eşitleme sunucusunu kaybetmeniz durumunda bir olağanüstü durum yaşanması durumunda ne yapacağınızı planlamaktır. Kullanılacak farklı modeller vardır ve hangisinin kullanılacağı aşağıdakiler gibi çeşitli faktörlere bağlıdır:

  • Kapalı kalma süresi boyunca Microsoft Entra Id'de nesnelerde değişiklik yapamamaya karşı toleransınız nedir?
  • Parola eşitleme kullanıyorsanız, kullanıcılar parolalarını şirket içinde değiştirmeleri durumda Microsoft Entra ID'de eski parolalarını kullanmak zorunda olmayı kabul ediyorlar mı?
  • Parola geri yazma gibi gerçek zamanlı işlemlere bağımlılığınız var mı?

Bu soruların yanıtlarına ve kuruluşunuzun ilkesine bağlı olarak aşağıdaki stratejilerden biri uygulanabilir:

  • Gerektiğinde yeniden oluşturun.
  • Hazırlama modu olarak bilinen yedek bir hazır bekleyen sunucuya sahip olun.
  • Sanal makineleri kullanın.

Yerleşik SQL Express veritabanını kullanmıyorsanız SQL Yüksek Kullanılabilirlik bölümünü de gözden geçirmeniz gerekir.

Gerektiğinde yeniden derleme

Uygun bir strateji, gerektiğinde sunucunun yeniden oluşturulmasını planlamaktır. Genellikle, eşitleme altyapısını yükleme ve ilk içeri aktarma ve eşitleme işlemi birkaç saat içinde tamamlanabilir. Kullanılabilir yedek sunucu yoksa, eşitleme altyapısını barındırmak için geçici olarak bir etki alanı denetleyicisi kullanmak mümkündür.

Eşitleme altyapısı sunucusu nesneler hakkında herhangi bir durum depolamaz, bu nedenle veritabanı Active Directory ve Microsoft Entra Id'deki verilerden yeniden oluşturulabilir. sourceAnchor özniteliği, şirket içindeki ve buluttaki nesneleri birleştirmek için kullanılır. Sunucuyu şirket içindeki ve bulutdaki mevcut nesnelerle yeniden oluşturursanız, eşitleme altyapısı yeniden yükleme işleminde bu nesneleri yeniden eşleştirir. Belgelemeniz ve kaydetmeniz gerekenler, filtreleme ve eşitleme kuralları gibi sunucuda yapılan yapılandırma değişiklikleridir. Eşitlemeye başlamadan önce bu özel yapılandırmaların yeniden uygulanması gerekir.

Yedek bekleme sunucusuna sahip olun - hazırlama modu

Daha karmaşık bir ortamınız varsa, bir veya daha fazla hazır bekleyen sunucuya sahip olmanız önerilir. Yükleme sırasında, bir sunucunun hazırlama modunda olmasını etkinleştirebilirsiniz.

Daha fazla bilgi için bkz . hazırlama modu.

Sanal makineleri kullanma

Yaygın ve desteklenen bir yöntem, eşitleme altyapısını bir sanal makinede çalıştırmaktır. Konağın bir sorunu olması durumunda, eşitleme altyapısı sunucusuna sahip görüntü başka bir sunucuya geçirilebilir.

SQL Yüksek Kullanılabilirliği

Microsoft Entra Connect ile gelen SQL Server Express'i kullanmıyorsanız SQL Server için yüksek kullanılabilirliğin de dikkate alınması gerekir. Desteklenen yüksek kullanılabilirlik çözümleri SQL kümeleme ve AOA'dır (Always On Kullanılabilirlik Grupları). Desteklenmeyen çözümler yansıtmayı içerir.

1.1.524.0 sürümünde Microsoft Entra Connect'e SQL AOA desteği eklendi. Microsoft Entra Connect'i yüklemeden önce SQL AOA'yı etkinleştirmeniz gerekir. Yükleme sırasında Microsoft Entra Connect, sağlanan SQL örneğinin SQL AOA için etkinleştirilip etkinleştirilmediğini algılar. SQL AOA etkinleştirilirse Microsoft Entra Connect, SQL AOA'nın zaman uyumlu çoğaltmayı veya zaman uyumsuz çoğaltmayı kullanacak şekilde yapılandırılıp yapılandırılmamış olduğunu daha ayrıntılı olarak belirler. Kullanılabilirlik Grubu Dinleyicisi ayarlanırken RegisterAllProvidersIP özelliği 0 olarak ayarlanmalıdır. Microsoft Entra Connect şu anda SQL'e bağlanmak için SQL Yerel İstemcisi kullanıyor ve SQL Yerel İstemcisi, MultiSubNetFailover özelliğinin kullanımını desteklemiyor.

Ek CSAnalyzer

Bu betiğin nasıl kullanılacağını doğrulama bölümüne bakın.

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
}

Sonraki adımlar

Genel bakış konuları