Difference between revisions of "Skriptimiskeeled: powershelli kodutööd 2011, kevad, päevaõpe"

From ICO wiki
Line 396: Line 396:
  
 
[[User:Jliiva]]
 
[[User:Jliiva]]
 +
 +
==Urmas Luuk==
 +
[[User:Uluuk#Powershelli kodutöö]]

Revision as of 13:48, 6 June 2011


Kodutööd 2011, PowerShell

Siia tulevad siis kokkuvõtted..

Jaan Igamees

Lühike jutt, mida skript teeb... bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla.

PowerShell: Jaan Igamees, kavalskript

Kaido Loonurm

Arvutiinfo: Skript leiab arvuti seadeid ja konfiguratsiooni puudutava info (arvuti nimi, mälu hulk, protsessoritüüp jne) ning väljastab selle

PowerShell: Kaido Loonurm, PCinfo.ps1

Ivar Ambos

Ühendatud ketaste info

User:Iambos

Vadim Vinogradin

Ping skript

  1. Skript, mis kontrollib, saidi IP-aadressi töötamine.
  2. Kui töötab, siis kirjutab andmeid C:\ping.txt failisse, kui ei tööta, siis kirjutab andmeid C:\ping.txt failisse ja teavitab e-maili kaudu.

PowerShell: Vadim Vinogradin, Ping skript

Tarmo Trumm

Skript mis otsib üles kindla laiendiga failid, mis on x päeva vanad ja kustutab need.

PowerShell: Tarmo Trumm,Kustutame x-päeva vanad failid

Toomas Rohumets

Skript, mis muudab võrgukaardi MAC aadressi.

User:Trohumet

Sergei Gorjunov

Skript, mis loob uut kasutajat

User:Sgorjuno

Oliver Kilk

1. Skript, mis otsib arvutist kõik printerid ja väljastab need koos detailsemate andmetega

2. Skript, mis lahendab OU-sse kuuluvuse AD-s ning sisesndiks on tekstifail ja väljund samuti.

User:Okilk

Karet Rikko

Skript võtab kõikide kasutajate home folderite suuruse ning sorteerib suuruse järgi ning kirjutab kasutajanime ning kasutatud suuruse faili.

User:Krikko

Vladimir Kolesnik

Skript, mis kuvab kõike protsesse, mille mälu on üle 1MB ja vormistab sisend faili HTML kujul

PowerShell: Vladimir Kolesnik, maluCheck | Vkolesni 19:42, 23 May 2011 (EEST)

--

Skript, mis kontrollib kas ettemääratud protsess töötab või ei.

PowerShell: Vladimir Kolesnik, minuProtsess | Vkolesni 19:42, 23 May 2011 (EEST)

Lisaks saab leida siin: User:vkolesni

Ivar Krustok

skript, mis küsib emaili, eraldab sellest user ja domeeni. Uurib välja domeeni ip aadressi, kas kodukas on üleval ja mis aadressil ja prindib selle info arvutikasutaja folderisse txt faili koos kellajaga millal küsiti.

User:ikrustok

Ilja Peters

PowerShell: Ilja Peters, Kasutajate halduse skript

Skript mis haldab lokaalseid kasutajaid (lisab/kustutab/kuvab kasutajaid ning saab hallata gruppidesse kuuluvust)

Rene Pärnpuu

Otsib lokaalsest arvutist ülesse kõik installeeritud printerid ja shareb kõikidele kasutajatele antud arvutis.

PowerShell: Rene Pärnpuu, Printerid.ps1

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"
$smtp.EnableSsl = $True
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)
$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()

Rene Sepp

Skript, mis disableb/enableb wireless adapterit.

User:rsepp

Automatiseeritud portide avamine ja sulgemine - Katrin Kukk

tulemüürist tuleks lubada: windows management instrumentarium

UAC kinni või administrator account sisse

sisendiks on failid:

1) arvutite nimed

2) portide numbrid


skript töötab kujul: skript.ps1 -pcs <sisendfail> -ports <sisendfail> -action <open|close>

