search
Categories
Sponsors
VirtualMetric Hyper-V Monitoring, Hyper-V Reporting
Archive
Blogroll

Badges
MCSE
Community

Cozumpark Bilisim Portali
Posted in Windows Powershell, Windows Server | No Comment | 9,633 views | 18/01/2009 13:11

Bir önceki uygulamada, Powershell ile bir sayının karekökünün nasıl bulunabildiğini göstermiştim. Fakat şimdiki bölümde, for döngüsünü yayınladığım karekök bulma uygulamasını, PS’de yani Powershell’de nasıl çalıştırabileceğimize göz atacağız. Powershell’in genel olarak uygulama uzantısı .ps1’dir. Notepad içine karekök bulma uygulamasına ait kodları yapıştırır, sonrasında uzantısı .ps1 olacak şekilde kaydederseniz, bundan sonra .ps1 uzantılı uygulamayı ps’ye atmak kalır sadece. Ben az önceki uygulamanın adını karekok.ps1 yapıyorum. Şimdi Powershell üzerinde uygulamayı çalıştırmaya çalışalım. Uygulama çalıştırmak için karekok.ps1 dosyasının olduğu dizine geçiyoruz. Sonrasında PS’de .\karekok.ps1 yazıyoruz. Fakat bir hata mı aldık? PS üzerinde daha önce bir işlem yapmadıysanız, hatta PS’yi ilk açışınız ise bu uygulamayı çalıştırmaya çalışırken karşınıza kırmızı hata yazılarının olduğu bir ekran çıkacaktır. Yalnız bu bize, kodlarda hata olduğunu söylemliyor. Biraz daha dikkatli inceleyelim hatayı.

powershell1

Hatayı daha iyi inceleyebilmemiz için ekran çıktısını aşağıya yazıyorum.

File C:\Users\Administrator\Desktop\karekok.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see “get-help about_signing” for more details.
At line:1 char:13

Hatada bize execution of scripts is disabled diyor. Gerçekten de böyle bir durum söz konusu. Normalde Powershell’de default olarak “ExecutionPolicy” Restricted haldedir. PS’de Get-ExecutionPolicy komutunu çalıştırdığınızda “Restricted” yazdığını göreceksiniz. Bu yüzden imzasız olan uygulamalar, PS üzerinde çalışmamaktadır. Şimdi bizimki gibi uygulamaların da çalışabilmesi için bu sınırlamayı biraz değiştirelim. Bunun için PS’de aşağıdaki komutu yazalım.

1
Set-ExecutionPolicy RemoteSigned

Bu komut sonrasında Get-ExecutionPolicy yaptığımızda, artık Restricted yerine RemoteSigned yazdığını göreceksiniz. Ekran çıktısına bakalım:

powershell2

Şimdi bir sorunumuz kalmamış gibi görünüyor. RemoteSigned nedir, ne işe yarar, faydaları zararları nedir derseniz, bu konuya da bir sonraki makalede değineceğim. Çünkü şuanki konuda amacımız, uygulamamızı çalıştırmak. Bundan sonra yapmanız gereken, tekrar .\karekok.ps1 demek ve programın size doğru karekökü verdiğini izlemek. RemoteSigned ile bundan sonraki uygulamalarımızı çalıştırabilir hale geleceğiz. Bir sorun ile karşılaşırsanız sormaktan çekinmeyin. Kolay gelsin.

Not: Bazen aşağıdaki gibi yapmanız gerekebilir:

Set-ExecutionPolicy Unrestricted

Böylece kendi yazdığınız tüm Powershell scriptleri sorunsuz bir şekilde çalışacaktır.


Posted in Windows Powershell, Windows Server | No Comment | 2,393 views | 18/01/2009 12:06

Madem Powershell öğrenmeye başladık, biraz işin matematik kısmına girelim. Aslında Powershell matematik amaçlı yapılmış bir şey değil fakat dört işlem yapabiliyorsak, matematiksel işlemleri de yaptırabiliriz kendisine. Sanırım Powershell’de böyle bir işlem yaptırmış kişi daha yoktur ya da ben bulamadım. Yalnız ilginizi çekecek bir çalışma olabilir bu. Hiç değilse 13’ün 1000 iterasyon ile bulunan karekökünün 3,60555127546399 olduğunu görmek, hoşuma gitti benim. Haydi başlayım.

1
2
3
4
5
6
7
8
9
$kokubulunacaksayi=13
$ilkdeger=2
$iterasyon=1000
For ($i=0;$i –lt $iterasyon;$i++) {
$sonuc=$kokubulunacaksayi/$ilkdeger
$kok=($ilkdeger+$sonuc)/2
$ilkdeger=$kok
}
$kok

$kokubulunacaksayi olan değişkene 13 dedim. İşleme başlamak için bir tane ilk değer girmek gerekiyor. Bana en mantıklı yol, 13’ün yarısıyla başlamak gibi geldi. Bu yüzden $ilkdeger değişkeni için 2 verdim. Böylece yarısıyla başlayıp, aritmek ortalama ile devam edeceğiz. Sonrasında bir iterasyon sayısı belirlemem gerekiyor. Ne kadar büyük iterasyon sayıları verirsek, bulacağımız sonuç da o kadar yakın çıkacak. For döngüsünü biraz dikkatli inceleyelim. $i değeri 0’dan başlıyor ve 1000 olana kadar devam ediyor. Değerlerimiz 1’er 1’er artıyor. $kok işleminde çıkan sonuç ile $ilkdeger’in aritmetik ortalamasını alıyoruz ve $ilkdeger=$kok ile, $ilkdeger değerinin artık $kok olarak işleme girmesini sağlıyoruz. Tabiki 1000 işlem sonundaki sonucu görebilmek için de döngü sonuna $kok değişkenini koyuyoruz ve bize sonucu vermesini istiyoruz. Burada aslında sizlere for döngüsünü göstermeye çalıştığım. Bir sonraki bölümde while döngüsünü de göreceğiz ve aslında Virtual Machine Manager yani VMM için yazacağımız ufak çaplı scriptlere temel oluşturmuş olacağız. For döngüsüyle yapabilecekleriniz, hayal gücünüzle sınırlı. Kolay gelsin.