Active Directory Cmdlets (Get-AD*)

Overview

Official Microsoft Active Directory module cmdlets (RSAT / domain-joined Windows). Require:

Import-Module ActiveDirectory
# Or on DC / with RSAT installed — auto-loaded

OSCP use: When you have a domain-joined shell or RSAT — structured LDAP queries without PowerView. Linux equivalent: ldapsearch, CrackMapExec - nxc ldap, Impacket.

Not installed? Use PowerView, net user, Bloodhound + Sharphound.


📌 Common Parameters (All Get-AD* Cmdlets)

ParameterDescription
-IdentitySamAccountName, DN, GUID, or SID
-FilterLDAP filter string — most important
-PropertiesExtra attributes to return — * = all
-SearchBaseStart search at OU DN
-SearchScopeBase, OneLevel, Subtree
-ResultSetSizeMax results ($null = unlimited)
-ServerTarget DC hostname/IP
-CredentialAlternate creds [PSCredential]
-PartitionAD partition

Filter syntax examples

-Filter *                                    # All objects
-Filter "Name -like 'admin*'"
-Filter "SamAccountName -eq 'jsmith'"
-Filter "Enabled -eq `$true"
-Filter "servicePrincipalName -like '*'"
-Filter "userAccountControl -band 4194304"   # DONT_REQ_PREAUTH (AS-REP)

📌 1) Get-ADUser

Get-ADUser -Filter *
Get-ADUser -Identity jsmith
Get-ADUser -Filter "Enabled -eq `$true" -Properties *
Get-ADUser -Filter "servicePrincipalName -like '*'" -Properties servicePrincipalName
Get-ADUser -Filter * -Properties PasswordLastSet, LastLogonDate, MemberOf
UseFilter / Properties
All users-Filter *
Kerberoast targets-Filter "servicePrincipalName -like '*'" -Properties servicePrincipalName
AS-REP roast-Filter "userAccountControl -band 4194304" -Properties userAccountControl
Password never expires-Filter "PasswordNeverExpires -eq $true”`

Export sam names:

Get-ADUser -Filter * | Select-Object -ExpandProperty SamAccountName > users.txt

📌 2) Get-ADComputer

Get-ADComputer -Filter *
Get-ADComputer -Identity WS01
Get-ADComputer -Filter "OperatingSystem -like '*Server*'" -Properties OperatingSystem, IPv4Address
Get-ADComputer -Filter * -Properties DnsHostName, Enabled, LastLogonDate
UseCommand
All computersGet-ADComputer -Filter *
Domain controllersGet-ADComputer -Filter {PrimaryGroupId -eq 516}
Unconstrained delegation-Filter "TrustedForDelegation -eq $true” -Properties TrustedForDelegation`
LAPS password readCheck ms-Mcs-AdmPwd if you have rights

📌 3) Get-ADGroup & Get-ADGroupMember

Get-ADGroup -Filter *
Get-ADGroup -Identity "Domain Admins"
Get-ADGroupMember -Identity "Domain Admins"
Get-ADGroupMember -Identity "Domain Admins" -Recursive
Get-ADGroup -Filter "GroupCategory -eq 'Security'" | Select Name

High-value groups to query:

"Domain Admins","Enterprise Admins","Administrators","Account Operators",
"Backup Operators","Server Operators","Remote Desktop Users","DNS Admins"

📌 4) Get-ADDomain / Get-ADForest

Get-ADDomain
Get-ADDomain | Select-Object DNSRoot, DomainControllers, PDCEmulator, RIDMaster
Get-ADDomain -Identity corp.local
Get-ADForest
Get-ADForest | Select-Object Domains, GlobalCatalogs
Get-ADTrust -Filter *

Password policy:

Get-ADDefaultDomainPasswordPolicy
Get-ADFineGrainedPasswordPolicy -Filter *

Compare: net accounts /domain, nxc smb --pass-pol


📌 5) Get-ADOrganizationalUnit

Get-ADOrganizationalUnit -Filter *
Get-ADOrganizationalUnit -SearchBase "DC=corp,DC=local" -Filter *

📌 6) Get-ADObject (Generic)

Any AD object type:

Get-ADObject -Filter *
Get-ADObject -Filter "objectClass -eq 'groupPolicyContainer'" -Properties DisplayName
Get-ADObject -LDAPFilter "(adminCount=1)" -Properties *

adminCount=1 — protected (high-value) objects.


📌 7) Write / Modify Cmdlets (Needs Privileges)

CmdletAction
New-ADUserCreate user
Set-ADAccountPasswordReset password
Add-ADGroupMemberAdd to group
Remove-ADGroupMemberRemove from group
Set-ADUserModify attributes
New-ADComputerAdd computer account
Move-ADObjectMove OU
New-ADUser -Name hacker -SamAccountName hacker -AccountPassword (ConvertTo-SecureString 'P@ss123!' -AsPlainText -Force) -Enabled $true
Add-ADGroupMember -Identity "Domain Admins" -Members hacker
Set-ADAccountPassword -Identity jsmith -Reset -NewPassword (ConvertTo-SecureString 'NewPass1!' -AsPlainText -Force)

📌 8) Get-AD* vs PowerView vs Linux

TaskGet-AD*PowerViewLinux
All usersGet-ADUser -Filter *Get-DomainUserldapsearch, nxc ldap --users
Kerberoast SPNs-Filter "servicePrincipalName -like '*'"Get-DomainUser -SPNKerberoast
Domain AdminsGet-ADGroupMember "Domain Admins"Get-DomainGroupMemberBloodhound + Sharphound
ComputersGet-ADComputer -Filter *Get-DomainComputernxc ldap --computers

See PowerView, ldapsearch, Kerberoast.


📌 Quick Cheat Sheet

Import-Module ActiveDirectory
Get-ADDomain
Get-ADUser -Filter * | Select SamAccountName
Get-ADUser -Filter "servicePrincipalName -like '*'" -Properties servicePrincipalName
Get-ADGroupMember "Domain Admins"
Get-ADComputer -Filter * -Properties OperatingSystem
Get-ADDefaultDomainPasswordPolicy
Get-ADTrust -Filter *