Month: January 2012

Powershell içinden radyo dinleyin

“Bakalım Powershell’in sınırlarını ne kadar zorlayabiliyorum” yaklaşımının bir sonucu olarak geliştirdiğim bu script’i de sizlerle paylaşmak istiyorum.

Yine bir fonksiyon kullandım ve script’imi Powershell Profil yoluna attım. Böylece her Powershell açılışında fonksiyonumu tanımasını sağladım.

Bana ise bir tek Powershell’i açıp radyo yazmak düştü!


Bir form tasarımı yaptım ve aşağıdaki gibi gözükmesini sağladım.


Bütün radyo listesini çekip bana sergilediğinde tek yapmak zorunda oldugum Radyo 35′i seçip özlediğim Izmir’imi dinlemekti, ben de öyle yaptım!


İşte kaynak kodları da aşağıdaki gibi. Doğrudan kopyalayıp radyo.ps1 ismiyle kaydedip Powershell içerisinden kullanabilirsiniz.

function radyo {

[reflection.assembly]::loadwithpartialname(“System.Windows.Forms”) | Out-Null

[reflection.assembly]::loadwithpartialname(“System.Drawing”) | Out-Null

$form1 = New-Object System.Windows.Forms.Form

$button2 = New-Object System.Windows.Forms.Button

$button1 = New-Object System.Windows.Forms.Button

$comboBox1 = New-Object System.Windows.Forms.ComboBox

$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState

$button1_OnClick=

{

if ($radyocal){

$radyocal.quit()

}

$form1.Text = “Radyo Yukleniyor – BakiOnur Radyo”

$radyolar = new-object -com “InternetExplorer.Application”

$radyolar.navigate(“http://www.radyolar.org/radyolar.asp”)

start-sleep -s 2

$bulunanistasyon=$radyolar.Document.getElementsByTagName(“a”) | where{$_.innertext -eq $combobox1.selecteditem}

$radyocal = new-object -com “InternetExplorer.Application”

$radyocal.navigate($bulunanistasyon.href)

$radyolar.quit()

$form1.Text = “BakiOnur Radyo”

}

$form1_load={

$form1.Text = “Liste Yükleniyor – BakiOnur Radyo”

$radyolar = new-object -com “InternetExplorer.Application”

$radyolar.navigate(“http://www.radyolar.org/radyolar.asp”)

start-sleep -s 2

$link = $radyolar.Document.getElementsByTagName(“a”)

$link | foreach{

if(!($_.innertext -eq $null)){

$combobox1.items.add($_.innertext)}

}

$combobox1.items.remove(“Anasayfa”)

$combobox1.items.remove(“YARDIM”)

$combobox1.items.remove(“Radyolar”)

$combobox1.items.remove(“Radyo Ekle”)

$combobox1.items.remove(“ANASAYFA”)

$combobox1.items.remove(“Frekanslar”)

$combobox1.items.remove(“Sohbet Odas?”)

$combobox1.items.remove(“?leti?im”)

$combobox1.items.remove(“REKLAM”)

$combobox1.items.remove(“SIK SORULAN SORULAR”)

$combobox1.items.remove(“NEDEN D?NLEYEM?YORUM”)

$combobox1.items.remove(“HATA B?LD?R”)

$combobox1.items.remove(“?LET???M”)

$combobox1.items.remove(“Radyo ekle”)

$radyolar.Quit()

$form1.Text = “Radyo Seciniz – BakiOnur Radyo”

}

$button2_OnClick=

{

$acikapp = new-object -com shell.application

$acikradyo = $acikapp.windows() | where {$_.Type -eq “HTML Document” -and $_.locationURL -like “*http://www.radyolar.org/*”}

if($acikradyo){

$acikradyo.quit()

}

$form1.close()

}

$OnLoadForm_StateCorrection=

{

$form1.WindowState = $InitialFormWindowState

}

$System_Drawing_Size = New-Object System.Drawing.Size

$System_Drawing_Size.Height = 101

$System_Drawing_Size.Width = 252

$form1.ClientSize = $System_Drawing_Size

$form1.DataBindings.DefaultDataSourceUpdateMode = 0

$form1.Name = “form1″

$form1.Text = “BakiOnur Radyo”

$button2.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point

$System_Drawing_Point.X = 153

$System_Drawing_Point.Y = 66

$button2.Location = $System_Drawing_Point

$button2.Name = “button2″

$System_Drawing_Size = New-Object System.Drawing.Size

$System_Drawing_Size.Height = 23

$System_Drawing_Size.Width = 75

$button2.Size = $System_Drawing_Size

$button2.TabIndex = 2

$button2.Text = “Kapat”

$button2.UseVisualStyleBackColor = $True

$button2.add_Click($button2_OnClick)

$form1.Controls.Add($button2)

$button1.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point

$System_Drawing_Point.X = 153

$System_Drawing_Point.Y = 31

$button1.Location = $System_Drawing_Point

$button1.Name = “button1″

$System_Drawing_Size = New-Object System.Drawing.Size

$System_Drawing_Size.Height = 23

$System_Drawing_Size.Width = 75

$button1.Size = $System_Drawing_Size

$button1.TabIndex = 1

$button1.Text = “Dinle”

$button1.UseVisualStyleBackColor = $True

$button1.add_Click($button1_OnClick)

$form1.Controls.Add($button1)

$comboBox1.DataBindings.DefaultDataSourceUpdateMode = 0

$comboBox1.FormattingEnabled = $True

$System_Drawing_Point = New-Object System.Drawing.Point

$System_Drawing_Point.X = 12

$System_Drawing_Point.Y = 33

$comboBox1.Location = $System_Drawing_Point

$comboBox1.Name = “comboBox1″

$System_Drawing_Size = New-Object System.Drawing.Size

$System_Drawing_Size.Height = 21

$System_Drawing_Size.Width = 121

$comboBox1.Size = $System_Drawing_Size

$comboBox1.TabIndex = 0

$form1.Controls.Add($comboBox1)

$InitialFormWindowState = $form1.WindowState

$form1.add_Load($OnLoadForm_StateCorrection)

$form1.add_Load($form1_load)

$form1.ShowDialog()| Out-Null

}

Umarım müzik keyfinize katkıda bulunmusumdur!

Tesekkürler,

BakiOnur

Powershell Üzerinden Hızlı ve Kolay E-mail Gönderin

Dikkat edilecek olursa powershell ile erişilemeyecek yer yok!
Bu sefer de Powershell içerisinden e-mail atacağız. Bazen özellikle test amaçlı olarak hızlı bir e-mail atmanız gerekebilir. Ya da her 5 dakikada bir e-mail sunucunuza dış bir e-mail hesabınızdan e-mail atarak sisteminizin çalışabilirliğini kontrol edebilirsiniz. Ben de bu amaçla hazırladığım bu script’i kullan?yorum. İşte o script!

$hesapbilgileri = Get-Credential$kullaniciAdi = $hesapbilgileri.username.Replace(“”,””)
$parola = $hesapbilgileri.GetNetworkCredential().password
$Emailfrom=”test@hotmail.com
$EmailTo = “onur.okutucu@bilgeadam.com
$Subject = “Baki Onur OKUTUCU – MVP
$Body = “Baki Onur OKUTUCU
$SMTPServer = “smtp.live.com”
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($kullaniciAdi, $parola);
$SMTPClient.Send($Emailfrom, $EmailTo, $Subject, $Body)

Yukarıdaki script içerisinde kırmızı ile işaretlediğim yerleri kendinize göre değiştirip kullanabilirsiniz.
Script çalıştırıldığında önce sizden e-mail adresinizi ve sifrenizi isteyecektir. Sonrasında ise yukarıdaki bilgilere göre e-mail gönderecektir.

 
Yukarıdaki script sizden e-mail adresi ve parola soruyor. Bunu daha da otomatik hale getiremez miyiz?
Eğer e-mail adresi ve sifre sormasını istemiyorsanız Script’i aşağıdaki şekilde kullanmalısınız. Unutmamalısınız ki bu yöntemle sifrenizi peşin peşin script dosyasının içine yazmış oluyorsunuz. Yukarıdaki script bu noktada daha güvenli olabilir. Karar size kalmış!

$Emailfrom=”test@hotmail.com“$EmailTo = “onur.okutucu@bilgeadam.com
$Subject = “Baki Onur OKUTUCU – MVP
$Body = “Baki Onur OKUTUCU
$SMTPServer = “smtp.live.com”
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“test@hotmail.com“, “testparola“);
$SMTPClient.Send($Emailfrom, $EmailTo, $Subject, $Body)

Yine kırmızı alanları değiştirmeyi unutmayalım lütfen.
Bingooo!

Tesekkürler,
BakiOnur

Powershell İçinden Domain Adı / Tescili Kontrolü

Yine Powershell, yine bir kolaylık!
Sık sık alan adı sorgulaması yapıyor musunuz?
Peki Powershell içerisinde bir fonksiyonumuz olsa, istediğimiz an onu kullanarak sorgulamalarımızı Powershell içerisinden hızlıca yapsak? Eminim hoşunuza gidecektir.
Aşağıdaki script ile yapabilecekleriniz:

  • Bir domain adının başkası tarafından alınıp alınmadığının kontrolü
  • Domain başkası tarafından alınmışsa bununla ilgili bilgiler

Aşağıdaki powershell kodumuzu profil dosyanız içine (profile.ps1) kopyalayabilir ya da whois.ps1 ismiyle profil yolunuzun içine kaydedip (daha önceki makalelerimde anlattığımm şekliyle) kullanabilirsiniz.

function whois($siteadres){
$iewhois = new-object -com “InternetExplorer.Application”
$iewhois.navigate(“http://whois.domaintools.com/$siteadres”)
start-sleep -s 3
$sonuc=$iewhois.Document.body.innertext
$sonuc3=”Bu domain ad? ba?kas? taraf?ndan al?nm??”
if ($sonuc -match “This domain name is not registered”){
$sonuc2=”Bu domain ad? bo?, siz alabilirsiniz!”
write-host $sonuc2 -foregroundcolor “green”
$iewhois.quit()
}
else{
 
write-host $sonuc3 -foregroundcolor “red”
write-host “——————” -foregroundcolor “red”
write-host $sonuc -foregroundcolor “green”
$iewhois.quit()
}
}

Kullan?m? da oldukça basit.
Örnek: whois olmayandomain.com

Örnek: whois bakionur.com


Tesekkürler,
BakiOnur

Powershell ile Event Viewer verilerini çekmek

Powershell ile sisteminizde meydana gelen olayları (Event) istenilen kategoride ve seviyede listeleyebilirsiniz.

Critical

Get-WinEvent system | where{$_.level -eq 1}

Error

Get-WinEvent system | where{$_.level -eq 2}

Warning

Get-WinEvent system | where{$_.level -eq 3}

Information

Get-WinEvent system | where{$_.level -eq 4}

Verbose

Get-WinEvent system | where{$_.level -eq 5}

 

Yukarıda SYSTEM yazan kısıma Application, Security ya da Setup kategorileri yazarak kendinize göre özelleştirebilirsiniz.

Yukarıdaki komutun sonuna ayrı bir “Pipe” (|) ekleyerek bu listelenen veriler bir dosyaya yazdırılabilir. Bunun için

Örnek:

Get-WinEvent system | where{$_.level -eq 2} | Export-CSV C:\events.csv

 

Teşekkürler,

BakiOnur

Powershell ile Hızlı ve Kolay E-mail Gönderin

Dikkat edilecek olursa powershell ile erişilemeyecek yer yok!

Bu sefer de Powershell içerisinden e-mail atacağız. Bazen özellikle test amaçlı olarak hızlı bir e-mail atmanız gerekebilir. Ya da her 5 dakikada bir e-mail sunucunuza dış bir e-mail hesabınızdan e-mail atarak sisteminizin çalışabilirliğini kontrol edebilirsiniz. Ben de bu amaçla hazırladığım bu script’i kullan?yorum. İşte o script!

$hesapbilgileri = Get-Credential$kullaniciAdi = $hesapbilgileri.username.Replace(“\”,””)

$parola = $hesapbilgileri.GetNetworkCredential().password

$Emailfrom=”test@hotmail.com

$EmailTo = “onur.okutucu@bilgeadam.com

$Subject = “Baki Onur OKUTUCU – MVP

$Body = “Baki Onur OKUTUCU

$SMTPServer = “smtp.live.com”

$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)

$SMTPClient.EnableSsl = $true

$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($kullaniciAdi, $parola);

$SMTPClient.Send($Emailfrom, $EmailTo, $Subject, $Body)

Yukarıdaki script içerisinde kırmızı ile işaretlediğim yerleri kendinize göre değiştirip kullanabilirsiniz.

Script çalıştırıldığında önce sizden e-mail adresinizi ve sifrenizi isteyecektir. Sonrasında ise yukarıdaki bilgilere göre e-mail gönderecektir.


Yukarıdaki script sizden e-mail adresi ve parola soruyor. Bunu daha da otomatik hale getiremez miyiz?

Eğer e-mail adresi ve sifre sormasını istemiyorsanız Script’i aşağıdaki şekilde kullanmalısınız. Unutmamalısınız ki bu yöntemle sifrenizi peşin peşin script dosyasının içine yazmış oluyorsunuz. Yukarıdaki script bu noktada daha güvenli olabilir. Karar size kalmış!

$Emailfrom=”test@hotmail.com“$EmailTo = “onur.okutucu@bilgeadam.com

$Subject = “Baki Onur OKUTUCU – MVP

$Body = “Baki Onur OKUTUCU

$SMTPServer = “smtp.live.com”

$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)

$SMTPClient.EnableSsl = $true

$SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“test@hotmail.com“, “testparola“);

