|
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).
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
Ş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 *
Ş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"
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
Sadece örneklerin ekrana gelmesi isteniyorsa examples parametresi kullanılır:
get-help get-command –examples
Get-command komutuyla ilgili tüm parametreler görülmek isteniyorsa aşağıdaki komut girilir:
get-help get-command -parameter *
Get-date komutunun çalıştırılmasıyla o anki zaman bilgisi ekrana yansır:
Mevcut oturumunuzdaki kullanılan komutları listelemek için de get-command komutu çalıştırılır:
Şekil-9
Aşağıdaki örnekte DenemeSunucu bilgisayarının BIOS bilgisi elde edilir:
get-wmiobject win32_bios -computername DenemeSunucu
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
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
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
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"}
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.
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"
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
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
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:
-
http://technet.microsoft.com/en-us/magazine/cc162323.aspx
-
http://msdn.microsoft.com/en-us/library/aa973757(VS.85).aspx
-
http://technet.microsoft.com/tr-tr/bb467605(en-us).aspx
-
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
-
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx
-
http://windowsitpro.com/article/articleid/50565/introducing-windows-powershell.html
-
http://www.computerperformance.co.uk/powershell/
Favori olarak ekle (0) | Görüntüleme sayısı: 2555
Sadece kayıtlı kullanıcılar yorum yazabilir. Lütfen sisteme giriş yapın veya kayıt olun. |