Is there an easy solution to allow Helpdesk Users to reset passwords for user accounts for a specific Active Directory Organizational Unit (OU) with PowerShell?
Yes, there is! Just use the script/function below to set the necessary Active Directory Delegation.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | function Set-ResetPasswordDelegation(){ param( [string]$OrganizationalUnit, [string]$DelegationGroupName ) # Configuration Parameters $confADRight = "ExtendedRight" $confDelegatedObjectType = "bf967aba-0de6-11d0-a285-00aa003049e2" # User Object Type GUID $confExtendedRight = "00299570-246d-11d0-a768-00aa006e0529" # Extended Right PasswordReset GUID # Collect and prepare Objects $delegationGroup = Get-ADGroup -Identity $DelegationGroupName $delegationGroupSID = [System.Security.Principal.SecurityIdentifier] $delegationGroup.SID $delegationGroupACL = Get-Acl -Path "AD:\$OrganizationalUnit" # Build Access Control Entry (ACE) $aceIdentity = [System.Security.Principal.IdentityReference] $delegationGroupSID $aceADRight = [System.DirectoryServices.ActiveDirectoryRights] $confADRight $aceType = [System.Security.AccessControl.AccessControlType] "Allow" $aceInheritanceType = [System.DirectoryServices.ActiveDirectorySecurityInheritance] "Descendents" $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule($aceIdentity, $aceADRight, $aceType, $confExtendedRight, $aceInheritanceType,$confDelegatedObjectType) # Apply ACL $delegationGroupACL.AddAccessRule($ace) Set-Acl -Path "AD:\$OrganizationalUnit" -AclObject $delegationGroupACL } # Calling the function Set-ResetPasswordDelegation -OrganizationalUnit "OU=Users,DC=pwsh,DC=ch" -DelegationGroupName "ServiceDesk-PasswordReset-Allow" |
Thank you very much; this really helped me!
For whatever reason, Set-Acl is broken on my machine and doesn’t work correctly unless you run the script with Domain Admin privileges.
See my Serverfaullt Q/A for a fixed version and some more details.
https://serverfault.com/questions/1008696/powershell-script-to-set-ad-permissions-fails-with-access-denied-despite-runni/1008712#1008712