public/Get-tADwellKnownObjects.ps1
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
function Get-tADwellKnownObjects{ <# .SYNOPSIS Get Active Directory well known objects by well known SID. .DESCRIPTION Get Active Directory well known objects like Domain Admins by SID. .PARAMETER .EXAMPLE Get-tADwellKnowObjects #> [CmdletBinding()] Param( [Parameter(Mandatory=$false,Position=0)] [string]$ComputerName ) $sidTable = @{'Administrator' = '-500'; 'Guest' = '-501'; 'KRBTGT' = '-502'; 'Domain Admins' = '-512'; 'Domain Users' = '-513'; 'Domain Guests' = '-514'; 'Domain Computers' = '-515'; 'Domain Controllers' = '-516'; 'Cert Publishers' = '-517'; 'Schema Admins' = '-518'; 'Enterprise Admins' = '-519'; 'Group Policy Creator Owners' = '-520'; 'Key Admins' = '-526'; 'Enterprise Key Admins' = '-527'; 'RAS and IAS Servers' = '-553'; 'Enterprise Read-only Domain Controllers' = '-498'; 'Read-only Domain Controllers' = '-521'; 'Allowed RODC Password Replication Group' = '-571'; 'Denied RODC Password Replication Group' = '-572'; 'Cloneable Domain Controllers' = '-522'; } # Get-ADObject -Filter { objectSid -eq 'S-1-5-21-3056380229-4157989709-2468344688-501' } $DomainSID = ((Get-ADDomain).DomainSID).Value $Result = @() Write-Verbose ('DomainSID: {0}' -f $DomainSID) foreach ($sid in $sidTable.GetEnumerator()){ [string]$wkSID = $DomainSID+$sid.Value [string]$wkSIDName = $sid.Key Write-Verbose ('{0} {1}' -f $wkSIDName, $wkSID) $ADObject = Get-ADObject -Filter { objectSID -eq $wkSID} -Properties Name, ObjectClass, objectSID | Select-Object Name, ObjectClass, objectSID $psObj = New-Object psobject Add-Member -InputObject $psObj -MemberType NoteProperty -Name 'wellKnownName' -Value $wkSIDName Add-Member -InputObject $psObj -MemberType NoteProperty -Name 'wellKnownSID' -Value $sid.Value Add-Member -InputObject $psObj -MemberType NoteProperty -Name 'Name' -Value $ADObject.Name Add-Member -InputObject $psObj -MemberType NoteProperty -Name 'ObjectClass' -Value $ADObject.ObjectClass Add-Member -InputObject $psObj -MemberType NoteProperty -Name 'SID' -Value $ADObject.objectSID $Result += $psObj } Return $Result } |