Скрипт PowerShell для поиска пользователей AD с adminCount> 0

17

Недавно я обнаружил функцию «adminSDHolder» в Active Directory. Мне нужен быстрый способ определить всех пользователей, которые будут затронуты этим, а именно скрипт для сброса учетных записей пользователей.

Крис С
источник

Ответы:

18

Этот сценарий powershell можно использовать для возврата пользователей, у которых adminCount больше 0, что означает, что на них влияет функция adminSDHolder. Вам понадобится модуль AD для PowerShell, который поставляется с RSAT.

import-module activedirectory

get-aduser -Filter {admincount -gt 0} -Properties adminCount -ResultSetSize $null      
MDMarra
источник
4
Вот более чистый способ сделать то же самое: get-aduser -filter {admincount -gt 0} -Properties admincount -ResultSetSize $ null
jbsmith
также вы можете создать фильтр dsquery, чтобы сделать то же самое
Тони Рот
2
@tony - Можно, но ОП специально попросил сценарий PowerShell.
MDMarra
2

Это вариант отличного ответа от MDMarra.

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

Это использует -LDAPFilter вместо -Filter . Некоторые люди предпочитают использовать синтаксис фильтра LDAP, потому что он переносим во многих различных типах приложений.

Обратите внимание, что Filter и LDAPFilter имеют сходные характеристики производительности, так как фильтр выполняется на стороне сервера. При запросе больших каталогов всегда старайтесь выполнять фильтрацию напрямую, а не использовать ее, Where-Objectкоторая приведет к загрузке всех объектов перед фильтрацией. Это подробно описано в статье TechNet « Фильтр и где-объект» .

Nic
источник
Я частый пользователь, -LDAPFilterпоэтому спасибо, что упомянули об этом и разъяснили его преимущества.
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
Это меняет разрешения, но это не то, что ищет ОП. Кроме того, изменение разрешений для этих объектов не будет иметь большого значения. В следующий раз, когда будет запущен процесс AdminSDHolder, он сбросит их разрешения.
MDMarra
3
Здесь будут драконы.
Том О'Коннор