Это можно сделать несколько общим из-за того, что есть другие команды, которые могут быть запущены. Например, обычно используется removeLingeringObject.
Источник: https://github.com/edemilliere/ADSI/blob/master/Invoke-ADSDPropagation.ps1
Функция Invoke-ADSDPropagation{
<#
.СИНОПСИС
Вызовите задачу SDProp на PDCe.
.ОПИСАНИЕ
Выполните вызов LDAP, чтобы активировать SDProp.
.ПРИМЕР
Invoke-ADSDPropagation
По умолчанию используется RunProtectAdminGroupsTask.
.ПРИМЕР
Invoke-ADSDPropagation -TaskName FixUpInheritance
Используйте устаревшее имя задачи FixUpInheritance для Windows Server 2003 и более ранних версий.
.ПАРАМЕТР ИмяЗадачи
Имя используемой задачи.
- FixUpInheritance для устаревшей ОС
- RunProtectAdminGroupsTask для последней ОС
.ВХОДЫ
.ВЫХОДЫ
.ПРИМЕЧАНИЯ
Вы можете отслеживать прогресс с помощью:
Get-Counter -Counter '\directoryservices(ntds)\ds очередь выполнения распространителя дескрипторов безопасности' | Select-Object -ExpandProperty CounterSamples | Select-Object -ExpandProperty CookedValue
.СОЕДИНЯТЬ
http://ItForDummies.net
#>
[Привязка командлета()]
Парам(
[Параметр(обязательный=$false,
HelpMessage='Имя домена, где принудительно запустить SDProp',
Позиция=0)]
[ValidateScript({Test-Connection -ComputerName $_ -Count 2 -Quiet})]
[Строка]$DomainName = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().Name,
[ValidateSet('RunProtectAdminGroupsTask','FixUpInheritance')]
[String]$TaskName = 'RunProtectAdminGroupsTask'
)
пытаться{
$DomainContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext('domain',$DomainName)
$DomainObject = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($DomainContext)
Write-Verbose -Message "Обнаружен PDCe $($DomainObject.PdcRoleOwner.Name)".
$RootDSE = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$($DomainObject.PdcRoleOwner.Name)/RootDSE")
$RootDSE.UsePropertyCache = $false
$RootDSE.Put($TaskName, "1") # RunProtectAdminGroupsTask & fixupinheritance
$RootDSE.SetInfo()
}
ловить{
throw "Не удается вызвать SDProp для $($DomainObject.PdcRoleOwner.Name)!"
}
}