如何使用USNChanged属性和HighestCommittedUsn C#检索所有AD对象

问题描述

我正在尝试使用USNChanged进行某种AD同步,并使用USNChanged属性检索所有对象,但是整个过程对我来说有点神秘。

我有一个PowerShell代码,基本上可以满足我的需要,但是我想知道是否有人可以帮助我将其转换为C#代码。我会很感激的。

PS代码

$highestCommittedUSN = (Get-ADRootDSE -server $preferredDC -properties * | select-object -property highestCommittedUSN).highestCommittedUSN
$lowUSN = 0
$highUSN = 0
for ($i=1000; $i -le $highestCommittedUSN ; $i=$i+10000 ) {
    [system.gc]::Collect()
    $error.clear() 
    $highUSN=$i
    write-host "(&(usnChanged>=$lowUSN)(usnChanged<$highUSN))" 
    $adobjects = (Get-Adobject -LDAPFilter "(&(usnChanged>=$lowUSN)(usnChanged<=$highUSN))" -Server $preferredDC -Properties * -IncludeDeletedobjects)
    ($adobjects).count
    if ($error.count -lt 0) {
            for ($j=$lowUSN; $j -le 490767138; $j=$j+1 ) {
                ">>>  " + $j
                $adobjects = Get-Adobject -LDAPFilter "(usnChanged=$j)" -Server "DCName" -Properties * -IncludeDeletedobjects
                $adobjects | ConvertTo-Json | Out-File -FilePath ff.json -Append

                if ($error.count -ge 1) {
                    "There is problem with this USN " + $j + " on " + $preferredDC | Out-File -FilePath badUSN.txt -Append
                    
                    $adobjects.distinguishedname

                    }
                $adobjects.distinguishedname
            }
        }
        $lowUSN=$highUSN
        $adobjects.distinguishedname       
        $adobjects = $null
        $error.clear()
    }

我确实在这里找到了类似的问题:How to read "uSNChanged" property using C#,但是我不确定是否可以使用该答案。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)