PowerShell: Artur Mölter, AdDeadAccounts.ps1
<source lang="powershell">
<# .SYNOPSIS
Eesmärk on leida AD-st võimalikud "surnud" kontod. Leiab antud kasutajaga samas AD OU-s olevad kasutajad. Kontrollib nende viimast sisselogimist ja kuvab otsingule vastavad tulemused ekraanil, ning kirjutab tulemuse ka CSV faili
.DESCRIPTION
Skript otsib AD-st kontosid, mille viimane sisselogimise aeg on etteantud ajast vanem. Otsing teostatakse üle etteantud kasutaja OU. Kui kasutaja parameetrit ei ole ette antud, siis kasutatakse skripti käivitaja kasutajanime. Teise parameetrina saab määrata otsitavat ajamäära päevades. Tulemus kuvatakse nii ekeaanil kui ka kirjutatakse CSV faili skripti töökataloogis.
.NOTES
Autor : Artur Mölter AK31
.EXAMPLE
PS> DeadAccounts Ilma parameetriteta käivitades leiab skript käesoleva kasutaja asukoha AD-s ja teostab otsingu üle selle asukoha. Otsitavaks vanuseks kasutab 30 päeva. PS> DeadAccounts user1 60 Otstakse AD-st kasutajat "user1". Selle kasutaja alusel valitakse otsingu piirkond (OU). Otsitakse kasutajait, kes ei ole sisse loginud viimase 60 päeva jooksul.
.PARAMETER Kasutaja
Ei ole kohustuslik. Vaikimisi skripti käivitaja
.PARAMETER Paevad
Ei ole kohustuslik. Vaikimisi 30 (päeva)
- >
Function DeadAccounts { param
( # kasutan etteantud kasutajanime. Puudumisel skripti käivitajat [Parameter(Position=1, Mandatory=$false, ValueFromPipeline=$True)] [string] $kasutaja = $env:username, # kasutan otsitavaks terminiks etteantud päevade arvu. Puudumisel 30 päeva [Parameter(Position=2, Mandatory=$false, ValueFromPipeline=$True)] [int]$paevad = 30 )
cls Import-Module ActiveDirectory
- kuvan otsingu alusena kasutatava kasutaja nime
Write-Host "otsingu aluseks on kasutaja: ", $kasutaja
- vaikimisi kasutan skripti käivitja asukohta domeenipuus
$asukoht = Get-ADUser $kasutaja -Properties * | Select-Object DistinguishedName
- $asukoht
- eraldan osadeks ja eemaldan CN rea
$asukoht_str = $asukoht.DistinguishedName.ToString() $location = $asukoht_str.Replace("CN=$kasutaja,","")
Write-Host " otsingu asukohaks on: ", $location Write-Host " otsingu vanuseks on: ", $paevad," päeva"
$today = Get-Date $otsitav = ($today.AddDays(-$paevad)) Write-Host " tänane kuupäev on: ", $today.Date Write-Host " otsitav aeg enne: ", $otsitav.Date
$kasutajad = Get-ADUser -Filter {LastLogonDate -lt $otsitav} -Properties * -SearchBase "$location"
$kasutajad | Export-Csv deadAccounts.csv -ErrorAction silentlycontinue $kasutajad | Format-Table Name,LastLogonDate -AutoSize }