PowerShell Script เพื่อค้นหาผู้ใช้โฆษณาด้วย adminCount> 0


17

ฉันเพิ่งค้นพบคุณสมบัติ "adminSDHolder" ของ Active Directory ฉันต้องการวิธีที่รวดเร็วในการระบุผู้ใช้ทั้งหมดที่จะได้รับผลกระทบจากมันนั่นคือสคริปต์ในการถ่ายโอนข้อมูลบัญชีผู้ใช้

คำตอบ:


18

คุณสามารถใช้สคริปต์ PowerShell นี้เพื่อส่งคืนผู้ใช้ที่มี adminCount มากกว่า 0 ซึ่งหมายความว่าพวกเขาได้รับผลกระทบจากคุณสมบัติ adminSDHolder คุณจะต้องติดตั้ง AD Module สำหรับ 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 - คุณทำได้ แต่ OP ขอให้เฉพาะสำหรับ PowerShell script
MDMarra


2

นี่คือตัวแปรของคำตอบที่ยอดเยี่ยมโดย MDMarra

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

สิ่งนี้ใช้-LDAPFilterแทนกรอง บางคนชอบที่จะใช้ไวยากรณ์ตัวกรอง LDAP เพราะสามารถพกพาข้ามแอปพลิเคชันหลายประเภท

โปรดทราบว่าตัวกรองและ 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
การเปลี่ยนแปลงนี้เป็นการอนุญาตที่ไม่ใช่สิ่งที่ OP ต้องการ นอกจากนี้การเปลี่ยนการอนุญาตบนวัตถุเหล่านี้จะไม่ทำอะไรมากมาย ครั้งต่อไปที่กระบวนการ AdminSDHolder ทำงานจะรีเซ็ตสิทธิ์ของพวกเขา
MDMarra

3
นี่คือมังกร
Tom O'Connor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.