Month: October 2015

Powershell ile -Computer- Komutları -Part 2

Bu ikinci bölümde de Windows’un sürücüler üzerinde sunduğu Restore seçeneklerinin nasıl yönetildiğine göz atacağız.

Bildiğiniz gibi System Restore olarak bilinen system koruma özelliği sayesinde işletim sisteminin bulunduğu sürücünün (sistem sürücüsü) belirli bir zamana geri döndürülmesi sağllanabilir. Buna Restore diyoruz. Özellikle sanallaştırma platformlarında bunu sıkça kullanıyoruz. Windows içinde System Protection / System Restore bölümüne aşağıdaki şekilde ulaşabiliyoruz.

Protection seçeneklerini Powershell üzerinden nasıl yönetiyoruz sorunu yanıtlayalım öyleyse…

 

Bilgisayarımda bulunan Checkpoint’lerimi görmek için;

Neden boş? Çünkü Restore özellikleri benim bilgisayarımda kapalı. Öyleyse açalım. Bunu da komutla yapacağız elbette.

Artık ilk Checkpoint’imizi alabiliriz. Checkpoint’ler sistemin o anki durumunun fotoğrafı niteliğindedir. Sistemde herhangi bir sorun olduğunda daha önce alınmış olan Checkpoint’ler (snapshot olarak da kullanılır) içerisinden istediğinize geri dönebilirsiniz (Restore).

RestorePoğintType parametresi için aşağıdaki değerlerden birini kullanabilirsiniz.

  • APPLICATION_INSTALL
  • APPLICATION_UNINSTALL
  • DEVICE_DRIVER_INSTALL
  • MODIFY_SETTINGS
  • CANCELLED_OPERATION

Artık Get-ComputerRestorePoint ile şu ana kadar alınmış tüm checkpoint’lerimi görebiliim.

Artık sistemimde Restore Point’im (checkpoint) var. Bunu da sistem özelliklerinden teyit edelim.

Artık yukarıdaki System Restore butonu sayesinde dilediğim zamana geri dönebilirim!

 

Son olarak eğer bu özelliği devredışı bırakmak istersem;

Sorularınız için bakionur@bakionur.com

Powershell ile Custom Object Oluşturmak

Bazen Powershell’in sunduğu default çıktılar tam anlamıyla sizin istediğiniz çıktılar olmayabilir. Bu durumda Powershell’in çıktılarını özelleştirmeniz gerekebilir. Buna bir örnek vermek gerekirse;
Diyelim, Get-Process komutunu kullanıyoruz ve bu komutun çıktıları bizim için yeterli değil.


Yukarıdaki örnekte olduğu gibi Get-Process komutunun çıktılarından oluşan ve çeşitli değerler içeren bir tablo bulunuyor. Bu tablonun öğelerinin yanı sıra örneğin PM (Physical Memory) ve VM’nin (Virtual Memory) toplamını da ayrı bir sütunda görmek istiyorsam bunun için Custom bir Obje oluşturmak bir alternative çözüm. Bunu sadece bir tablo görünümü için değil daha sonra kullanabileceğim bir veri olarak da istiyorum.
Bunu nasıl başarabiliriz görelim.


Gördüğünüz gibi TotalMemory sütununu biz “uydurduk”. Bunu; yeni bir obje oluşturup bu objenin “Property”lerini özelleştirerek yaptık. PM ve VM zaten Powershell tarafından bana sunulmuştu. Ben de bu 2 değerin toplamını TotalMemory olarak ayrı bir “Property” haline getirdim. Oluşturduğum bu Property’leri tıpkı Powershell’in kendi cmdlet’lerinin elemanlarına bakarken yaptığım gibi Get-Member komutu ile de görebilirim.


Sorular icin bakionur@bakionur.com

Powershell ve WMI Objeleri

WMI, Windows Management Instrumentation, eskiden beri kullandığımız bir yapı aslında. İşletim sisteminin tüm donanım ve yazılım objeleriyle iletişim kurarak bilgi edinmesini ve yönetilmesini sağlayan bir platform olarak da düşünebiliriz. Eskiden komut satırından