$SMTPClient.Send($Emailfrom, $EmailTo, $Subject, $Body)

Yine kırmızı alanları değiştirmeyi unutmayalım lütfen.

Bingooo!


Tesekkürler,

BakiOnur

Powershell içerisinden Hava Durumu’na bakın

Powershell’in eğlenceli dünyasından bir örnek daha yapalım istiyorum. Bu sefer yine aklıma gelen ve çalışınca mutlu oldugum script’lerden birini daha paylaşacağım sizlerle : )
Sıkça yaptığımız işerden biri de hava durumunu kontrol etmektir. Bu işi de otomatik hale getiremez miyim? Elbette getirebilirim! Bakalım nasıl?
Öncelikle daha önceki yazılarda belirttiğim gibi Powershell Script’lerinizin Powershell açıldığında otomatik yüklenmesini sağlamak için Powershell profilinize bu Script’lerin yolunu göstermelisiniz.
Daha önce yaptığım örneklerde aşağıdaki yol üzerinde bulunan Powershell Profili içerisine profile.ps1 isminde bir dosya oluşturmanızı ve scriptlerinizi bu dosya içerisine kopyalamanızı söylemiştim. Fakat birden çok script oldugunda dosya biraz karışık hale gelebilir. Bu sebeple daha iyi bir fikrim var!
Profile.ps1 dosyasına sadece Script’lerinizin bulunduğu yolu verelim ve o kendisi gidip her açıldığında o scriptleri kendisine yüklesin. Böylece profile.ps1 dosyası da hiç büyümesin ve anlaşılmaz hale gelmesin. Öncelikle bu işi halledelim sonrasında Hava Durumu Script’ini inceleyelim.
Öncelikle daha önce de belirttiğim gibi aşagıdaki yola gidelim. Bu yol yoksa kendimiz oluşturalım. Profile.ps1 dosyası yoksa onu da oluşturalım.

 
Sonra profile.ps1 dosyamızı açıp içerisine aşağıdaki kodu ekleyelim
Not: Eğer daha önceki makalede profile.ps1 dosyası içerisine sozluk kodlarını kopyalamışsanız lütfen önce bu kodları siliniz ve temiz bir profile.ps1 dosyanız oldugundan emin olunuz. Ardından aşağıdaki işlemleri uygulayınız.

