PowerShell: Ilja Peters, Kasutajate halduse skript
From ICO wiki
# Kasutajate haldamise skript
# Autor Ilja Peters
# v. 0.1
# Mai 2011
# Powershell 1.0
# Loeme argumente
param($Argument1)
$teg=$Argument1
###################################Funktsioonid#######################################
# Funktsioon mis kuvab lokaalseid kasutajaid
Function kuva_kasut {
$computer = [ADSI]("WinNT://" + $pc_nimi + ",computer")
$Users = $computer.psbase.children |where{$_.psbase.schemaclassname -eq "User"}
foreach ($member in $Users.psbase.syncroot) {$member.name}
}
#Funktsioon mis lisab lokaalseid kasutajaid
function lisa_kasut ($kas) {
[string]$accountname = $kas
$hostname=hostname
$comp=[adsi] "WinNT://$hostname"
$user = $comp.Create("User",$accountname)
$user.SetPassword("password")
$user.passwordExpired=-1
$user.SetInfo()
}
#Funktsioon mis kustutab lokaalseid kasutajaid
function kustuta_kasut($kas) {
$hostname=hostname
$comp=[adsi] "WinNT://$hostname"
$chk = read-host "Oled kindel?[y]"
if ($chk -eq "y") {
$user = $comp.Delete("User", $kas)
Write-Output "$kas kasutaja kustutatud! "
}
else {
Write-Warning "Katkestatud!"
break
}
}
# Funktsioon mis kuvab gruppe ja neisse kuulumist
function kuva_gruppid {
$server="."
$computer = [adsi]"WinNT://$server,computer"
$computer.psbase.children | where {$_.psbase.schemaClassName -eq 'group'} | foreach {
write-host $_.name
write-host "--------------"
$group = [adsi]$_.psbase.Path
$group.psbase.Invoke("Members") | foreach {$_.GetType().InvokeMember("Name",'GetProperty', $null, $_, $null)}
write-host
}
}
# Funktsioon mis lisab kasutajaid gruppidesse
function lisa_gruppi($grp,$kas) {
$hostname=hostname
trap {
Write-Warning "Sellist gruppi pole olemas"
#Write-Host "ERROR" $_.Exception.GetType().Fullname
#throw $_
}
$grp = [ADSI]("WinNT://" + $hostname + "/$grp,group")
trap {
Write-Warning "Sellist kasutajat pole olemas"
}
$grp.add("WinNT://" + $hostname + "/$kas")
}
# Funktsioon mis eemaldab kasutajaid gruppidest
function eemalda_grp($grp,$kas) {
$hostname=hostname
trap {
Write-Warning "Sellist gruppi pole olemas"
#Write-Host "ERROR" $_.Exception.GetType().Fullname
#throw $_
}
$grp = [ADSI]("WinNT://" + $hostname + "/$grp,group")
trap {
Write-Warning "Sellist kasutajat pole olemas"
}
$grp.remove("WinNT://" + $hostname + "/$kas")
}
##################################################################################
###Alustame tood
Write-Output "*****************************","* Kasutajate halduse skript *","*****************************",""
Write-Output "Argumendid [skript.ps1 argument]:","'a' - Kui soovid lisada kasutajat","'d' - Kui soovid kustutada kasutajat","'l' - Kui soovid kuvada kasutajate listi","'atg' - Kui soovid lisada kasutajat gruppi","'dfg' - Kui soovid kustutada kasutajat gruppist","'gmem' - Kui soovid naha gruppidesse kuuluvust",""
# Kontrollime, et oleks adminn
if(-NOT([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Warning "NOT ADMIN"
break
}
else{
sleep(1)
Write-Output "Oled admin! OK", ""
}
sleep(1)
# Vaatame mida kasutaja tahab teha
if ( $teg -eq $null) {
Write-Output "Sisesta argument!"
break
}
elseif ($teg -eq "l") {
Write-Output "Kuvame koik lokaalsed kasutajad:",""
kuva_kasut
}
elseif ($teg -eq "a") {
Write-Output "Soovid lisada uue kasutaja"
sleep(1)
$kas = read-host "Sisesta kasutajanimi"
lisa_kasut $kas
Write-Output "Kasutaja $kas on lisatud. Exit"
}
elseif ($teg -eq "d") {
Write-Output "Soovid kustutada kasutaja"
sleep(1)
$kas = read-host "Sisesta kasutajanimi"
kustuta_kasut $kas
Write-Output "Kasutaja $kas on kustutatud. Exit"
}
elseif ($teg -eq "gmem") {
Write-Output "Kuvame gruppidesse kuuluvust:",""
kuva_gruppid
}
elseif ($teg -eq "atg") {
Write-Output "Soovid lisada kasutaja gruppi"
sleep(1)
$kas = read-host "Sisesta kasutajanimi"
$grp = read-host "Sisesta grupp"
lisa_gruppi $grp $kas
sleep(1)
Write-Output "Kasutaja $kas on lisatud $grp gruppi. Exit"
}
elseif ($teg -eq "dfg") {
Write-Output "Soovid eemaldada kasutaja gruppist"
sleep(1)
$kas = read-host "Sisesta kasutajanimi"
$grp = read-host "Sisesta grupp"
eemalda_grp $grp $kas
sleep(1)
Write-Output "Kasutaja $kas on eemaldatud $grp gruppist. Exit"
}
else {
Write-Output "Viga! Sisesta oige argument"
break
}
# ToDo
# Uuemas versioonis oleks vaja kasutaja kustutamisel, eemalda ta ka koikdest gruppidest
# lisada rohkem exception'eid