PowerShelli näidisteemad kodutöödeks 2010, sügis, kaugõpe: Difference between revisions

From ICO wiki
Jump to navigationJump to search
 
(30 intermediate revisions by 12 users not shown)
Line 1: Line 1:
[[Category: Skriptimiskeeled]]
=Kodune arvestustöö=
=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
'''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
Line 22: Line 24:
==Korduvad failinimed==
==Korduvad failinimed==
Loo skript, mis leiab etteantud kataloogist või kettalt samanimelised failid ja väljastab nende nimekirja.
Loo skript, mis leiab etteantud kataloogist või kettalt samanimelised failid ja väljastab nende nimekirja.
[[Sander Tuulik AK41]]


==Arvutiinfo==
==Arvutiinfo==
Loo skript, mis leiab arvuti seadeid ja konfiguratsiooni puudutava info (arvuti nimi, mälu hulk, protsessoritüüp jne) ning väljastab selle
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==
==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.
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]]
[[Teenusemonitor|Marko Valing AK31]]


==Rakendusemonitor==
==Rakendusemonitor==
Line 35: Line 41:


==Printerihaldur==
==Printerihaldur==
Loo skript, mis leiab arvutisse paigaldatud printerid ning kuvab need. Kui arvutisse on paigaldatud "HP LaserJet 5L" printer, siis määrab selle vaikepriteriks.
Loo [[skript, mis teeb midagi printeritega| 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==
==Viimati muudetud failid==
Loo skript, mis leiab 20 viimatimuudetud faili ja väljastab vastava nimekirja HTML formaadis
Loo skript, mis leiab 20 viimatimuudetud faili ja väljastab vastava nimekirja HTML formaadis
[[Alvar Unuks AK42, sügis, kaugõpe|Alvar Unuks AK42]]
<source lang="powershell">
$DateToCompare = (Get-date).AddDays(-15)
get-childitem  -recurse | where-object {$_.lastwritetime –gt $DateToCompare}| Sort LastWriteTime -descending | select -first 20 | ConvertTo-Html > protsessid.html
</source>


==Paigaldatud tooted==
==Paigaldatud tooted==
Loo skript, mis salvestaks info paigaldatud toodete (rakenduste) kohta CSV formaadis faili.
Loo skript, mis salvestaks info paigaldatud toodete (rakenduste) kohta CSV formaadis faili.
[[Paigaldatud tooted | Reget Kalamees DK21]]
<source lang="powershell">
get-wmiobject -class "Win32_Product" -namespace "root\CIMV2" -computername "." | Select-Object -Property [A-Z]* | Sort-Object Caption |  Export-Csv installeeritud.csv
</source>


==Evenlog'i edastaja==
==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.
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==
==Kasutajaimporter==
Line 50: Line 71:


Loo skript, mis looks kohalikud kasutajad ja grupid failis toodud andmete järgi
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
<source lang="powershell">
$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()
</source>

Latest revision as of 15:04, 26 May 2011


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