Tags

Howto (51) Free Software (35) Powershell (33) Windows Server (23) AD (16) Hyper-V (16) Exchange (13) Office (13) Group Policy (10) Windows Server 2012 (9) Scripts (7) Symantec BE (5) Windows 8 (5) Cisco (4) TMG (4) Terminal Server (4) Cluster (3) HP (3) RDS (3) UAG (3) Citrix (2) DC (2) DNS (2) IE10 (2) OpenID (2) PKI (2) SCVMM (2) Windows Live (2) iLO (2) Backup (1) DPM (1) Fileserver (1) IE (1) SQL; DPM (1) Security (1) Sharepoint (1) Switch (1) VMWare (1) Veeam (1)

woensdag 28 december 2011

Zoeken in de AD met Powershell

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.
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
# Create a selector and start searching from the Root of AD
$selector = New-Object DirectoryServices.DirectorySearcher
$selector.SearchRoot = $root
$selector.filter = "(objectclass=user)"
$adobj= $selector.findall()
"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"'
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
}

Geen opmerkingen:

Een reactie posten