21 Nisan 2013 Pazar

Windows PowerShell: Dosyalar, Kayıtlar ve Değişkenlerle Çalışma



    Merhaba arkadaşlar, geçen hafta Windows PowerShell ile işletim sistemi yönetimini anlatmıştım. Bu hafta sizlere dosyalar, kayıtlar ve değişkenlerle çalışmayı anlatacağım. Dosya sisteminin "Unix Shell" ve "cmd" ekranında olduğu gibi Windows PowerShell'de önemi büyüktür. Aşağıda anlatacağım konularla sürücüler, dizin ve kayıt defteriyle çalışmayı gözlemleyebilir, yapacağınız bazı temel seviyede örneklerle bunları uygulayabilirsiniz.


    En önemli dosya sistemi komutlarını ve açıklamalarını aşağıdaki tabloda görebilirsiniz.


Komut
Açıklaması
Kısaltması
Add-Content
Bir dosyanın içeriğini ekler.

ac
Clear-Host
Konsol penceresini temizler

cls, clear
Clear-Item
Dosyanın içeriğini siler.

cli
Copy-Item
Dosya veya klasörü kopyalar.
copy, cp, cpi
Get-ChildItem
Klasör içeriğini listeler

dir, ls, gci
Get-Content
Text tipindeki dosyaların içeriğini görüntüler.
type, cat, gc
Get-Item
Özel dosya ve klasörlere erişim sağlar.
gi
Get-ItemProperty
Dosya ve Klasörlerin özelliklerini görüntüler.
gp
Move-Item
Dosya ve klasörleri taşır.

move, mv, mi
New-Item
Yeni dosya veya klasör yaratır.
ni
Remove-Item
Dosya veya klasörü siler

ri, rm, rmdir, del, erase, rd
Rename-Item
Dosya veya klasör ismini değiştirir.
rni, ren,
Set-Location
Belirtilen dizini değiştirir.

cd, chdir, sl


    Bir klasörün içeriğini görüntülemek için Get-ChildItem kullanılır. Get-ChildItem aşağıdaki bazı önemli görevleri yerine getirir.

  • Dizin içeriğini görünür hale getirir.
  • Bazı dosyaları, dosya sistemi üzerinden hızlı bir şekilde arar ve bulur.
  • Dosya veya klasörleri getirir.


Get-ChildItem


    Bulunduğunuz klasördeki belirli dosyaları görüntülemek istiyorsanız "Dir *.txt" komutunu kullanabilirsiniz. Örneğin ben "Courses" klasöründeki "pdf" uzantılı dosyaları görüntülemek istiyorum.

Dir *.pdf


    Get-Location komutunu kullanarak o anda bulunduğunuz klasörün yolunu (path) görebilirsiniz.

Get-Location

Özel Dosya ve Klasörleri Bulma 



    Windows, yüklediğiniz programların verilerini, geçici dosyalarını veya yükleme dosyalarını farklı farklı yerlere kaydeder. Bazı dosyalar önemlidir, bazıları ise önemsizdir. Bu önemsiz dosyaları bulup elle silebilirsiniz. Bu dosyalara ulaşmak için "$env: ?"  komutunu kullanırız. Aşağıdaki tabloda ulaşacağımız klasör tiplerini ve kullanılan komutları görebilirsiniz.


Özel Klasör
Açıklaması
Klasör ulaşmak için komut
Application data
Uygulama verilerinin tutulduğu klasör.
$env:localappdata
User Profile
Kullanıcı özel klasörü

$env:userprofile
Data used  in common
Kullanılan bütün programların verilerinin tutulduğu klasör
$env:commonprogramfiles
Public Directory
Bütün kullanıcılar için ortak klasör

$env:public
Program Directory
Bilgisayar kurulan programların dosyaları.
$env:programfiles
Roaming Profiles
Roaming profili için uygulama verilerinin olduğu yer.
$env:appdata
Temporary Files (private)
Kullanıcı geçici dosyaları

$env:tmp
Temporary Files
Windows geçici dosyaları

$env:temp
Windows Directory
Windows‘un kurulduğu klasör.

$env:windir


    Örnekleri ve çıktılarını aşağıda görebilirsiniz.