# Powershell script lokasyonumuzu belirtiyoruz 
$UserProfile = (Get-ChildItem Env:UserProfile).Value;
$ScriptFolder = “$UserProfileMy documentsWindowsPowerShell”;
 
#############################################
# Scripts lokasyonundaki butun scriptleri
# (profile.ps1 haric) profile icerisine
# yukluyoruz boylece scipt klasorundeki
# butun scriptler powershell her acildiginda
# yuklenmis ve calismaya hazir oluyor
#############################################
 
Get-ChildItem $ScriptFolder -name -include ‘*.ps1’ -exclude ‘profile.ps1’ | foreach { (. “$ScriptFolder$_”) };

 
Bu kod ile WindowsPowershell klasörü içerisine att???m ve daha sonra ataca??m bütün .ps1 uzant?l? Powershell Script’lerinin Powershell taraf?ndan otomatik olarak tan?nmas?n? sa?l?yorum. Bu i?lemi bir kereye mahsus olarak yapm?? olmam bu i?in en güzel taraf?. Daha sonra ise Powershell her aç?ld???nda otomatik olarak yüklenmesini istedi?im Script’leri ayn? klasör içerisine (WindowsPowershell) at?yorum.
Daha önceki makalemde kulland???m sozluk.ps1 dosyas?n? ve a?a??da payla?t???m hava.ps1 dosyas?n? bu klasör içerisine (WindowsPowershell) at?yorum.
?imdi de gelelim hava durumuna!
Hava.ps1 dosyas?n?n içeri?i ise ?öyle:

