Powershell: Taustapildile info kuvamine

From ICO wiki
Revision as of 01:34, 1 June 2012 by Mlepla (talk | contribs)
Jump to navigationJump to search
  1. Kuvab taustapildile arvutinime, kasutajanime ja ip aadressid.
  2. Taustapildi saab ette anda.
  3. Kui taustapilti pole varem skriptist läbi lastud, siis kirjutatakse andmed olemasolevale pildile.
  4. Kui skript on juba taustapildile andmed kirjutanud,ning kui skript käivitatakse uuesti ilma uue pildi asukohata, siis kuvatakse sinine taust andmetega.


 Autor: Marek Lepla
 Versioon: 0.1
 Muutmise kuup2ev 01.06.2012





  1. Pildi asukoht ja kuvamise stiil

Param(

       [string] $Path,
       [string] $Style = "NoChange")

  1. Funktsioon mis muudab taustapilti

function Muudabpilti {

BEGIN { try {

  $WP = [Wallpaper.Setter]

} catch {

  Add-Type 
   #$WP = [Wallpaper.Setter]

} } PROCESS { $WP::SetWallpaper( $Path, $Style) echo $Path

  1. echo $Style

}

}

[Reflection.Assembly]::LoadWithPartialName("System.Drawing") | Out-Null

  1. Koht kuhu salvestame taustapildi

$imgurl = "$ENV:tmp\wallpaper.jpg"

  1. Funktsioon, mis väljastab kõik arvuti ip aadressid

Function Get-IPAddresses { $Computer = "." $IPConfigSet = Get-WmiObject Win32_NetworkAdapterConfiguration

$count = 0 foreach ($IPConfig in $IPConfigSet) {

  if ($Ipconfig.IPAddress) { 
     foreach ($addr in $Ipconfig.IPAddress) { 
     "IP Aadress: {0}" -f  $addr; 
     $count++  
     } 
  } 

} if ($count -eq 0) {"No IP addresses found"} }

  1. Arvuti nimi

$PC=Get-Content Env:\COMPUTERNAME

  1. Kasutajanimi

$USER=Get-Content Env:\USERNAME

  1. IP Aadress

$IP=@(Get-IPAddresses)

  1. Tekst, mida kirjutatakse pildile (mitu rida)

$PC_text ="Masin: $PC" $USER_text = "Kasutaja: $USER"

  1. Väärtustame text array

$text = ($PC_text,$USER_text) + $IP

  1. Leiame kõige pikema tekstirea kuvatavas tekstis

$koigePikem = 0 foreach ($number in $text) { if($koigepikem -lt $number.Length)

   {
       $koigepikem = $number.Length
   }

}

Add-Type -AssemblyName System.Drawing

  1. Leiame vähimad Desktopi mõõdud

$desktops = Get-WmiObject -Class Win32_DesktopMonitor $pikkus = 9000 $laius = 9000 foreach($x in $desktops) {

   if(($pikkus -gt $x.ScreenHeight) -and ($x.ScreenHeight -gt 100))
   {
       $pikkus = $x.ScreenHeight
   }
       else 
       {
           $pikkus = 920  
       }
   if(($laius -gt $x.ScreenWidth) -and ($x.ScreenWidth -gt 100))
   {
       $laius = $x.ScreenWidth
   }
       else 
       {
           $laius = 1280
       }

}


  1. Valime kirjastiili, millega teks kirjutatakse

$font = new-object System.Drawing.Font Consolas,15


  1. Määrame taustapintsli värvi; kasutame kui olemasolevat pilti pole määratud

$brushBg = [System.Drawing.Brushes]::Blue

  1. Määrame kirjutamis pintsli värvi

$brushFg = [System.Drawing.Brushes]::Red


  1. Vaatame kas mõni taustapilt on kasutusel

$d = Get-WmiObject -Class Win32_Desktop $olemas = $null foreach($w in $d) {

   if($w.Wallpaper) 
   {
       $olemas = $w.Wallpaper      
   }

}

  1. Kui faili asukoht on antud siis kasutame seda

if($Path) {

   $olemas = $Path

}

  1. Kasutame olemasolevat või antud desktopi taustapilti

if($olemas -and ($olemas -ne $imgurl))

   {
   $img = [System.Drawing.Image]::FromFile("$olemas")
   $bmp = new-object System.Drawing.Bitmap([int]($img.width)),([int]($img.height))
   $graphics = [System.Drawing.Graphics]::FromImage($bmp)
   $rect = New-Object Drawing.Rectangle 0,0,$img.Width,$img.Height

   # Joonistab olemasoleva pildi, etteantud failist
   $graphics.DrawImage($img,$rect,0,0,$img.Width,$img.Height,$gUnit)
   $img.Dispose() 
   }

  1. Kui taustapilti pole, loome uue bitmapi

else

   {
   $bmp = new-object System.Drawing.Bitmap([int]$laius,[int]$pikkus)

   $graphics = [System.Drawing.Graphics]::FromImage($bmp)
   $graphics.FillRectangle($brushBg,0,0,$bmp.Width,$bmp.Height)
   }

  1. Arvutame koha, kust tekst algab

$korgus = $bmp.Height - 210 - $text.count * 20 $kaugus = $bmp.Width - 20 - $koigePikem * 14

  1. Kirjutame teksti pildile

foreach ($number in $text) { $korgus = $korgus + 20 $graphics.DrawString($number,$font,$brushFg,$kaugus,$korgus)

 	$count++  

}

  1. Salvestame uue pildi

$bmp.save($imgurl,[System.Drawing.Imaging.ImageFormat]::Jpeg) $Path = $imgurl

$bmp.Dispose() $graphics.Dispose()

  1. Kutsume välja funktsiooni Muudataust

Muudabpilti