Bird
Raised Fist0
PowerShellscripting~5 mins

Why AD management is essential for sysadmins in PowerShell - Performance Analysis

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Time Complexity: Why AD management is essential for sysadmins
O(n)
Understanding Time Complexity

Managing Active Directory (AD) with PowerShell helps sysadmins automate tasks efficiently.

We want to understand how the time to manage AD grows as the number of users or computers increases.

Scenario Under Consideration

Analyze the time complexity of the following PowerShell script that lists all AD users and disables those inactive for 90 days.


$users = Get-ADUser -Filter * -Properties LastLogonDate
foreach ($user in $users) {
  if ($user.LastLogonDate -lt (Get-Date).AddDays(-90)) {
    Disable-ADAccount -Identity $user.SamAccountName
  }
}
    

This script gets all users, checks their last login date, and disables inactive accounts.

Identify Repeating Operations
  • Primary operation: Looping through each user in the AD user list.
  • How many times: Once for every user returned by Get-ADUser.
How Execution Grows With Input

As the number of users grows, the script checks each user one by one.

Input Size (n)Approx. Operations
10About 10 checks and possible disables
100About 100 checks and possible disables
1000About 1000 checks and possible disables

Pattern observation: The work grows directly with the number of users.

Final Time Complexity

Time Complexity: O(n)

This means the time to complete the task grows in a straight line as the number of users increases.

Common Mistake

[X] Wrong: "The script runs instantly no matter how many users there are."

[OK] Correct: Each user must be checked, so more users mean more work and more time.

Interview Connect

Understanding how scripts scale with input size shows you can write efficient automation for real systems.

Self-Check

"What if we filtered users directly in Get-ADUser to only inactive accounts? How would the time complexity change?"

Practice

(1/5)
1. Why is Active Directory (AD) management important for system administrators?
easy
A. It helps control user access to network resources.
B. It allows users to install any software they want.
C. It slows down network performance.
D. It removes all security settings automatically.

Solution

  1. Step 1: Understand AD's role in access control

    Active Directory manages who can access files, printers, and other resources on a network.
  2. Step 2: Recognize sysadmin responsibilities

    Sysadmins use AD to set permissions and keep the network secure and organized.
  3. Final Answer:

    It helps control user access to network resources. -> Option A
  4. Quick Check:

    AD controls access = A [OK]
Hint: AD controls access rights for users and devices [OK]
Common Mistakes:
  • Thinking AD slows down the network
  • Believing AD removes security settings
  • Assuming AD lets users install any software
2. Which PowerShell cmdlet is used to create a new Active Directory user?
easy
A. New-ADUser
B. Get-ADUser
C. Remove-ADUser
D. Set-ADGroup

Solution

  1. Step 1: Identify cmdlets for AD user management

    New-ADUser creates users, Get-ADUser retrieves users, Remove-ADUser deletes users, Set-ADGroup modifies groups.
  2. Step 2: Match cmdlet to creation task

    Creating a new user requires New-ADUser.
  3. Final Answer:

    New-ADUser -> Option A
  4. Quick Check:

    Create user cmdlet = New-ADUser [OK]
Hint: New-ADUser creates users; Get-ADUser only reads [OK]
Common Mistakes:
  • Using Get-ADUser to create users
  • Confusing Remove-ADUser with creation
  • Using Set-ADGroup for user creation
3. What will this PowerShell command output?
Get-ADUser -Filter 'Enabled -eq $true' | Select-Object -ExpandProperty Name
medium
A. List of all disabled user names
B. Error due to wrong filter syntax
C. List of all group names
D. List of all enabled user names

Solution

  1. Step 1: Understand the filter condition

    The filter 'Enabled -eq $true' selects only users whose Enabled property is true (active users).
  2. Step 2: Analyze the Select-Object usage

    Select-Object -ExpandProperty Name extracts just the user names from the results.
  3. Final Answer:

    List of all enabled user names -> Option D
  4. Quick Check:

    Filter enabled users = list names [OK]
Hint: Filter Enabled -eq $true lists active users only [OK]
Common Mistakes:
  • Thinking it lists disabled users
  • Assuming it returns groups instead of users
  • Believing the filter syntax causes error
4. Identify the error in this PowerShell snippet for disabling an AD user:
Disable-ADUser -Identity $userName
medium
A. The variable $userName must be a user object, not a string.
B. The parameter should be -UserName, not -Identity.
C. Disable-ADUser cmdlet does not exist.
D. The cmdlet requires the -Confirm parameter.

Solution

  1. Step 1: Check if Disable-ADUser exists

    There is no Disable-ADUser cmdlet in PowerShell AD module; disabling is done with Set-ADUser.
  2. Step 2: Correct method to disable user

    Use Set-ADUser -Identity $userName -Enabled $false to disable a user.
  3. Final Answer:

    Disable-ADUser cmdlet does not exist. -> Option C
  4. Quick Check:

    No Disable-ADUser cmdlet = A [OK]
Hint: Use Set-ADUser -Enabled $false to disable users [OK]
Common Mistakes:
  • Assuming Disable-ADUser cmdlet exists
  • Using wrong parameter names
  • Thinking -Confirm is mandatory
5. A sysadmin wants to automate disabling all inactive AD users who haven't logged in for 90 days. Which PowerShell approach is best?
hard
A. Use Get-ADGroupMember to find users and disable them.
B. Use Get-ADUser with -Filter on LastLogonDate, then pipe to Set-ADUser -Enabled $false.
C. Run Remove-ADUser on all users without checking last logon date.
D. Manually disable users one by one in Active Directory Users and Computers.

Solution

  1. Step 1: Identify how to find inactive users

    Get-ADUser can filter users by LastLogonDate to find those inactive for 90 days.
  2. Step 2: Automate disabling users

    Piping filtered users to Set-ADUser -Enabled $false disables them efficiently.
  3. Final Answer:

    Use Get-ADUser with -Filter on LastLogonDate, then pipe to Set-ADUser -Enabled $false. -> Option B
  4. Quick Check:

    Filter inactive users + disable = D [OK]
Hint: Filter inactive users by last logon, then disable in bulk [OK]
Common Mistakes:
  • Disabling users manually one by one
  • Removing users instead of disabling
  • Using group membership instead of last logon date