param(
    $pcs,
    $action,
    $ports
)
#käime läbi masinate listi
Get-Content $pcs | ForEach-Object {
    $computer = $_
    #iga masina kohta käime läbi portide nimekirja
    Get-Content $ports | ForEach-Object {
        $port = $_
        #teeme pordid lahti
        if(action == "open") {
            Invoke-Command {netsh advfirewall firewall add rule name=Open Port $port dir=in action=allow protocol=TCP localport=$port} -ComputerName $computer
        #või paneme need kinni
        } elseif(action == "close") {
            Invoke-Command {netsh advfirewall firewall add rule name=Open Port $port dir=in action=block protocol=TCP localport=$port} -ComputerName $computer
        #või suuname kasutajat õigesti käituma
        } else {
            Write-Host "Porte kas avatakse (open) või suletakse (close)"
        }
        
    }
}

Rain Kõrgmaa

Skript kontrollib windowsi versiooni, kustutab temporary kaustast kõik (võimalikud) failid ning väljastab kasutaja kausta Logi faili. Skript eeldab, et masinasse on installeeritud Powershell 2.0.


$ver = (Get-WmiObject Win32_OperatingSystem).Version
Echo "Sinu masina versioon on:" $ver.tostring()
$count = -1
$Time = Get-Date

if($ver.tostring().Contains("5.")) {
            $Dir = Get-Childitem $Env:temp -recurse
            $Dir | Remove-Item -force -ErrorAction silentlycontinue 
            foreach ($_ in $Dir ){
            $count = $count +1
            $a = $Time.ToShortDateString()+" "+$Time.ToShortTimeString()+ "Kustutasin " +$_ +" faili"
        $a >> logi.txt}}

ElseIf($ver.tostring().Contains("6.")) {
            $Dir = Get-Childitem $Env:temp -recurse
            $Dir | Remove-Item -force -ErrorAction silentlycontinue
            foreach ($_ in $Dir ){
            $count = $count +1
            $a = $Time.ToShortDateString()+" "+$Time.ToShortTimeString()+ " Kustutasin " +$_ + " faili"
		$a >> logi.txt}}           

Else{
    echo "Ei leidnud sobivat windowsi versiooni"}

Andres Mill

  1. Skript kontrollib, kas mingi rakendus töötab. Näiteks Skype. Kui töötab, siis saadab e-maili, et rakendus töötab selles arvutis.
  2. Skript käivitab rakenduse töötamise kontrolli skripti iga 60 sekundi tagant.

PowerShell: Andres Mill, rakenduse töötamise kontroll

Kalev Jõgi

Skript küsib tudengi eesnime, perekonnanime, matriklinumbrit ja parooli ning loob Active Directory kasutaja Üldkasutus -> Eco Tudengid organisatsiooniüksusesse, lisab logimisel võrguketaste jne. lisamiseks kasutatava logon.bat faili ning lisab kasutaja gruppi Tudengid

#Autor: Kalev Jõgi
#Rühm: A22
#Versioon: 1.0
#Kuupäev: 26.05.2011
#Skript, mis teeb tudengile AD kasutaja ja lisab selle Tudengid gruppi

#Loeme sisse vajalikud andmed
$Firstname = Read-Host "Eesnimi"
$Lastname = Read-Host "Perekonnanimi"
$SCode = Read-Host "Matrikklinumber"
$Password = Read-Host "Parool"

$Name = $Firstname+" "+$Lastname
$username = "t"+$SCode

#Tekitame AD-sse kasutaja
New-ADUser -Path "ou=Eco Tudengid,ou=Üldkasutus,dc=testikas,dc=local" -
GivenName $Firstname -Surname $Lastname -Name $Name -SamAccountName $username
 -DisplayName $Name -Enabled $true -PasswordNeverExpires $true
 -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -force) 
-ScriptPath "login.bat" -UserPrincipalName $username

#Lisame loodud kasutaja AD-s gruppi Tudengid 
Add-ADGroupMember -Identity Tudengid -Members $username

Kristjan Väljako

Arvuti usaldusväärsuse index

