답변:
이 powershell 스크립트를 사용하여 adminCount가 0보다 큰 사용자를 반환 할 수 있습니다. 이는 adminSDHolder 기능의 영향을받습니다. RSAT와 함께 제공되는 PowerShell 용 AD 모듈이 필요합니다.
import-module activedirectory
get-aduser -Filter {admincount -gt 0} -Properties adminCount -ResultSetSize $null
이것은 MDMarra의 탁월한 답변에 대한 변형입니다.
Import-Module ActiveDirectory
Get-ADUser -LDAPFilter "(admincount>0)" -Properties adminCount
이것은 -Filter 대신 -LDAPFilter 를 사용합니다 . LDAP 필터 구문은 여러 유형의 응용 프로그램간에 이식 가능하기 때문에 LDAP 필터 구문을 선호하는 사람들이 있습니다.
필터는 서버 측에서 실행되므로 필터와 LDAPFilter의 성능 특성은 비슷합니다. 큰 디렉토리를 쿼리 할 때는 필터링 Where-Object
하기 전에 모든 개체를 다운로드하게하는 것이 아니라 항상 이와 같이 직접 필터링을 시도하십시오 . 이에 대해서는 TechNet 기사 Filter vs. Where-Object 에 자세히 설명되어 있습니다.
-LDAPFilter
하므로 그것을 언급하고 이점을 분명히 해 주셔서 감사합니다.
## 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"
}
}