Je kunt de AD doorzoeken door de ActiveDirectory module in Powershell te importeren.
Import-Module ActiveDirectory
Daarna kun je bijvoorbeeld met filters users in de AD vinden die een EmployeeID hebben dat eindigt op 005:
Get-ADUser -Filter 'EmployeeID -like "*005"' -Properties * | ft name,employeeid
Om te zien waar je op kunt filteren kun je het beste alle properties van één gebruiker bekijken:
Get-ADUser –Identity gebruikersnaam –Properties * | fl *
Export naar CSV van alle Users met een EmployeeID en die in OU Test staan:
Get-ADUser -Filter * -Properties * -SearchBase "OU=Test,DC=Domein,DC=LOCAL" | where {$_.EmployeeID -ne $null} | Select-Object EmployeeID,Name,StreetAddress,PostalCode,City,MobilePhone,Fax,telephoneNumber,Department,Company | Export-Csv ExportAD.csv
Users langer dan 3 maanden niet ingelogd:
Get-ADUser -properties lastLogonDate -filter * -SearchBase "OU=Test,DC=domein,DC=local"| where { $_.lastLogonDate -lt (get-date).addmonths(-3) -and $_.lastLogonDate -ne $null} | sort lastLogonDate | FT Name,LastLogonDate
Door deze te pipen naar Disable-ADAccount kun je deze accounts meteen disablen.
Export naar CSV van alle Users met een EmployeeID en die in OU Test staan:
Get-ADUser -Filter * -Properties * -SearchBase "OU=Test,DC=Domein,DC=LOCAL" | where {$_.EmployeeID -ne $null} | Select-Object EmployeeID,Name,StreetAddress,PostalCode,City,MobilePhone,Fax,telephoneNumber,Department,Company | Export-Csv ExportAD.csv
Users langer dan 3 maanden niet ingelogd:
Get-ADUser -properties lastLogonDate -filter * -SearchBase "OU=Test,DC=domein,DC=local"| where { $_.lastLogonDate -lt (get-date).addmonths(-3) -and $_.lastLogonDate -ne $null} | sort lastLogonDate | FT Name,LastLogonDate
Door deze te pipen naar Disable-ADAccount kun je deze accounts meteen disablen.
Bovenstaande query kun je ook uitvoeren met Get-ADComputer om alle computers van een domein te vinden welke al langer dan 12 maanden oid niet op het domein zijn ingelogd.
Aantal users in een OU:
Met onderstaand script kun je het een weergave maken van alle gebruikers in bepaalde OU's.
Wijzig de OU# namen en verander de LDAP query. Plaats vervolgens het script in een ps1 bestand en voer deze uit.
(ik zal kijken of ik dit in een functie kan verwerken)
# PowerShell Counts users in Active Directory
foreach ($targetou in 'OU1','OU2','OU3')
{
"Processing information for OU $targetou"
$Dom='LDAP://OU='+$targetou+',DC=domein,DC=local'
$Root = New-Object DirectoryServices.DirectoryEntry $Dom
{
"Processing information for OU $targetou"
$Dom='LDAP://OU='+$targetou+',DC=domein,DC=local'
$Root = New-Object DirectoryServices.DirectoryEntry $Dom
# Create a selector and start searching from the Root of AD
$selector = New-Object DirectoryServices.DirectorySearcher
$selector.SearchRoot = $root
$selector.filter = "(objectclass=user)"
$selector = New-Object DirectoryServices.DirectorySearcher
$selector.SearchRoot = $root
$selector.filter = "(objectclass=user)"
$adobj= $selector.findall()
"There are $($adobj.count) users in $($root.name)"
}
"There are $($adobj.count) users in $($root.name)"
}
Aantal users in een Group:
[array]$users = (Get-ADGroupMember -Identity
"GroepNaam")
$users.count
Wie zit er in een bepaalde group:
Get-ADGroupMember -Identity "groep" | Get-ADUser -Properties * | ft name,UserPrincipalName,EmployeeID
Zoek een Universal group in AD m.b.v. wildcards:
Get-ADGroup -Filter 'Name -like "*dt*" -and GroupScope -eq "Universal"'
Get-ADGroup -Filter 'Name -like "*dt*" -and GroupScope -eq "Universal"'
Verwijder disabled users in meerdere AD OUs met een modified date ouder dan 14 dagen
foreach ($targetou in 'OU=Verkoop','OU=Users,OU=Inkoop','OU=Users,OU=Marketing')
{
$SB = ''+$targetou+',DC=DOMEIN,DC=local'
Get-ADUser -properties Modified -filter * -SearchBase "$SB"| where { $_.Modified -lt (get-date).adddays(-14) -and $_.Enabled -eq $False} | Remove-ADUser
}
{
$SB = ''+$targetou+',DC=DOMEIN,DC=local'
Get-ADUser -properties Modified -filter * -SearchBase "$SB"| where { $_.Modified -lt (get-date).adddays(-14) -and $_.Enabled -eq $False} | Remove-ADUser
}