PowerShelli näidisteemad kodutöödeks 2010, sügis, kaugõpe

From ICO wiki


Kodune arvestustöö

NB! Teha tuleb kõik ülesanded ja saata hiljemalt 30.01.2010 õppejõule: heiki.tahis [ät] eesti.ee Lisa lühikesed selgitused, kuidas töötab, kust abi leidsid

Kirjasaatja

Kirjuta skript, mis küsib kasutajalt saaja nime, e-maili, teemat ning kirjasisu ning saadab vastava e-kirja.

  • Saatjaaadressi ja nimena kasuta oma andmeid!
  • SMTP server peab olema ka skriptis kirjas.
  • Koodi kommentaaridest peab olema aru saada, mida muuta tuleb, et enda andmed asemele panna

Suured failid

Loo skript, mis leiab etteantud kettalt/kaustast kümme kõige suuremat faili ja küsib, kas kustutab need

  • Kui vastata jah, siis loomulikult kustutab ka :)

Kodused projektid

Need on siis need skriptid, mis tuleks esitada Skriptimiskeeled aine aruanded 2010 sügis lehel, korralikult dokumenteerida ja kirjeldada. Vali üks ja lisa oma nimi, et teised teaksid, et teema on võetud.

Arhivaator

Loo skript, mis küsib kasutaja käest faililaiendi (näiteks .txt) ja asukoha (ketta või kataloogi) ning pakib kõik sellest kataloogist leitud vastava laiendiga failid .zip arhiiviks failid-aasta-kuu-kp.zip (näiteks failid-2011-01-24.zip)

Kristjan Karmo AK41

Korduvad failinimed

Loo skript, mis leiab etteantud kataloogist või kettalt samanimelised failid ja väljastab nende nimekirja.

Sander Tuulik AK41

Arvutiinfo

Loo skript, mis leiab arvuti seadeid ja konfiguratsiooni puudutava info (arvuti nimi, mälu hulk, protsessoritüüp jne) ning väljastab selle

Lembit Elmik AK21

Teenusemonitor

Loo skript, mis kontrollib, kas mingi teenus (näiteks Spooler) töötab ning kui ei tööta, siis saadab e-kirja, teatega, et teenus ei tööta.

Marko Valing AK31

Rakendusemonitor

Loo skript, mis kontrollib, kas mingi rakendus (näiteks Firefox) töötab ning kui töötab, siis saadab e-kirja, teatega, et kasutaja see ja see kasutab seda rakendust.

Printerihaldur

Loo skript, mis leiab arvutisse paigaldatud printerid ning kuvab need. Kui arvutisse on paigaldatud "HP LaserJet 5L" printer, siis määrab selle vaikepriteriks.

Siim Liivand, AK41

Viimati muudetud failid

Loo skript, mis leiab 20 viimatimuudetud faili ja väljastab vastava nimekirja HTML formaadis

Alvar Unuks AK42

$DateToCompare = (Get-date).AddDays(-15)
get-childitem   -recurse | where-object {$_.lastwritetime gt $DateToCompare}| Sort LastWriteTime -descending | select -first 20 | ConvertTo-Html > protsessid.html

Paigaldatud tooted

Loo skript, mis salvestaks info paigaldatud toodete (rakenduste) kohta CSV formaadis faili.

Reget Kalamees DK21

get-wmiobject -class "Win32_Product" -namespace "root\CIMV2" -computername "." | Select-Object -Property [A-Z]* | Sort-Object Caption |  Export-Csv installeeritud.csv

Evenlog'i edastaja

Loo skript, mis leiab application log'ist viimase nädala joosul tehtud "Error" tüüpi kirjed ja edastab need administraatorile e-kirjana.

Kaspar Prei AK41

Kasutajaimporter

Loo CSV fail, kus on andmed järgmiselt: kasutajanimi, parool, täisnimi, grupp

Loo skript, mis looks kohalikud kasutajad ja grupid failis toodud andmete järgi

Arvutite Andmed

tulemüürist tuleks lubada: windows management instrumentarium UAC kinni või administrator account sisse sisendiks on fail kuhu on kirjutatud arvutite nimed, millede eraldajaks on enter väljundiks on viisakal kujul tekstifail mille ta meilile saata suudab Kasutamine kujul skript.ps1 -in sisendfail -out väljudfail

$from = "kust@minuserver.ee"
$to = "kuhu@minuserver.ee"
$smtp = "smtp.minuserver.ee"
param(
    $in,
    $out  
)
$file = $out
New-Item -ItemType file $file -Force

Get-Content $in | ForEach-Object {
    $computerSystem = ""
    $computer = $_
    $computerSystem = get-wmiobject win32_computersystem -computer $computer
    $bios = get-wmiobject win32_bios -computer $computer
    $operatingsystem = get-wmiobject win32_operatingsystem -computer $computer
    $processor = get-wmiobject win32_processor -computer $computer
    if(-not $computerSystem) {
        Add-Content $file "Computer: $computer"
        Add-Content $file "Error!"
    }
    else {
        $user = $computerSystem.username
        $manufacturer = $computerSystem.manufacturer
        $model = $computerSystem.model
        $serviceTag = $bios.serialnumber
        $os = $operatingsystem.caption
        $servicePack = $operatingsystem.servicepackmajorversion
        $coreCount = @($processor)[0].numberofcores
        $procName = @($processor)[0].name
        $ram = [int]$operatingsystem.totalvisiblememorysize / 1024
        $disk = gwmi -computer $computer -class win32_logicaldisk -Credential $creds -Filter "DriveType = '3'" | select DeviceID,Size
        Add-Content $file "Computer: $computer"
        Add-Content $file "Manufacturer: $manufacturer"
        Add-Content $file "OS: $os"
        Add-Content $file "ServicePack: $servicePack"
        Add-Content $file "CoreCount: $coreCount"
        Add-Content $file "Processor Name: $procName"
        Add-Content $file "Ram: $ram"
        $i = 0
        if($disk -is [system.array]){
            while ($i -ne ($disk.length)) {
                $id = @($disk)[$i].deviceid
                $size = (@($disk)[$i].size / 1GB)
                Add-Content $file "$id $size GB"
                $i++
            }
        }
        else {
            $id = $disk.deviceid
            $size = ($disk.size / 1GB)
            Add-Content $file "$id $size GB"
        }
        }
        Add-Content $file "##############################################"
}
$smtpserver = smtp.neti.ee #Siia kirjuta oma SMTP serveri aadress
$message = new-object Net.Mail.MailMessage
$att = new-object Net.Mail.Attachment($file)
$smtp = new-object Net.Mail.SmtpClient($smtpserver)
$smtp.EnableSsl = $True
$message.From = $from #Saatja meiliaadress
$message.To.Add($to) #Saaja meiliaadress
$message.Subject = Computer Information ( $(date) ) #E-maili pealkiri
$message.Body = $failinimi on lisatud manustesse. #E-Maili sisu ( tekst )
$message.Attachments.Add($att)
$smtp.Send($message)
 
$att.Dispose()
$message.Dispose()