PowerShelli näidisteemad kodutöödeks 2010, sügis, kaugõpe: Difference between revisions
(34 intermediate revisions by 13 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 17: | Line 19: | ||
==Arhivaator== | ==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) | 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) | ||
[[Skript, mis arhiveerib etteantud laiendiga failid - PowerShell|Kristjan Karmo AK41]] | |||
==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. | ||
[[Teenusemonitor|Marko Valing AK31]] | |||
==Rakendusemonitor== | ==Rakendusemonitor== | ||
Line 33: | 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 48: | 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)
Korduvad failinimed
Loo skript, mis leiab etteantud kataloogist või kettalt samanimelised failid ja väljastab nende nimekirja.
Arvutiinfo
Loo skript, mis leiab arvuti seadeid ja konfiguratsiooni puudutava info (arvuti nimi, mälu hulk, protsessoritüüp jne) ning väljastab selle
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.
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
$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.
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()