spacer.png, 0 kB
Bilgi için: bilgi at bilgiguvenligi gov tr   

 

spacer.png, 0 kB
spacer.png, 0 kB
Windows Powershell'e Genel Bir Bakış Yazdır E-posta
Tolga MATARACIOĞLU, TÜBİTAK-UEKAE   
03.02.2009

Windows PowerShell, özellikle sistem yöneticileri için tasarlanmış yeni bir Windows komut satırı sistemidir. Çoğu komut satırı sistemi gibi PowerShell de bilgisayarın dosya sistemine erişime imkan sağlar. Buna ek olarak PowerShell, kayıt defteri ve sayısal sertifika depoları gibi diğer veri kaynaklarına da erişimi, dosya sistemine erişim kadar basitleştirmiştir. Bu makalede Windows PowerShell’e bir giriş yapılacak ve temel komutlar, uygulama da yapılarak açıklanmaya çalışılacaktır.

PowerShell metin işleme yerine .NET platformunda nesneleri işleyen ve içerisinde çok daha fazla komut bulunduran bir sistemdir. Windows Server 2008 işletim sistemi üzerinde PowerShell kurulumunu “Server Manager” üzerinden yapmak mümkündür (Şekil-1).

1.jpg

Şekil-1

Komutlar temel olarak bir yüklem ve bir isimden oluşmakta ve yüklemle isim arasında çizgi işareti bulunmaktadır. Örneğin get-help, get-process, start-service gibi.

Kısaca “get” komutları sadece veri çekebilirken “set” komutları veri oluşturabilir ya da değiştirebilir, “format” komutları veriyi biçimleyebilirken “out” komutları çıktıyı belirli bir hedefe yönlendirebilir. Örneğin aşağıdaki komut sayesinde parantez içine yazılan komutla ilgili detaylı bilgi edinmek mümkündür:

 get-help <cmdlet-name> -detailed

PowerShell’le komut satırı programları çalıştırılabilir ve Not Defteri, Hesap Makinesi gibi grafik arayüze sahip programlar başlatılabilir. İlk başta farkına varılmasa da PowerShell’le çalışılırken aslında .NET nesneleriyle çalışılmaktadır. Örneğin PowerShell’le bir servis çağrıldığında aslında o servisi temsil eden nesne çağrılmış olur. Aynı zamanda o servisle ilgili bilgiler görülmek istendiğinde servise ait nesnenin özellikleri görülmüş olur.

Yazılan ilk komutun bilgilerini ikinci komuta aktarmak için boru (pipeline) operatörü kullanılır. Örneğin aşağıdaki komut, get-service komutuyla elde edilen nesneleri get-member komutuna girdi olarak sağlamaktadır:

 get-service | get-member

2.jpg

Şekil-2

Get-member komutuyla servis nesnesinin tipini, özelliklerini ve metodlarını görmek mümkündür. Örneğin “Schedule” servisinin tüm özelliklerini görmek için aşağıdaki komut yazılır:

get-service schedule | format-list -property *

3.jpg

Şekil-3

Aşağıdaki örnekte ipconfig komutuyla elde edilen çıktı, findstr komutuna girdi olarak aktarılmaktadır. Böylece içerisinde “Address” kelimesi geçen satırlar ekrana yansıtılır:

ipconfig | findstr "Address"

4.jpg

Şekil-4

PowerShell aynı zamanda betik desteği de sunmaktadır. Bu sistemle beraber .ps1 uzantılı betik dosyaları oluşturulur. Bir betiği çalıştırmak için komut satırından dosyanın ismi (dosya uzantısı yazmak opsiyonel) girilir:

 c:\deneme\denemebetik.ps1

ya da

  c:\deneme\denemebetik

Komut satırına, betik çalışılan dizinde yer alsa dahi, betik dosyasının yolu da girilmelidir. Mevcut dizini belirtmek için nokta (.) işareti kullanılır:

 .\denemebetik.ps1

