Skrypt PowerShell do wyszukiwania użytkowników AD z adminCount> 0

17

Niedawno odkryłem funkcję „adminSDHolder” w usłudze Active Directory. Potrzebuję szybkiego sposobu zidentyfikowania wszystkich użytkowników, których to dotknie, a mianowicie skryptu do zrzucenia kont użytkowników.

Chris S.
źródło

Odpowiedzi:

18

Możesz użyć tego skryptu PowerShell, aby zwrócić użytkowników, którzy mają konto adminCount większe niż 0, co oznacza, że ​​wpływa na nich funkcja adminSDHolder. Musisz zainstalować moduł AD dla PowerShell, który jest dostarczany z RSAT.

import-module activedirectory

get-aduser -Filter {admincount -gt 0} -Properties adminCount -ResultSetSize $null      
MDMarra
źródło
4
Oto czystsza metoda robienia tego samego: get-aduser -filter {admincount -gt 0} -Properties admincount -ResultSetSize $ null
jbsmith
możesz także utworzyć filtr dsquery, aby zrobić to samo
Tony Roth
2
@tony - Możesz, ale OP poprosił specjalnie o skrypt PowerShell.
MDMarra,
3
([adsisearcher]"(AdminCount=1)").findall()
FSailer
źródło
2

Jest to wariant doskonałej odpowiedzi MDMarra.

Import-Module ActiveDirectory
Get-ADUser -LDAPFilter "(admincount>0)" -Properties adminCount

Używa -LDAPFilter zamiast -Filter . Niektóre osoby wolą używać składni filtru LDAP, ponieważ jest on przenośny w wielu różnych typach aplikacji.

Zauważ, że Filter i LDAPFilter mają podobną charakterystykę wydajności, ponieważ filtr jest wykonywany po stronie serwera. Podczas odpytywania dużych katalogów zawsze staraj się filtrować bezpośrednio w ten sposób, zamiast używać tego, Where-Objectco spowodowałoby pobranie wszystkich obiektów przed filtrowaniem. Jest to szczegółowo opisane w artykule TechNet Filtr vs. gdzie-obiekt .

Nic
źródło
Jestem częstym użytkownikiem, -LDAPFilterwięc dziękuję za wzmiankę o tym i wyjaśnienie korzyści.
jscott,
-2
## 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"
}
}
Ryan Erb
źródło
1
To zmienia uprawnienia , które jest nie to, co PO szukałem. Również zmiana uprawnień do tych obiektów nie zrobi wiele. Następnym razem, gdy uruchomi się proces AdminSDHolder, zresetuje ich uprawnienia.
MDMarra,
3
Oto smoki.
Tom O'Connor