PowerShell: Artur Mölter, AdDeadAccounts.ps1

From ICO wiki

<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)


  1. >

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

  1. kuvan otsingu alusena kasutatava kasutaja nime

Write-Host "otsingu aluseks on kasutaja: ", $kasutaja

  1. vaikimisi kasutan skripti käivitja asukohta domeenipuus

$asukoht = Get-ADUser $kasutaja -Properties * | Select-Object DistinguishedName

  1. $asukoht
  1. 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 }