Oldukça kullanışlı olmalarına rağmen bazı durumlarda betikler zararlı kod yaymak için kullanılabilir. Uygulama politikası (execution policy) denilen bir güvenlik politikası sayesinde PowerShell’de betiklerin çalışıp çalışmayacaklarını ya da sayısal bir imzaya sahip olmaları gerekip gerekmediğini belirlemek mümkündür.

Şimdi de bazı temel PowerShell komutlarını inceleyelim.

Get-help komutu sayesinde PowerShell kavramları ve kullanımıyla ilgili temel bilgiler elde edilir. Örneğin get-command komutuyla ilgili detaylı bilgi edinmek isteniyorsa aşağıdaki satır girilir:

 get-help get-command -detailed

5.jpg

Şekil-5

Sadece örneklerin ekrana gelmesi isteniyorsa examples parametresi kullanılır:

 get-help get-command –examples

6.jpg

Şekil-6

Get-command komutuyla ilgili tüm parametreler görülmek isteniyorsa aşağıdaki komut girilir:

 get-help get-command -parameter *

7.jpg

Şekil-7

Get-date komutunun çalıştırılmasıyla o anki zaman bilgisi ekrana yansır:

8.jpg

Şekil-8

Mevcut oturumunuzdaki kullanılan komutları listelemek için de get-command komutu çalıştırılır:

9.jpg

Şekil-9

Aşağıdaki örnekte DenemeSunucu bilgisayarının BIOS bilgisi elde edilir:

 get-wmiobject win32_bios -computername DenemeSunucu

 10.jpg

Şekil-10

Nesneler hakkında bilgi edinmek içinse get-member komutu kullanılır. Elde edilen bilgi nesnenin özellik, tip ve metodlarını içerir. Örneğin DHCP Client servisinin belirli bir özelliği olan “canpauseandcontinue” özelliğinin değerini listelemek için aşağıdaki komut çalıştırılır:

  (get-service dhcp).canpauseandcontinue

 11.jpg

Şekil-11

Tüm servislerin “canpauseandcontinue” özelliğinin değerini ve ismini tablo şeklinde görmek için aşağıdaki komut girilir:

 get-service | format-table -property name, CanPauseAndContinue

 12.jpg

Şekil-12

Metodlar .NET nesneleri üzerinde yapılabilecek hareketleri temsil eder. Örneğin ServiceController nesnelerinin, servisi durdurmaya yarayan bir stop metodu bulunmaktadır. Schedule servisini durdurmak için aşağıdaki komut çalıştırılır:

   (get-service schedule).stop()

Komut parametreleri, parametre ismi önünde yer alan bir tire (-) işaretiyle belirtilirler. Taksim (/ ya da \) PowerShell’de parametrelerle beraber kullanılmazlar.

Bütün komutlar, ortak parametreler adı verilen bir dizi parametreyi desteklemektedir. Detaylı bilgi için:

 get-help about_commonparameters

 13.jpg

Şekil-13

Tüm PowerShell komutları için takma isim (alias) kullanılabilir. Örneğin set-location komutuna atanmış takma isimleri görmek için aşağıdaki satır girilir:

 get-alias | where-object {$_.definition -eq "set-location"}

 14.jpg

Şekil-14

Takma isimlerin bulunduğu sürücü Alias: olarak tanımlanmıştır. Bu sürücüde bulunan tüm takma isimleri görmek için get-childitem komutu kullanılır. Kendi takma isimlerinizi de yaratmak mümkündür. Örneğin get-help komutu için ghlp takma ismini atamak istiyorsak aşağıdaki satırı çalıştırmalıyız:

set-alias gh get-help

Aynı zamanda PowerShell’de programları çalıştırmak için de takma isim atanabilir. Örneğin Not Defteri’ni çalıştırmak için ntpd takma ismini yaratmak isteyelim:

 set-alias np c:\windows\notepad.exe

Takma isimlerle ve komutlarla ilgili detaylar Tablo-1’de yer almaktadır.