Dosya ve Klasörlerle Çalışma



    Yeni bir dosya veya klasör oluşturmak için New-Item komutunu kullanabiliriz. "Type" parametresini de kullanarak dosya mı yoksa klasör mü oluşturacağımızı belirtiyoruz.




    Bir dosyanın içeriğini görüntülemek için Get-Content komutunu kullanıyoruz. Örneğin Windows güncelleme günlükleri görüntülemek istersek aşağıdaki komutu kullanabiliriz. Bu günlükler biraz uzun olduğundan ilk 25 tanesini göstermem yeterli olacaktır.


PS C:\Users\Vahit> Get-Content $env:windir\windowsupdate.log | Select-Object -First 25


Output:

 
    Dosya veya klasörleri bir dizinden başka bir dizine taşımak için Move-Item komutunu, kopyalamak için ise Copy-Item komutunu kullanmalıyız. İki komut aynı mantıkla çalışır. İki tane parametre alırlar. İlk parametrede taşıyacağımız dosya bulunmalıdır. İkinci parametrede ise dosyanın taşınacağı dizin bulunmalıdır.


                 1.parametre        2.parametre
Move-Item  user.txt  C:\Users\Vahit\Courses



    Bir dosyanın ismini değiştirmek için Rename-Item komutunu kullanmalıyız. Burada da komut iki tane parametre almaktadır. İlk parametre değiştirmek istediğimiz dosyanın ismi, ikinci parametre ise yeni isimdir.


                         1.parametre    2. parametre
Rename-Item  .\user.csv  .\user.txt



    Bir dosyayı ya da klasörü silmek için Remove-Item komutunu kullanmalıyız. Dikkat edilmesi gereken bir komuttur. Çünkü sildiği dosyayı geri dönüşüme göndermeden bilgisayardan tamamen siliyor!

Remove-Item user.txt



Kayıt Defteri (Registry)



    Kayıt defteri neredeyse tüm merkezi Windows ayarlarının tutulduğu yerdir. Bu yüzden farklı bir yapıyla (ağaç yapısı) düzenlenmiştir. Çok önemli ayarları içinde barındırmaktadır. Kayıt defterinde çalışırken çok dikkatli olmak gerekir. Burada yapılacak herhangi bir hata sisteminizin bozulmasına hatta çökmesine neden olabilir.

    Kayıt defteri hakkında ayrıntılı bilgileri aşağıdaki linkten edinebilirsiniz.



    Dosya sisteminde kullandığımız tüm PowerShell komutları kayıt defterinde de kullanılırlar. Örneğin bir anahtar (key) ve değer (value) oluşturmak için New-Item komutu kullanılır. Silmek için ise Remove-Item komutunu kullanılır.


New-Item -type Directory HKCU:\Software\Test1


Output:
PS C:\Users\Vahit> New-Item -type Directory HKCU:\Software\Test1


    Hive: HKEY_CURRENT_USER\Software


SKC  VC Name                           Property                                                                                         
---  -- ----                           --------                                                                                         
  0   0 Test1                          {}                                                                                             


New-Item -itemType String HKCU:\Software\Test3 -value "A default value"


Output:
PS C:\Users\Vahit> New-Item -itemType String HKCU:\Software\Test3 -value "A default value"


    Hive: HKEY_CURRENT_USER\Software


SKC  VC Name                           Property                                        
---  -- ----                           --------                                        
  0   1 Test3                          {(default)}                                     





    Aşağıdaki komutlarla bu kayıtları kayıt defterinden silebilirsiniz.

Remove-Item HKCU:\Software\Test1
Del HKCU:\Software\Test2
Del HKCU:\Software\Test3


    Bu eklediğimiz kayıtlara yeni anahtarlar ve değerler ekleyebilir, değiştirebilir ve silebiliriz. Kayıt defteri üzerinde çok fazla durmak istemiyorum. Bu konuda daha ayrıntılı bilgi almak isteyenler verdiğim referansları inceleyebilirler.


    Bu hafta anlatacaklarım bu kadar. Haftaya görüşürüz.



Referanslar:

Kitap: "Master-PowerShell with Dr. Tobias Weltner"
http://technet.microsoft.com/tr-tr/library/cc776231(v=ws.10).aspx


Hiç yorum yok:

Yorum Gönder