สิ่งนี้อาจทำได้ค่อนข้างทั่วไปเนื่องจากมีคำสั่งอื่นที่อาจเรียกใช้ ตัวอย่างเช่น มักใช้ removeLingeringObject
แหล่งที่มา: https://github.com/edemilliere/ADSI/blob/master/Invoke-ADSDPropagation.ps1
ฟังก์ชันเรียกใช้-ADSDPropagation{
<#
.เรื่องย่อ
เรียกใช้งาน SDProp บน PDCe
.คำอธิบาย
โทร LDAP เพื่อทริกเกอร์ SDProp
.ตัวอย่าง
เรียกใช้ ADSDPropagation
ตามค่าเริ่มต้น จะใช้ RunProtectAdminGroupsTask
.ตัวอย่าง
เรียกใช้ ADSDPropagation -TaskName FixUpInheritance
ใช้ชื่องาน FixUpInheritance ดั้งเดิมสำหรับ Windows Server 2003 และรุ่นก่อนหน้า
.PARAMETER ชื่องาน
ชื่องานที่จะใช้
- FixUpInheritance สำหรับระบบปฏิบัติการรุ่นเก่า
- RunProtectAdminGroupsTask สำหรับระบบปฏิบัติการล่าสุด
.อินพุต
.เอาต์พุต
.หมายเหตุ
คุณสามารถติดตามความคืบหน้าด้วย:
Get-Counter -Counter '\directoryservices(ntds)\ds security descriptor propagator รันไทม์คิว' | Select-Object -ExpandProperty CounterSamples | เลือกวัตถุ - ขยายคุณสมบัติ CookedValue
.ลิงค์
http://ItForDummies.net
#>
[CmdletBinding()]
พาราม(
[พารามิเตอร์(บังคับ=$เท็จ,
HelpMessage='ชื่อโดเมนที่จะบังคับให้ SDProp ทำงาน'
ตำแหน่ง=0)]
[ValidateScript({ทดสอบการเชื่อมต่อ -ComputerName $_ -Count 2 -Quiet})]
[String]$DomainName = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().Name,
[ValidateSet('RunProtectAdminGroupsTask','FixUpInheritance')]
[String]$TaskName = 'RunProtectAdminGroupsTask'
)
พยายาม{
$DomainContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext('โดเมน',$DomainName)
$DomainObject = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($DomainContext)
เขียนรายละเอียด - ข้อความ "ตรวจพบ PDCe คือ $($DomainObject.PdcRoleOwner.Name)"
$RootDSE = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$($DomainObject.PdcRoleOwner.Name)/RootDSE")
$RootDSE.UsePropertyCache = $เท็จ
$RootDSE.Put($TaskName, "1") # RunProtectAdminGroupsTask & fixupinheritance
$RootDSE.SetInfo()
}
จับ{
โยน "ไม่สามารถเรียกใช้ SDProp บน $($DomainObject.PdcRoleOwner.Name) !"
}
}