tablo1.jpg

Tablo-1

Deneme.txt dosyasını Not Defteri’yle açmak için PowerShell’de aşağıdaki komut girilir:

 notepad deneme.txt

“notepad deneme.txt” için bir takma isim yaratmak mümkün olmamasına karşın bu işlem için aşağıdaki şekilde bir fonksiyon yaratılabilir. Buradaki deneme fonksiyonu da tıpkı bir takma isim gibi davranış gösterecektir:

 function deneme {notepad deneme.txt}

Windows PowerShell’in önemli özelliklerinden biri de, dosya sistemindekine benzer tekniklerle pek çok veri deposunda dolaşılmaya izin vermesidir. C:, D: gibi sıklıkla kullanılan dosya sistemi sürücülerine ek olarak PowerShell, HKEY_LOCAL_MACHINE (HKLM:) ve HKEY_CURRENT_USER (HKCU:) kayıt defteri kovanlarını ve sayısal sertifika depolarını (Cert:) da temsil eden sürücüler içermektedir. Şekil-16’dan da görüldüğü gibi tim sürücüleri görmek için get-psdrive komutu çalıştırılır. Aynı zamanda new-psdrive komutunu kullanarak kendi sürücülerimizi de yaratabilmemiz mümkün olmaktadır. Örneğin My Documents’a Belge isimli bir sürücü eşlenmek istenirse aşağıdaki komut çalıştırılmalıdır:

 new-psdrive -name Belge -psprovider FileSystem -root "$home\My Documents"

 15.jpg

Şekil-15

16.jpg

Şekil-16

PowerShell’de HKEY_LOCAL_MACHINE kovanı için HKLM: sürücüsü, HKEY_CURRENT_USER kovanı için de HKCU: sürücüsü yaratılmıştır:

cd hklm:
cd system\currentcontrolset\control
dir

17.jpg

Şekil-17

Benzer şekilde bilgisayar üzerindeki sayısal sertifika deposuna erişmek için de Cert: sürücüsü tanımlanmıştır:

 cd cert:
dir

 18.jpg

Şekil-18

Makalede yeni nesil komut ve betik sistemi olan Windows PowerShell’i temel komutları ele alarak anlatmaya çalıştık. Bu sistemle beraber gelen yeni özellikleri de dikkate alacak olursak kısa zamanda PowerShell’in oldukça işe yarayacak bir sistem olacağını söylememiz pek de yanlış olmaz.

 

Referanslar:

  1. http://technet.microsoft.com/en-us/magazine/cc162323.aspx

  2. http://msdn.microsoft.com/en-us/library/aa973757(VS.85).aspx

  3. http://technet.microsoft.com/tr-tr/bb467605(en-us).aspx

  4. http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

  5. http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx

  6. http://windowsitpro.com/article/articleid/50565/introducing-windows-powershell.html

  7. http://www.computerperformance.co.uk/powershell/

     

 


Favori olarak ekle (0) | Görüntüleme sayısı: 2555

Yorumlar (1)
1. 06-02-2009 20:48
 
Esnek bir scrip yapısına sahip olan Windows PowerShell ileride açıklıklarıyla adından söz ettireceğe benziyor. En sert duruşa hakim Server 2008 üzerine kurulu dahi olsa esnek scrip dili sayesinde bana göre ileride adını çok duyacağımıza benziyor. 
Bilmeyenler için güzel bir makale olmuş. Tavsiyem herkes göz atmalı. 
Teşekkürler Tolga bey...
 
Onur KARAMANLI

Sadece kayıtlı kullanıcılar yorum yazabilir.
Lütfen sisteme giriş yapın veya kayıt olun.

 
spacer.png, 0 kB
spacer.png, 0 kB
Copyright 2010 TÜBİTAK-UEKAE. Sitenin teknik altyapısında Joomla kullanılmıştır. Yazar ve site referans gösterilmeden alıntı yapılamaz. Görüşleriniz
spacer.png, 0 kB