PowerShell-Skript zum Suchen von AD-Benutzern mit adminCount> 0

17

Ich habe kürzlich die Funktion "adminSDHolder" von Active Directory entdeckt. Ich brauche einen schnellen Weg, um alle Benutzer zu identifizieren, die davon betroffen sind, nämlich ein Skript, um die Benutzerkonten zu sichern.

Chris S
quelle

Antworten:

18

Mit diesem Powershell-Skript können Sie Benutzer zurückgeben, deren adminCount größer als 0 ist. Dies bedeutet, dass sie von der Funktion adminSDHolder betroffen sind. Sie benötigen das AD-Modul für PowerShell, das mit RSAT geliefert wird.

import-module activedirectory

get-aduser -Filter {admincount -gt 0} -Properties adminCount -ResultSetSize $null      
MDMarra
quelle
4
Hier ist eine sauberere Methode, um dasselbe zu tun: get-aduser -filter {admincount -gt 0} -Properties admincount -ResultSetSize $ null
jbsmith
Sie können auch einen Dsquery-Filter erstellen, um dasselbe zu tun
Tony Roth
2
@tony - Sie könnten, aber das OP fragte speziell nach einem PowerShell-Skript.
MDMarra
3
([adsisearcher]"(AdminCount=1)").findall()
FSailer
quelle
2

Dies ist eine Variante der hervorragenden Antwort von MDMarra.

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

Dies verwendet -LDAPFilter anstelle von -Filter . Einige Leute bevorzugen die Verwendung der LDAP-Filtersyntax, da diese für viele verschiedene Arten von Anwendungen portierbar ist.

Beachten Sie, dass Filter und LDAPFilter ähnliche Leistungsmerkmale aufweisen, da der Filter auf der Serverseite ausgeführt wird. Versuchen Sie beim Abfragen großer Verzeichnisse immer, direkt auf diese Weise zu filtern, anstatt zu verwenden Where-Object, dass alle Objekte vor dem Filtern heruntergeladen werden. Dies wird im TechNet-Artikel Filter vs. Where-Object ausführlich beschrieben .

Nic
quelle
Ich bin häufiger Benutzer von -LDAPFilterso vielen Dank für die Erwähnung und Klärung der Vorteile.
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
quelle
1
Dadurch werden Berechtigungen geändert, nach denen das OP nicht gesucht hat. Auch das Ändern der Berechtigungen für diese Objekte kann nicht viel bewirken. Wenn der AdminSDHolder-Prozess das nächste Mal ausgeführt wird, werden die Berechtigungen zurückgesetzt.
MDMarra
3
Hier seid Drachen.
Tom O'Connor