komutuyla yönetebildiğimiz bu platformu Powershell içerisinden de oldukça hızlı ve yetenekli bir biçimde yönetebiliyoruz.

WMI platform katmanlardan oluşur. En üstte Namespace, onun altında Class, onun da altın objeler yer alır.

Bir WMI Class’ı içinde neler olduğuna bakalım o halde:

  • Properties: bilgi içeren alanlar
  • Methods: Aksiyon komutları
  • Events: Olaylar

Biz yukarıdakilerin ilk ikisiyle ilgileneceğiz. Yani Property ve Method. Tıpkı herhangi bir Powershell komutunun Get-Member ile gördüğüm Property ve Member’leri gibi!

Powershell içinde WMI için

cmdlet’i kullanılır.

Powershell ile yönetebileceğiniz tüm WMI Sınıflarını görmek için şu komutu kullanmalısınız.

Bunun çıktısı şu şekilde olur:

En sol sütundaki Win32_ ile başlayan tüm class’ları Get-WMIObject komutu ile kullanabilir ve detaylarına göz atabilirim.

Tüm bu Class ve altındaki Property, Method gibi objeleri detaylı incelemek için aşağıdaki araçları kullanabilirsiniz.

MOW WMI Explorer

https://4sysops.com/archives/free-mow-powershell-wmi-browser/

WMI Administrative Tools

http://www.microsoft.com/en-us/download/details.aspx?id=24045

SAPIEN WMI Explorer

http://www.sapien.com/software/wmiexplorer

 

Şimdi en çok kullanılan WMI Class’larıyla biraz oynayalım.

En çok kullanılan WMI Class örneklerine, her bir Class’a ait Property (bilgi komutu) ve Method (aksiyon komutu) detayını da dahil ederek göz atalım.

Bu Class’a ait Property ve Method’ları listeleyelim. Unutmadan yukarıda gördüğünüz bilgiler birer Property’dir. Aşağıdaki listede çok daha fazla Property bulunuyor. Tüm bu bilgileri de görmek için;

komutunu kullanabilirsiniz. Bu, aşağıdaki tüm Class’larda geçerlidir!

Bu Class’a ait Property ve Method’ları listeleyelim.

Bu Class’a ait Property ve Method’ları listeleyelim.

Bu Class’a ait Property ve Method’ları listeleyelim.

Not: BIOS için Method bulunmuyor

Bu Class’a ait Property ve Method’ları listeleyelim.

Bu Class’a ait Property ve Method’ları listeleyelim.

WMI tarafına ilk bakışı yaptık. Daha farklı Class’larda görüşmek üzere.

Sorular icin bakionur@bakionur.com

Powershell’de File Hash Almak

Özellikle büyük boyutlu dosyaları indirdiğinizde file integrity check yapma ihtiyacınız olur. Yani dosyanın doğru şekilde size ulaştığından emin olmanız gerekir. Bu tür durumlar için kullanılabilecek bir cmdlet var. Ne mi?

Istediğiniz dosyanın farklı algoritmalara göre Hash karşılığını size verebilen bir cmdlet bu.

Peki hangi algoritmaları kullanabiliyorum?

  • SHA1
  • SHA256
  • SHA384
  • SHA512
  • MACTripleDES
  • MD5
  • RIPEMD160

Sorular icin bakionur@bakionur.com

Powershell’de yazılan tüm komutları otomatik olarak dosyaya kaydetmek

Powershell’de yazdığım her şeyi kayıt altına alsa biileri! Sonradan incelesem, neler yazmışım, neler yapmışım?

Bu da düşünülmüş.

Bu komutu istersem -Outputdirectory ve -Path parametreleri ile de kullanabilirim. Eğer parametresiz kullanırsanız transcript dosyasını Documents altında oluşturur ve başlar dinlemeye. Bundan sonra ben durdurana kadar bütün komutlarımı kaydeder. Eğer istersem -IncludeInvocationHeader parametresini de kullanarak her yazdığım komutun ne zaman çalıştırıldığı bilgisini de benim için saklayacaktır.

Sorular icin bakionur@bakionur.com

Powershell ile -Computer- Komutları – Part 1

