Populate and administer Active directory users with Powershell
Some days ago I have been working on some powershell scripts for a lab environment and now i have edited the handlescript to work better and with more functionality.
First i created a small script for populating some OU with student accounts.
# Script: Createusers.ps1 # Create users in AD # Version: 0.1 # Niklas Akerlund /RTS Import-Module Activedirectory $OUs = "OU1","OU2","OU3","OU4","OU5","OU6" foreach ($OU in $OUs){ $path = "OU=" + $OU + ",OU=lab,OU=Users,DC=demo,DC=local" for ($i=1;$i -le 10;$i++){ $SAMid = $OU + "Student0" + $i $Name = $OU + "Student0" + $i New-ADUser -SamAccountName $SAMid -Name $Name -AccountPassword (ConvertTo-SecureString -AsPlainText "S0meP@ssw0rd" -Force) -Enabled $true -Path $path } }
Then i created with help from Jeffery Hicks post a script with a menu to enable or disable accounts in the different OU´s. As i described in a earlier post it is quite powerful to use Active Directory cmdlets and i have tried to take care of that by checking that when i enable/disable accounts i check that i really have something in my searchbase. Below are two screenshots of the script running. Update I have now updated the script with a check for the searchbase that actually works and also an extra menu option with the ability to set password on the accounts i enable!
Here is the script that creates this, i have not yet come up with a better and more dynamic way to create the switch, maybe someone can give me some help there..
# Script: handleusers.ps1 # Version: 0.1 # Disable or enable lab account users # # Niklas Akerlund / RTS # Menu code from Jeffery Hicks Import-Module ActiveDirectory Function Show-Menu { Param( [Parameter(Position=0,Mandatory=$True,HelpMessage="Enter your menu text")] [ValidateNotNullOrEmpty()] [string]$Menu, [Parameter(Position=1)] [ValidateNotNullOrEmpty()] [string]$Title="Menu", [switch]$ClearScreen ) if ($ClearScreen) {Clear-Host} #build the menu prompt $menuPrompt=$title #add a return $menuprompt+="<code>n" #add an underline $menuprompt+="-"*$title.Length $menuprompt+="</code>n" #add the menu $menuPrompt+=$menu Read-Host -Prompt $menuprompt } #end function $menu="<code>n" $ListOU = Get-ADOrganizationalUnit -filter * -Searchbase "OU=lab,OU=Users,DC=demo,DC=local" | where {$_.Name -ne "lab"} | Sort-Object $_.Name $i = 1 foreach ($OU in $ListOU){ $menu+= [string]$i + " " + $OU.Name + "</code>n" # write-host $menu $i = $i+1 } $menu+= "Q Quit" $menu+= "<code>n" # Menu 2 $menu2=@" 1 Disable accounts 2 Enable accounts 3 Set password and enable accounts B Back to menu "@ $menu2+= "</code>n" #Keep looping and running the menu until the user selects Q (or q). Do { #use a Switch construct to take action depending on what menu choice #is selected. Switch (Show-Menu $menu "Get OU to handle" -clear ) { "1" { if ($ListOU[0].DistinguishedName -ne $null){ $menutext = "Handle " + $ListOU[0].Name + " users to disable/enable " $Users = Get-ADUser -filter * -searchbase $ListOU[0].DistinguishedName Switch (Show-Menu $menu2 $menutext -clear ) { "1" { $Users | Set-ADUser -Enabled $false } "2" { $Users | Set-ADUser -Enabled $true } "3" { $newPassword = (Read-Host -Prompt "Provide New Password" -AsSecureString) $Users | Set-ADUser -Enabled $true $Users | Set-ADAccountPassword -NewPassword $newPassword -Reset } "B" { Write-Host "Back to menu" -ForegroundColor Cyan } Default {Write-Warning "Invalid Choice. Try again." sleep -milliseconds 750} } } } "2" { if ($ListOU[1].DistinguishedName -ne $null){ $menutext = "Handle " + $ListOU[1].Name + " users to disable/enable " $Users = Get-ADUser -filter * -searchbase $ListOU[1].DistinguishedName Switch (Show-Menu $menu2 $menutext -clear ) { "1" { $Users | Set-ADUser -Enabled $false } "2" { $Users | Set-ADUser -Enabled $true } "3" { $newPassword = (Read-Host -Prompt "Provide New Password" -AsSecureString) $Users | Set-ADUser -Enabled $true $Users | Set-ADAccountPassword -NewPassword $newPassword -Reset } "B" { Write-Host "Back to menu" -ForegroundColor Cyan } Default {Write-Warning "Invalid Choice. Try again." sleep -milliseconds 750} } } } "3" { if ($ListOU[2].DistinguishedName -ne $null){ $menutext = "Handle " + $ListOU[2].Name + " users to disable/enable " $Users = Get-ADUser -filter * -searchbase $ListOU[2].DistinguishedName Switch (Show-Menu $menu2 $menutext -clear ) { "1" { $Users | Set-ADUser -Enabled $false } "2" { $Users | Set-ADUser -Enabled $true } "3" { $newPassword = (Read-Host -Prompt "Provide New Password" -AsSecureString) $Users | Set-ADUser -Enabled $true $Users | Set-ADAccountPassword -NewPassword $newPassword -Reset } "B" { Write-Host "Back to menu" -ForegroundColor Cyan } Default {Write-Warning "Invalid Choice. Try again." sleep -milliseconds 750} } } } "4" { if ($ListOU[3].DistinguishedName -ne $null){ $menutext = "Handle " + $ListOU[3].Name + " users to disable/enable " $Users = Get-ADUser -filter * -searchbase $ListOU[3].DistinguishedName Switch (Show-Menu $menu2 $menutext -clear ) { "1" { $Users | Set-ADUser -Enabled $false } "2" { $Users | Set-ADUser -Enabled $true } "3" { $newPassword = (Read-Host -Prompt "Provide New Password" -AsSecureString) $Users | Set-ADUser -Enabled $true $Users | Set-ADAccountPassword -NewPassword $newPassword -Reset } "B" { Write-Host "Back to menu" -ForegroundColor Cyan } Default {Write-Warning "Invalid Choice. Try again." sleep -milliseconds 750} } } } "5" { if ($ListOU[4].DistinguishedName -ne $null){ $menutext = "Handle " + $ListOU[4].Name + " users to disable/enable " $Users = Get-ADUser -filter * -searchbase $ListOU[4].DistinguishedName Switch (Show-Menu $menu2 $menutext -clear ) { "1" { $Users | Set-ADUser -Enabled $false } "2" { $Users | Set-ADUser -Enabled $true } "3" { $newPassword = (Read-Host -Prompt "Provide New Password" -AsSecureString) $Users | Set-ADUser -Enabled $true $Users | Set-ADAccountPassword -NewPassword $newPassword -Reset } "B" { Write-Host "Back to menu" -ForegroundColor Cyan } Default {Write-Warning "Invalid Choice. Try again." sleep -milliseconds 750} } } } "6" { if ($ListOU[5].DistinguishedName -ne $null){ $menutext = "Handle " + $ListOU[5].Name + " users to disable/enable " $Users = Get-ADUser -filter * -searchbase $ListOU[5].DistinguishedNam Switch (Show-Menu $menu2 $menutext -clear ) { "1" { $Users | Set-ADUser -Enabled $false } "2" { $Users | Set-ADUser -Enabled $true } "3" { $newPassword = (Read-Host -Prompt "Provide New Password" -AsSecureString) $Users | Set-ADUser -Enabled $true $Users | Set-ADAccountPassword -NewPassword $newPassword -Reset } "B" { Write-Host "Back to menu" -ForegroundColor Cyan } Default {Write-Warning "Invalid Choice. Try again." sleep -milliseconds 750} } } } "Q" {Write-Host "Goodbye" -ForegroundColor Cyan Return } Default {Write-Warning "Invalid Choice. Try again." sleep -milliseconds 750} } #switch } While ($True)