Skriptimiskeeled: powershelli kodutööd 2011, kevad, päevaõpe: Difference between revisions
No edit summary |
|||
Line 294: | Line 294: | ||
[[https://wiki.itcollege.ee/index.php/Skript_otsib_viimase_24_tunni_errorid_ning_saadab_need_meiliga_määratud_aadressile Skript otsib viimase 24 tunni errorid ning saadab need meiliga määratud aadressile]] | [[https://wiki.itcollege.ee/index.php/Skript_otsib_viimase_24_tunni_errorid_ning_saadab_need_meiliga_määratud_aadressile 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. | |||
Parameetrid: | |||
'''-hostlist''' - fail, mis sisaldab arvutite/serverite nimesid | |||
'''-hostname''' - üksiku arvuti/serveri nimi | |||
'''-src''' - kopeeritav fail/kataloog | |||
'''-dest''' - sihtkoht | |||
<source lang="Powershell"> | |||
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 "" | |||
} | |||
</source> |
Revision as of 16:23, 5 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
Vadim Vinogradin
Ping skript
- Skript, mis kontrollib, saidi IP-aadressi töötamine.
- 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.
Sergei Gorjunov
Skript, mis loob uut kasutajat
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.
Karet Rikko
Skript võtab kõikide kasutajate home folderite suuruse ning sorteerib suuruse järgi ning kirjutab kasutajanime ning kasutatud suuruse faili.
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.
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.
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
- Skript kontrollib, kas mingi rakendus töötab. Näiteks Skype. Kui töötab, siis saadab e-maili, et rakendus töötab selles arvutis.
- 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
Kristjan Vask
Active Directory/lokaalse kasutaja tegemine võttes username/pw sisendid eraldi failidest
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.
Parameetrid:
-hostlist - fail, mis sisaldab arvutite/serverite nimesid
-hostname - üksiku arvuti/serveri nimi
-src - kopeeritav fail/kataloog
-dest - sihtkoht
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 ""
}