function hava($lokasyon){$ie2 = new-object -com “InternetExplorer.Application”
$ie2.navigate(”
http://www.dmi.gov.tr/tahmin/il-ve-ilceler.aspx?m=$lokasyon”)
start-sleep -s 3
 
write-host $lokasyon “icin hava durumu” -foregroundcolor “green”
 
write-host “Bugün ” $ie2.document.getElementById(“ctl00_mpBody_thmGun1”).innertext -foregroundcolor “Green”
 
write-host $lokasyon “için en düşük sicaklik” $ie2.document.getElementById(“ctl00_mpBody_thmMin1”).innertext “derece olacaktır.” -foregroundcolor “Yellow”
 
write-host $lokasyon “için en yüksek sıcaklık” $ie2.document.getElementById(“ctl00_mpBody_thmMax1”).innertext “derece olacaktır.” -foregroundcolor “Yellow”
 
write-host $lokasyon “için en düşük nem oran? %” $ie2.document.getElementById(“ctl00_mpBody_thmNemMin1”).innertext “olacaktır.” -foregroundcolor “Yellow”
 
write-host $lokasyon “için en yüksek nem oranı %” $ie2.document.getElementById(“ctl00_mpBody_thmNemMax1”).innertext “olacaktır.” -foregroundcolor “Yellow”
 
write-host $lokasyon “için rüzgar” $ie2.document.getElementById(“ctl00_mpBody_thmRuzgarHiz1”).innertext “km hızında esecektir.” -foregroundcolor “Yellow”
$ie2.quit()
}

 
Bunun kullanımı da oldukça kolay ve pratik.
Hava izmir


İşte bu kadar!
 
Günlük hayatımızda herkes için yararlı olacak diğer kullanışlı script’lerle yeniden beraber olmak üzere…
Tesekkürler,
BakiOnur

Powershell içerisinde Ingilizce-Türkçe Sözlük

Günlük HAYATIm?zda, özellikle yaz??malar?m?zda s?kl?kla kulland???m?z Ingilizce-Türkçe sözlükleri bilirsiniz. Bazen gün içerisinde spesifik bir kelime için defalarca ziyaret ederiz bu siteleri.

Powershell HAYATIm?z?n her an?nda yan?m?zda malum. Küçük ama kullan??l? bir script ile Powershell’inize sözlük özelli?i kazand?rmak istemez misiniz?

Ben kendim için yazd???m ve oldukça faydas?n? gördü?üm bu script’i sizlerle de payla?mak istiyorum. Günlük i?lerinizi yaparken -hele bir de benim gibi çok s?k Powershell kullan?yorsan?z- dikkatinizi dap?tmadan çal??t???n?z pencere içerisinde sözlü?ünüzü kullanabilirsiniz. Nas?l m??

Öncelikle ihtiyac?m?z olan script’in Powershell her aç?ld???nda yüklenmesi gerekir. Bunun için profil yolunuzda (a?a??daki resim) a?a??daki gibi bir dosya olu?turmal?s?n?z.

E?er Documents klasörünüzün içinde WindowsPowershell adl? bir klasör yoksa kendiniz olu?turmal?s?n?z. ?çerisine de profile.ps1 isimli bir dosya olu?turulmal?.

Bundan sonra ise a?a??da gördü?ünüz kodu profile.ps1 dosyas?n?n içerisine kopyalamak gerekiyor.

function sozluk($kelime){

$ie = new-object -com “InternetExplorer.Application”

$ie.navigate(“http://www.zargan.com/sozluk.asp?sozcuk=$kelime”)

start-sleep -s 2

$sonuc=$ie.Document.body.innertext

$sonuc | set-content sonuc.txt

 

#####################################################

###### Suzme islemini yapalim ve ekranda ############

###### yalnizca sonuclarin gorunmesini saglayalim ###

#####################################################

 

$al=get-content sonuc.txt

$al -replace “fiil?DS”,”” | SET-CONTENT sonuc.txt

$al=get-content sonuc.txt

$al -replace “?DS”,”” | SET-CONTENT sonuc.txt

$al=get-content sonuc.txt

$al -replace “© 2001-2011, Zargan ingilizce sözlük | Kullan?m ?artlar? | ?leti?im | Reklam | Yazan: Ugur | Çizen: Ahmet | Zargan Ma?azas?”,”” | SET-CONTENT sonuc.txt

$al=get-content sonuc.txt

$al -replace ” Ingilizce Kursu | Sitene ekle | Mesajlar | Son arad?klar?m |”,”” | SET-CONTENT sonuc.txt

$al=get-content sonuc.txt

$al -replace “EnglishZargan Ingilizce Sözlük”,”” | SET-CONTENT sonuc.txt

$al=get-content sonuc.txt

$al -replace “Üye Giri?iÜye Ol”,”” | SET-CONTENT sonuc.txt

$al=get-content sonuc.txt

$al=get-content sonuc.txt

$al -replace “TürkçeIngilizceTürKaynak”,”” | SET-CONTENT sonuc.txt

 

#####################################################

#####################################################

 

$sonuc=get-content sonuc.txt

$sonuc | foreach {write-host $_ -foregroundcolor “yellow”}

$ie.quit()

remove-item sonuc.txt

}

 

Art?k sözlü?ümüz emrinizde!

Powershell’i çal??t?r?p a?a??daki ?ekilde kelime aratabilirsiniz.

Sozluk onur

Internet ba?lant?n?z oldugunu kontrol etmeniz gerekti?ini söylemekte fayda var elbette! : )

zargan.com’a da Tesekkür edelim bu güzel site için. : )

