Script do PowerShell para localizar usuários do AD com adminCount 0

17

Recentemente, descobri o recurso "adminSDHolder" do Active Directory. Eu preciso de uma maneira rápida de identificar todos os usuários que serão afetados por ela, ou seja, um script para despejar as contas de usuário.

    
por Chris S 24.08.2011 / 20:25

4 respostas

18

Você pode usar este script powershell para retornar os usuários que têm um adminCount maior que 0, o que significa que eles são afetados pelo recurso adminSDHolder. Você precisará do Módulo AD para o PowerShell instalado, que vem com o RSAT.

import-module activedirectory

get-aduser -Filter {admincount -gt 0} -Properties adminCount -ResultSetSize $null      
    
por 24.08.2011 / 20:26
3
([adsisearcher]"(AdminCount=1)").findall()
    
por 27.09.2012 / 07:07
2

Esta é uma variante da excelente resposta do MDMarra.

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

Isso usa -LDAPFilter em vez de -Filter . Algumas pessoas preferem usar a sintaxe do filtro LDAP porque é portável em muitos tipos diferentes de aplicativos.

Observe que o Filter e o LDAPFilter possuem características de desempenho semelhantes, já que o filtro é executado no lado do servidor. Ao consultar diretórios grandes, sempre tente fazer a filtragem diretamente, em vez de usar Where-Object , o que faria com que todos os objetos fossem baixados antes da filtragem. Isso é descrito em detalhes no artigo da TechNet Filter vs. Where. Objeto .

    
por 11.10.2013 / 03:43
-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"
}
}
    
por 26.09.2012 / 01:30