Powershell’in, ek bir modül yüklemeden neler yapabileceğini görebilmek için get-command komutunu kullanmanızı şiddetle tavsiye ederim. Bu, size varolan komutları listeleyecek ve bu sayede siz aslında Powershell ile neleri yapabileceğinizi görmüş oılacaksınız. Bu ipucu; sizin istediğiniz komutu öğrenerek uygulayabilmenizi sağlayacaktır.

İçinde sadece Computer geçen cmdlet’leri listelediğimde aşağıdaki gibi bir liste çıkıyor karşıma.

Şimdi bunlara bakalım…

Bilgisayarın ismini değiştirmek için;

Bilgisayarı yeniden başlatmak için (bunu uzak bilgisayarı yeniden başlatmak için de kullanabilirsiniz);

Local bilgisayarı yeniden başlatmak istiyorsanız ComputerName parametresini kullanmanıza gerek yok. Fakat buradaki önemli nokta, local bilgisayarı yeniden başlatırken wait ve delay parametreleri desteklenmiyor. Force paremetresi restart’a zorlamak için kullanılırken, Confirm parametresi ise ek bir onay gerekmediğine işaret ediyor.

Locak ya da uzak bir bilgisayarı yeniden başlatmak için de aşağıdaki komutu kullanabilirsiniz. Yine local bilgisayar için ComputerName parametresine ihtiyacınız olmadığını hatırlatayım.

Bir bilgisayarı bir workgroup’a dahil etmek için;

Bir bilgisayarı Domain ortamına dahil etmek (Domain Join) için;

Bir bilgisayarı Domain ortamından çıkartmak için;

Local bilgisayarın Domain Controller ile iletişim kurarken kullanığı parolayı sıfırlamak için aşağıdaki komut kullanılır. Ek olarak Credential parametresi kullanılabilir.

Domain ortamındaki bilgisayarların Domain Controller iletişimlerinin test edilmesi için aşağıdaki komut kullanılır. Olası bir sorunu onarmak için -Repair parametresi kullanılır.

Sorular icin bakionur@bakionur.com

 

 

Powershell’de en çok kullanılan değişkenler (Variables) ve örnekler

Veri tiplerine göre değişkenler çok çeşitli olarak kullanılabiliyor. Bir değişken içinde isim saklanabilirken diğerinin içinde tarih bilgisi saklanabiliyor. Yine aynı şekilde içinde xml barındıran değişkenler varken içinde doğru-yanlış (Boolean) bilgisi saklayabilen değişkenler de mevcut. Peki hangi tip değişken ne türde verileri sakalayabiliyor hızlıca bakalım.

Değişkenin içeriğine göre Powershell very tipini otomatik belirleme özelliğine sahip. Siz dilerseniz bunu değiştirebilirsiniz elbette.

32-bit büyüklüğe kadar sayılar Int32 veri tipinde saklanır

64-bit büyüklüğe kadar sayılar Int364 veri tipinde saklanır

Ondalıklı sayılar Double veri tipinde saklanır.

Metinler String veri tipinde saklanır.

Tarih formatındaki veriler DateTime veri tipinde saklanır.

$true ya da $false gibi 0 ya da 1 sonucu döndüren veriler içeren değişkenler Boolean veri tipinde saklanır.

Karakter saklayan veriler CHAR veri tipinde saklanır

Tarih aralığı içeren veriler TimeSpan veri tipinde saklanır

Object içeren veriler Object[] veri tipinde saklanır.

Hashtable (içinde birden çok değişken ve değer içeren tablolar) içeren veriler Hashtable veri tipinde saklanır.

Aşağıdaki da değişkenlerin farklı kullanımlarından bir kaç örnek..

Sorular icin bakionur@bakionur.com

Powershell’de bir komutun ne kadar sürede tamamlandığını hesaplamak

Powershell’de bir komutun ne kadar sürede tamamlandığını görmek ister misiniz?

Buyrun o halde!

 

Burada Measure-Command komutundan sonra hangi komutu inceleyeceğimi belirliyorum. Bunun için ben kendi örneğimde

komutunu denedim. 3.5 saniyede sonuçlandı.

Sorular icin bakionur@bakionur.com