Tesekkürler,

BakiOnur

Powershell ile Ekran Görüntüsünü (Screenshot) Almak

Günlük işlerimizde çoğu zaman çalıştığımız ekranın görüntüsünü alma ihtiyacı hissederiz. Bunun için kullandığımız bir düzine uygulama var elbette. Ben de bu görevi Powershell ile yaptırabileceğimizi göstermek istedim sizlere. Özellikle otomatize etmek istediğimiz işlerde oldukça etkili olan Powershell ile aşağıdaki gibi bir script hazırladım. Bu script çalıştıktan sonra 3’e kadar sayıp ekran görüntüsünü alıyor ve C:\ altında ekrangoruntusu.png ismiyle kaydediyor. Script’i çalıştırdığınız zaman eğlenceli bir de sürpriz görüyor olacaksınız. J

Özellikle yardım masası elemanlarının uzaktaki çalışanlardan ekran görüntülerini almalarını istediklerinde bu iş bazen göründüğündn çok daha uzun zaman alabiliyor. Kullanıcıların bilgisayarlarına uygulama yüklemeye gerek kalmadan yalnızca Powsershell ile bu işi yapmalarını sağlayabilirsiniz.

İşte script’imiz aşağıda..

Script’i doğrudan çalıştırmak yerine bir bat dosyası hazırlayıp Powershell’i sessiz modda çağırma yoluna gittim. Böylece ekran görüntüsü alınırken Powershell penceresinin ekranda olmamasını sağladım.

