Skrip PowerShell untuk menemukan pengguna AD dengan adminCount> 0

17

Saya baru-baru ini menemukan fitur "adminSDHolder" dari Active Directory. Saya perlu cara cepat untuk mengidentifikasi semua pengguna yang akan terpengaruh olehnya, yaitu skrip untuk membuang akun pengguna.

Chris S
sumber

Jawaban:

18

Anda dapat menggunakan skrip powershell ini untuk mengembalikan pengguna yang memiliki adminCount lebih besar dari 0, yang berarti bahwa mereka dipengaruhi oleh fitur adminSDHolder. Anda akan membutuhkan Modul AD untuk PowerShell diinstal, yang dilengkapi dengan RSAT.

import-module activedirectory

get-aduser -Filter {admincount -gt 0} -Properties adminCount -ResultSetSize $null      
MDMarra
sumber
4
Inilah metode yang lebih bersih untuk melakukan hal yang sama: get-aduser -filter {admincount -gt 0} -Properties admincount -ResultSetSize $ null
jbsmith
Anda juga dapat membuat filter dsquery untuk melakukan hal yang sama
tony roth
2
@tony - Anda bisa, tetapi OP meminta secara khusus untuk skrip PowerShell.
MDMarra
3
([adsisearcher]"(AdminCount=1)").findall()
FSailer
sumber
2

Ini adalah varian dari jawaban yang sangat baik dari MDMarra.

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

Ini menggunakan -LDAPFilter bukan -Filter . Beberapa orang lebih suka menggunakan sintaks filter LDAP karena ini portabel di berbagai jenis aplikasi.

Perhatikan bahwa Filter dan LDAPFilter memiliki karakteristik kinerja yang sama karena filter dijalankan di sisi server. Saat menanyakan direktori besar, selalu coba lakukan pemfilteran secara langsung seperti ini, daripada menggunakan Where-Objectyang akan menyebabkan semua objek diunduh sebelum difilter. Ini dijelaskan secara rinci pada artikel TechNet Filter vs Dimana-Obyek .

Nic
sumber
Saya sering pengguna -LDAPFilterjadi terima kasih untuk menyebutkannya dan mengklarifikasi manfaatnya.
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
sumber
1
Ini mengubah izin yang bukan yang dicari OP. Juga, mengubah izin pada objek-objek ini tidak akan banyak membantu. Lain kali proses AdminSDHolder berjalan, itu akan mengatur ulang izinnya.
MDMarra
3
Di sini ada naga.
Tom O'Connor