PowerShell: Ilja Peters, Kasutajate halduse skript

From ICO wiki
Jump to navigationJump to search
# 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