Bat dosyasının içeriği ise şöyle:

powershell.exe -windowstyle hidden -f ekrangoruntusu.ps1

Bat ve .ps1 dosyalarının bulunduğu dosyaya aşağıdaki linkten ulaşabilirsiniz.

Screenshot.zip

Teşekkürler,

BakiOnur

Powershell içinden hava durumuna bakın

Powershell’in eğlenceli dünyasından bir örnek daha yapalım istiyorum. Bu sefer yine aklıma gelen ve çalışınca mutlu oldugum script’lerden birini daha paylaşacağım sizlerle : )

Sıkça yaptığımız işerden biri de hava durumunu kontrol etmektir. Bu işi de otomatik hale getiremez miyim? Elbette getirebilirim! Bakalım nasıl?

Öncelikle daha önceki yazılarda belirttiğim gibi Powershell Script’lerinizin Powershell açıldığında otomatik yüklenmesini sağlamak için Powershell profilinize bu Script’lerin yolunu göstermelisiniz.

Daha önce yaptığım örneklerde aşağıdaki yol üzerinde bulunan Powershell Profili içerisine profile.ps1 isminde bir dosya oluşturmanızı ve scriptlerinizi bu dosya içerisine kopyalamanızı söylemiştim. Fakat birden çok script oldugunda dosya biraz karışık hale gelebilir. Bu sebeple daha iyi bir fikrim var!

