PowerShell Script для пошуку користувачів AD з адмініструванням> 0


17

Нещодавно я відкрив функцію "adminSDHolder" Active Directory. Мені потрібен швидкий спосіб визначити всіх користувачів, які будуть на нього впливати, а саме сценарій для скидання облікових записів користувачів.

Відповіді:


18

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

import-module activedirectory

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

4
Ось більш чистий метод зробити те ж саме: get-aduser -filter {admincount -gt 0} -Properties admincount -ResultSetSize $ null
jbsmith

також ви можете створити фільтр dsquery, щоб зробити те саме
tony roth

2
@tony - Можна, але ОП попросив спеціально сценарій PowerShell.
MDMarra


2

Це варіант на відмінну відповідь MDMarra.

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

Для цього використовується -LDAPFilter замість -Filter . Деякі люди вважають за краще використовувати синтаксис фільтра LDAP, оскільки він є портативним для багатьох різних типів програм.

Зауважте, що Filter і LDAPFilter мають схожі характеристики продуктивності, оскільки фільтр виконується на стороні сервера. Коли ви запитуєте великі каталоги, завжди намагайтеся робити фільтрацію безпосередньо так, а не використовувати, Where-Objectщо призведе до завантаження всіх об'єктів перед фільтруванням. Це детально описано в статті TechNet Фільтр проти Де-Об'єкт .


Я є частим користувачем, -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
Тут будуть дракони.
Том О'Коннор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.