我最近发现了Active Directory的“adminSDHolder”function。 我需要一个快速的方法来识别所有将受其影响的用户,即转储用户帐户的脚本。
您可以使用此powershell脚本来返回具有大于0的adminCount的用户,这意味着它们受adminSDHolderfunction的影响。 您需要安装PowerShell的AD模块,随RSAT一起提供。
import-module activedirectory get-aduser -Filter {admincount -gt 0} -Properties adminCount -ResultSetSize $null
([adsisearcher]"(AdminCount=1)").findall()
这是MDMarra出色的答案的变种。
Import-Module ActiveDirectory Get-ADUser -LDAPFilter "(admincount>0)" -Properties adminCount
这使用-LDAPFilter而不是-Filter 。 有些人更喜欢使用LDAPfilter语法,因为它可以在许多不同types的应用程序中移植。
请注意,Filter和LDAPFilter具有相似的性能特点,因为filter在服务器端执行。 在查询大型目录时,总是尝试像这样直接进行过滤,而不是使用Where-Object
,这会导致在过滤之前下载所有对象。 TechNet文章“ Filter vs. Where-Object”中详细介绍了这一点。
## Script name = Set-IheritablePermissionOnAllUsers.ps1 ## ## sets the "Allow inheritable permissions from parent to propagate to this ##object"check box # Contains DN of users # #$users = Get-Content C:\C:\Navdeep_DoNotDelete\variables\users.txt Get-ADgroup -LDAPFilter “(admincount=1)” | select name $users = Get-ADuser -LDAPFilter “(admincount=1)” ##Get-QADUser -SizeLimit 0 | Select-Object Name,@{n='IncludeInheritablePermissions';e={!$_.DirectoryEntry.PSBase.ObjectSecurity.AreAccessRulesProtected}} | Where {!$_.IncludeInheritablePermissions} ForEach($user in $users) { # Binding the users to DS $ou = [ADSI]("LDAP://" + $user) $sec = $ou.psbase.objectSecurity if ($sec.get_AreAccessRulesProtected()) { $isProtected = $false ## allows inheritance $preserveInheritance = $true ## preserver inhreited rules $sec.SetAccessRuleProtection($isProtected, $preserveInheritance) $ou.psbase.commitchanges() Write-Host "$user is now inherting permissions"; } else { Write-Host "$User Inheritable Permission already set" } }