Powershell: Taustale info kuvamine
<Source lang="powershell">
- Kuvab taustapildile arvutinime, kasutajanime ja ip aadressid.
- Taustapildi saab ette anda.
- Kui taustapilti pole varem skriptist läbi lastud, siis kirjutatakse andmed olemasolevale pildile.
- 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 A22 Versioon: 1.0 Muutmis kuupäev 01.06.2012
- Pildi asukoht ja kuvamise stiil
Param(
[string] $Path,
[string] $Style = "NoChange")
- Funktsioon mis muudab taustapilti
function Muudabpilti {
BEGIN { try {
$WP = [Wallpaper.Setter]
} catch {
Add-Type #$WP = [Wallpaper.Setter]
} } PROCESS { $WP::SetWallpaper( $Path, $Style) echo $Path
- echo $Style
}
}
[Reflection.Assembly]::LoadWithPartialName("System.Drawing") | Out-Null
- Koht kuhu salvestame taustapildi
$imgurl = "$ENV:tmp\wallpaper.jpg"
- 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"} }
- Arvuti nimi
$PC=Get-Content Env:\COMPUTERNAME
- Kasutajanimi
$USER=Get-Content Env:\USERNAME
- IP Aadress
$IP=@(Get-IPAddresses)
- Tekst, mida kirjutatakse pildile (mitu rida)
$PC_text ="Masin: $PC" $USER_text = "Kasutaja: $USER"
- Väärtustame text array
$text = ($PC_text,$USER_text) + $IP
- 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
- 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
}
}
- Valime kirjastiili, millega teks kirjutatakse
$font = new-object System.Drawing.Font Consolas,15
- Määrame taustapintsli värvi; kasutame kui olemasolevat pilti pole määratud
$brushBg = [System.Drawing.Brushes]::Blue
- Määrame kirjutamis pintsli värvi
$brushFg = [System.Drawing.Brushes]::Red
- 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
}
}
- Kui faili asukoht on antud siis kasutame seda
if($Path) {
$olemas = $Path
}
- 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()
}
- 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)
}
- Arvutame koha, kust tekst algab
$korgus = $bmp.Height - 210 - $text.count * 20 $kaugus = $bmp.Width - 20 - $koigePikem * 14
- Kirjutame teksti pildile
foreach ($number in $text) { $korgus = $korgus + 20 $graphics.DrawString($number,$font,$brushFg,$kaugus,$korgus)
$count++
}
- Salvestame uue pildi
$bmp.save($imgurl,[System.Drawing.Imaging.ImageFormat]::Jpeg) $Path = $imgurl
$bmp.Dispose() $graphics.Dispose()
- Kutsume välja funktsiooni Muudataust
Muudabpilti