Script di PowerShell per trovare utenti AD con adminCount> 0


17

Di recente ho scoperto la funzione "adminSDHolder" di Active Directory. Ho bisogno di un modo rapido per identificare tutti gli utenti che ne saranno interessati, vale a dire uno script per scaricare gli account utente.

Risposte:


18

È possibile utilizzare questo script PowerShell per restituire gli utenti con un adminCount maggiore di 0, il che significa che sono interessati dalla funzionalità adminSDHolder. Avrai bisogno del modulo AD per PowerShell installato, fornito con RSAT.

import-module activedirectory

get-aduser -Filter {admincount -gt 0} -Properties adminCount -ResultSetSize $null      

4
Ecco un metodo più pulito per fare la stessa cosa: get-aduser -filter {admincount -gt 0} -Properties admincount -ResultSetSize $ null
jbsmith

inoltre potresti creare un filtro dsquery per fare la stessa cosa
tony roth il

2
@tony - Potresti, ma l'OP ha chiesto specificamente uno script PowerShell.
MDMarra,


2

Questa è una variante dell'ottima risposta di MDMarra.

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

Questo utilizza -LDAPFilter invece di -Filter . Alcune persone preferiscono utilizzare la sintassi del filtro LDAP perché è portatile in molti diversi tipi di applicazioni.

Si noti che Filter e LDAPFilter hanno caratteristiche prestazionali simili poiché il filtro viene eseguito sul lato server. Quando si eseguono query su directory di grandi dimensioni, provare sempre a eseguire il filtro direttamente in questo modo, anziché utilizzare Where-Objectciò che provocherebbe il download di tutti gli oggetti prima del filtro. Questo è descritto in dettaglio nell'articolo TechNet Filter vs. Where-Object .


Sono un utente frequente, -LDAPFilterquindi grazie per averlo menzionato e chiarito i suoi benefici.
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"
}
}

1
Ciò modifica le autorizzazioni che non è ciò che l'OP stava cercando. Inoltre, la modifica delle autorizzazioni per questi oggetti non farà molto. La prossima volta che viene eseguito il processo AdminSDHolder, ripristinerà le loro autorizzazioni.
MDMarra,

3
Ecco i draghi.
Tom O'Connor,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.