Profile.ps1 dosyasına sadece Script’lerinizin bulunduğu yolu verelim ve o kendisi gidip her açıldığında o scriptleri kendisine yüklesin. Böylece profile.ps1 dosyası da hiç büyümesin ve anlaşılmaz hale gelmesin. Öncelikle bu işi halledelim sonrasında Hava Durumu Script’ini inceleyelim.

Öncelikle daha önce de belirttiğim gibi aşagıdaki yola gidelim. Bu yol yoksa kendimiz oluşturalım. Profile.ps1 dosyası yoksa onu da oluşturalım.


Sonra profile.ps1 dosyamızı açıp içerisine aşağıdaki kodu ekleyelim

Not: Eğer daha önceki makalede profile.ps1 dosyası içerisine sozluk kodlarını kopyalamışsanız lütfen önce bu kodları siliniz ve temiz bir profile.ps1 dosyanız oldugundan emin olunuz. Ardından aşağıdaki işlemleri uygulayınız.

# Powershell script lokasyonumuzu belirtiyoruz

$UserProfile = (Get-ChildItem Env:UserProfile).Value;

$ScriptFolder = “$UserProfileMy documentsWindowsPowerShell”;

#############################################

# Scripts lokasyonundaki butun scriptleri

# (profile.ps1 haric) profile icerisine

# yukluyoruz boylece scipt klasorundeki

# butun scriptler powershell her acildiginda

# yuklenmis ve calismaya hazir oluyor

#############################################

Get-ChildItem $ScriptFolder -name -include ‘*.ps1′ -exclude ‘profile.ps1′ | foreach { (. “$ScriptFolder$_”) };

Bu kod ile WindowsPowershell klasörü içerisine att???m ve daha sonra ataca??m bütün .ps1 uzant?l? Powershell Script’lerinin Powershell taraf?ndan otomatik olarak tan?nmas?n? sa?l?yorum. Bu i?lemi bir kereye mahsus olarak yapm?? olmam bu i?in en güzel taraf?. Daha sonra ise Powershell her aç?ld???nda otomatik olarak yüklenmesini istedi?im Script’leri ayn? klasör içerisine (WindowsPowershell) at?yorum.

Daha önceki makalemde kulland???m sozluk.ps1 dosyas?n? ve a?a??da payla?t???m hava.ps1 dosyas?n? bu klasör içerisine (WindowsPowershell) at?yorum.

?imdi de gelelim hava durumuna!

Hava.ps1 dosyas?n?n içeri?i ise ?öyle:

function hava($lokasyon){$ie2 = new-object -com “InternetExplorer.Application”

$ie2.navigate(”

http://www.dmi.gov.tr/tahmin/il-ve-ilceler.aspx?m=$lokasyon”)

start-sleep -s 3

write-host $lokasyon “icin hava durumu” -foregroundcolor “green”

write-host “Bugün ” $ie2.document.getElementById(“ctl00_mpBody_thmGun1″).innertext -foregroundcolor “Green”

write-host $lokasyon “için en düşük sicaklik” $ie2.document.getElementById(“ctl00_mpBody_thmMin1″).innertext “derece olacaktır.” -foregroundcolor “Yellow”

write-host $lokasyon “için en yüksek sıcaklık” $ie2.document.getElementById(“ctl00_mpBody_thmMax1″).innertext “derece olacaktır.” -foregroundcolor “Yellow”

write-host $lokasyon “için en düşük nem oran? %” $ie2.document.getElementById(“ctl00_mpBody_thmNemMin1″).innertext “olacaktır.” -foregroundcolor “Yellow”

write-host $lokasyon “için en yüksek nem oranı %” $ie2.document.getElementById(“ctl00_mpBody_thmNemMax1″).innertext “olacaktır.” -foregroundcolor “Yellow”

write-host $lokasyon “için rüzgar” $ie2.document.getElementById(“ctl00_mpBody_thmRuzgarHiz1″).innertext “km hızında esecektir.” -foregroundcolor “Yellow”

$ie2.quit()

}

Bunun kullanımı da oldukça kolay ve pratik.

Hava izmir


İşte bu kadar!

Günlük hayatımızda herkes için yararlı olacak diğer kullanışlı script’lerle yeniden beraber olmak üzere…

Tesekkürler,

BakiOnur