= Cheatsheet Active Directory = **Summary**: Active Directory hints, tips, oneliners and best practices. \\ **Date**: 8 December 2024 \\ {{tag>cheatsheet ad powershell}} == Active Directory Users == > Count all users in all departments Get-ADUser -SearchBase "OU=Users,DC=GetShifting,DC=local" -filter * -Properties name,department,enabled | where {$_.enabled -eq "true"} | group department | select name, count \\ > All enabled users that have never logged in Get-ADUser -Filter {(lastlogondate -notlike "*" -AND enabled -eq "True")} -SearchBase "OU=Users,DC=GetShifting,DC=local" \\ > All enabled users that have not logged on for more than 90 days $90Days = (get-date).adddays(-90) Get-ADUser -Filter {(lastlogondate -le $90days -AND enabled -eq "True")} -SearchBase "OU=Users,DC=GetShifting,DC=local" \\ > Get the most common reasons on a user for not being able to logon Get-ADUser User123 -Properties * | Select-Object enabled,passwordexpired,lockedout == Active Directory Groups == > Get all groups in a specific OU Get-ADGroup -SearchBase "OU=Groups,DC=GetShifting,DC=local" -Filter * | Select-Object name \\ > Get all groupmembers from a specific group Get-ADGroupMember "RDP Desktop Users" -recursive | Select-Object Name \\ == Active Directory Servers == > All servers Get-ADComputer -Filter {(operatingSystem -like "*windows*Server*")} Note: Does not select Windows 2000 Servers. > Select servers on properties Get-ADComputer -filter {(description -like "*financial*" -AND name -like "SQL*")} -Properties * | select name, description == Active Directory DNS == > Get all AD DNS zones with all properties Get-ChildItem "AD:CN=MicrosoftDNS,DC=DomainDNSZones,DC=getshifting,DC=local" | Select-Object * \\ > Get all records in a DNS zone with all properties Get-ChildItem "AD:DC=getshifting.local,CN=MicrosoftDNS,DC=DomainDNSZones,DC=getshifting,DC=local" | Select-Object * \\ >Get creation and modify date of AD DNS records Get-ChildItem "AD:DC=getshifting.local,CN=MicrosoftDNS,DC=DomainDNSZones,DC=getshifting,DC=local" | Where-Object {$_.name -like "build*"} | Get-ADObject -Properties Created,Modified | Select-Object Name,Created,Modified == Active Directory Policies == > Get the max password age from the policy (Get-ADDefaultDomainPasswordPolicy -ErrorAction Stop).MaxPasswordAge.Days == Service Principal Names == Create a service principle name: * Open a command prompt and use the following command: setspn -A BOBJCentralMS/crystalsrv.company.local BOservice Check: C:\Windows\system32>setspn -Q BOBJCentralMS/crystalsrv.company.local CN=BusinessObjects Service,OU=ServiceAccounts,DC=company,DC=local BOBJCentralMS/crystalsrv.company.local BOBJCentralMS/crystal01srv.company.local Existing SPN found!