PowerShell 脚本用于查找 adminCount > 0 的 AD 用户

PowerShell 脚本用于查找 adminCount > 0 的 AD 用户

我最近发现了 Active Directory 的“adminSDHolder”功能。我需要一种快速识别受其影响的所有用户的方法,即转储用户帐户的脚本。

答案1

您可以使用此 powershell 脚本返回 adminCount 大于 0 的用户,这意味着他们受到 adminSDHolder 功能的影响。您需要安装 RSAT 附带的 PowerShell AD 模块。

import-module activedirectory

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

答案2

([adsisearcher]"(AdminCount=1)").findall()

答案3

这是 MDMarra 的优秀答案的一个变体。

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

这使用-LDAP过滤器代替-筛选。有些人更喜欢使用 LDAP 过滤器语法,因为它可以在许多不同类型的应用程序之间移植。

请注意,由于过滤器是在服务器端执行的,因此 Filter 和 LDAPFilter 具有相似的性能特征。查询大型目录时,请始终尝试像这样直接进行过滤,而不是使用Where-Object会导致在过滤之前下载所有对象的过滤器。TechNet 文章中对此进行了详细描述过滤器与 Where-Object

答案4

## 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"
}
}

相关内容