Script do PowerShell para encontrar usuários do AD com adminCount> 0


17

Descobri recentemente o recurso "adminSDHolder" do Active Directory. Preciso de uma maneira rápida de identificar todos os usuários que serão afetados por ele, ou seja, um script para despejar as contas de usuário.

Respostas:


18

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

import-module activedirectory

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

4
Aqui está um método mais limpa de fazer a mesma coisa: get-ADUser -filter {AdminCount -gt 0} -Properties AdminCount -ResultSetSize $ null
jbsmith

Também é possível criar um filtro dsquery para fazer a mesma coisa
tony roth

2
@tony - Você poderia, mas o OP pediu especificamente um script do PowerShell.
precisa saber é o seguinte


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átil em muitos tipos diferentes de aplicativos.

Observe que o Filter e o LDAPFilter têm características de desempenho semelhantes, pois o filtro é executado no lado do servidor. Ao consultar diretórios grandes, sempre tente filtrar diretamente dessa maneira, em vez de usar o Where-Objectque faria com que todos os objetos fossem baixados antes da filtragem. Isso é descrito em detalhes no artigo TechNet Filter vs. Where-Object .


Sou usuário frequente de -LDAPFiltermuito obrigado por mencioná-lo e esclarecer seus benefícios.
Jscott # 11/13

-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
este altera as permissões que não são o que o OP estava procurando. Além disso, alterar as permissões nesses objetos não será suficiente. Na próxima vez em que o processo AdminSDHolder for executado, ele redefinirá suas permissões.
MDMarra

3
Aqui estejam dragões.
Tom O'Connor
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.