User:KValjako

Kristjan Vask

Active Directory/lokaalse kasutaja tegemine võttes username/pw sisendid eraldi failidest

User:Krvask

Silver Kullarand

Skript, võtab käsurealt kaasaantud nimega failist parameetrid, millega vormistatab päringu, väljastab soovitul hulgal uusimaid kirjeid otsitavate tüübide kohta ning lisab tulemused manustena mailile ja saadab need etteantud aadressile.

PowerShell: Silver Kullarand, newest_events_param.ps1

Risto Siitan

[Skript otsib viimase 24 tunni errorid ning saadab need meiliga määratud aadressile]


Martin Lehari

Skript, mille abil saab mitmesse serverisse/arvutisse laiali kopeerida faile/katalooge. Enne kopeerimist muudetakse sihtkoha power plan High Performance peale. Pärast kopeerimist taastatakse jälle endine olukord.

Parameetrid:

-hostlist - fail, mis sisaldab arvutite/serverite nimesid

-hostname - üksiku arvuti/serveri nimi

-src - kopeeritav fail/kataloog

-dest - sihtkoht

#Autor: Martin Lehari
#Rühm: A32
#Versioon: 1.0
#Kuupäev: 02.06.2011
#Skript, mille abil saab mitmesse serverisse/arvutisse laiali kopeerida faile/katalooge.

param (
    [string]$hostlist,
    [string]$hostname,
    [string]$src = $(throw "Source file/dir required."),
    [string]$dest = $(throw "Destination dir required.")
)


function SetPowerPlan([string]$preferred_plan, [string]$computer_name) {
    $guid = (Get-WmiObject -Class win32_powerplan -Namespace root\cimv2\power -CN $computer_name -Filter "ElementName='$preferred_plan'" -EA silentlyContinue).InstanceID.tostring()
    $regex = [regex]"{(.*?)}$"
    $newpowerVal = $regex.Match($guid).groups[1].value

    Invoke-Command -computer $computer_name -ScriptBlock {param($p1,$p2) powercfg $p1 $p2} -ArgumentList "-S",$newpowerVal   
}


function CopyFiles([string]$src, [string]$dest) {
    if(!(test-path -path $dest)) {
        if((get-item $src).PSIsContainer){
            # folder @ destination missing. Creating it!
            new-Item $dest -type Directory -force | out-Null
            Copy-Item $src\* $dest -recurse
        }
        else {
            # file @ dest missing. Creating it!
            new-Item $dest -type File -force | out-Null
            Copy-Item $src $dest -force
        }
    }
    else {
        if((get-item $src).PSIsContainer) {
            # coping folder(s)
            Copy-Item $src\* $dest -recurse
        }
        else {
            # coping file(s)
            Copy-Item $src $dest -force
        }
    }
}

# if we have only one destination...
if($hostname -ne "") {
    $computers = $hostname
}
else {
    $computers = Get-Content $hostlist
}


foreach ($computer_name in $computers) {
    Write-Host "Host: " $computer_name
    
    # get current powerplan
    $current_plan = (Get-WmiObject -Class win32_powerplan -Namespace root\cimv2\power -CN $computer_name -Filter "isActive='true'" -EA silentlyContinue).ElementName.tostring()
    
    # set 'High Performance' powerplan
    Write-Host "-> Setting powerplan to High performance..."
    SetPowerPlan "High Performance" $computer_name
    
    # do the magic!
    $dest = "\\"+$computer_name+"\"+$dest.Replace(":","$")
    Write-Host "-> Copying files..."
    CopyFiles $src $dest
    
    # set computers powerplan back to its original state
    Write-Host "-> Setting powerplan to $current_plan..."
    SetPowerPlan $current_plan $computer_name
    
    Write-Host "-> Done!"
    Write-Host ""
}

Juhan Liiva

Skript leiab kasutaja kodukataloogist 0-suurusega failid, kuvab need ja laseb kustutada, ükshaaval või korraga.

User:Jliiva

Urmas Luuk

User:Uluuk#Powershelli kodutöö