Take a look at “Docker Image Manager for Windows”, a free tool for admins that I’ve freshly developed in Powershell. With this tool, you can easily implement Docker image environment on your Windows Server 2016 platforms. DIM just downloads and installs all required files and services onto your system in seconds. You can create your own builds, list all images on your systems and manage them in a faster way! You can download the tool via Script Center.
—
Docker imajlarını Windows Server 2016 üzerinde kullanmak için gerekli tüm adımların otomatik bir şekilde yapılmasına olanak sağlayan bir tool geliştirdim ve bunu sizlerle paylaşmak istiyorum arkadaşlar.
Powershell ile geliştirdiğim bu tool ile Office 365 ortamınızda bulunan Dynamic Distribution gruplarınızın içindeki üyeleri görüntüleyebilir ve export edebilirsiniz.
Powershell ile Windows servislerinizin durumunu anlık olarak öğrenebilir, servis ayarlarınızı hızlı bir biçimde konfigüre edebilirsiniz. Bunun için Powershell’de en sık kullanılan yöntemleri görelim.
Get-Service
Bu standard komut ile hızlıca anlık çalışan servisleri listeleyebiliriz.
Ayrıca her komuta uygulayabileceğimiz gibi Get-Member ile bu komutla birlikte kullanabileceğimiz parametreleri (aslında property ve method) görebiliriz. Bu sayede bu komutun döndürdüğü değerlerin neler olduğunu görebiliriz. Set-Service komutunu kullanırken işimize yarayacaktır.
Şimdi WinRm servisini örnek olarak ele alalım ve bu servisi konfigüre edelim.
Öncelikle Get-Service ile bu servisin tüm ayarlarını listeleyelim.
Get-Service winrm | fl *
Set-Service
Şimdi de bu servisin ayarlarını Set-Service komutu ile değiştirip düzenleyebiliriz. Aşağıdaki 4 ayrı örnekte WinRm servisinin Başlangıç tipini ayarlamak, servisi başlatmak ve servisi kapatmak gibi işlemler yer alıyor.
Set-Service winrm -StartupType Automatic
Set-Service winrm -StartupType Manual
Set-Service winrm -Status Stopped
Set-Service winrm -Status Running
Get-Service ve Set-Service komutlarının yanı sıra aşağıdaki diğer servis yönetim cmdlet’lerine de biraz bakalım.
Restart-Service
Son derece basit kullanımlı bir cmdlet. Zaten adında da anlaşılacağı gibi komutun sonuna servis ismini yazarak Restart edebiliyorsunuz.
Restart-Service WinRM
Start-Service & Stop Service
Evet bu ikili de adlarından anlışacağı gibi servisleri başlatıp kapatmak için kullanılacak. Şöyle mesela;
Start-Service WinRM
Stop-Service WinRM
Peki ismi win ile başlayan tüm servisleri bul ve başlat demek istersem;
Bu cmdlet ile yeni bir Windows servisini ekleyebilirsiniz. Daha önceden derlenmiş bir Windows servisiniz var ve bunu Windows içine deploy etmek istiyorsunuz.
Chocolatey aslında free bir kütüphane. Powershell 5.0 içerisinde bulunan Package modülü sayesinde uygulamalarımı yönetebildiğimi düşünürsek Chocolatey’i de bunlardan biri gibi düşünebiliriz. Bir nev’I Uygulama Kaynağı (Package Source) aslında. Bilgisayarımda daha önceden yüklü programlar da birer package olarak değerlendirileceği için aslında uygulamalarımı yönetebileceğim zengin bir modül var karşımda. Hani modül peki bu?
Evet artık chocolatey kütüphanesinde hangi uygulamalar var göz atabilirim.
Rakam sürekli artıyor ve binlerle ifade ediliyor.
Peki gözümüze bir uyglama kestirdik, bunu Powershell içerisinden nasıl yükleyeceğiz?
Işte böyle!
Bakın yüklendi bile!
Peki ya kaldırmak istersek?
Sorular için bakionur@bakionur.com
Continue ReadingPowershell 5.0 Chocolatey ile yüzlerce uygulamaya sahip olun
Windows Servislerini yönetmek için Get-service, Set-Service, New-Service gibi komutları görmüştük. Şimdi de WMI kullanarak servis yönetimi nasıl yapılır ona bir bakalım.
WMI çok kuvvetli bir platform. Dolayısıyla Powershell içerisinden WMI kullanarak Windows içinde sayısız görevi yerine getirebilirsiniz.
Biz konumuza yani servislere geri dönelim. Öncelikle tüm servisleri listelemek için WMI şu şekilde kullanılmalıdır.
Get-WmiObject win32_Service
Ben biraz daha düzgün görünümlü olması için sadece servis ismini ve durumunu çektim.
Get-WmiObject win32_Service | ft name,state
Get-WMiobject komutu ile kullanabileceğim member listesi için (property, method vs.) hemen komutun sonuna Get-Member’i ekliyorum.
Get-WmiObject win32_Service | Get-Member
Kullanabileceğim tüm property ve method’lar çıktı. Artık komutumla birlikte kullanacağım servisimin hangi özelliklerini görüntüleyebiliyorum, hangilerini değiştirebiliyorum artık biliyorum. Property olanlar özelliklerinden her birini gösterirken, method olanlar ise verebileceğim komutları ifade ediyor. Örneğin; bir servisin ismi Name adlı Property ile ifade ediliyor. Bu property’yi çağırdığımda servisin ismini öğrenebiliyorum. Çünkü bu bir Property.
Method ile ise örneğin bir servisi durdurabiliyorum. Çünkü bir method ile bir eylem gerçekleştirilir.
Şimdi örnek olarak WinRM servisini ele alıyoruz ve önce bu servisi listeliyoruz.
Get-WmiObject -Query "select * from win32_service where name='WinRM'"
Evet görüldüğü gibi her 3 şekilde de WinRM servisinin listelendiğini görüyorum.
Şimdi servise ait property’lerden 2-3 tanesini çağırayım ve bir değişkene atayarak göstereyim.
Görülüğü gibi komutun tamamını parantez içine alarak sonra nokta işareti ve dilediğim Property’yi yazarak sadece o bilgiyi çekebiliyorum.
Powershell’in en önemli özelliklerinden ve en yaygın kullanım alanlarından biri de budur işte. Mesela bana acilen WinRM servisinin o anki durumu gerekiyorsa bunu bulmak için yukarıdaki komutu bie değişkene atayıp daha sonra ihtiyacın olduğunda çağırabilirim.
Haftasonu gibisi yok J Aklımdan haftasonu geçerken buna da powershell’i ortak etmek istedim. Basit bir fonksiyonla bugünü ve bir sonraki Cuma gününü bulan, sonra bir sonraki Cuma günü saat 17:30’u belirleyen ve sonrasında şu anki gün, dakika ve saaten bunları çıkaran bir script bu. Script döngüsünü de sonsuz yapak için bu sefer farklı bir yöntem kullandım ve dedim ki; script 1, 2’den büyük oluncaya kadar devam etsin. J Bakalım nasıl olmuş
Powershell’de çok karıştırılan 3 döngü: Foreach ve For ve Foreach-Object Foreach-Object Bir kümedeki istisnasız tüm öğeler için aynı döngü içindeki komutların çalıştırılmasını sağlar. Örneğin; Get-NetAdapter | Foreach-Object{
$_.macaddress
}
Yukarıdaki örnekte bilgisayarınızda bulunan tüm ağ aygıtları (Ethernet kartı, kabosuz bağdaştırıcı vs.) listeleniyor. Ancak listelenirken her bir aygıtın MAC adresini ekrana yazdırıyor. Elbette amacım sadece bir liste içindeki tüm ekipmanların belirli öğelerini ekrana yazdırmak olsaydı hiç bu kadar uğraşmayacaktım ve Select-Object ya da Format-Table komutlarıyla ilgili süzme işlemini yapardım. Bakmaın siz bana, maksat Foreach-Object ile tüm öğelerin tek tek işlendiğini göstermek.
Foreach
Burada da farklı bir kullanıım sergiliyorum. Aslında yine amacım proses adedi kadar aynı işlemi yapmak. Burada “proses adedi kadar” deme görevi bana düşüyor. Yukarıdaki örnekte ise onu da poersell yapıyor, çnkü kaç adet proses olduğunu bulma yöntemini ona söylememe gerek yok.
For kullanımında ise bir döngünün ne kadar süreceği benim belirlediğim kriterlere bağlı. Mesela 1’den başlayıp 10’a kadar diyebileceğim gibi istersem 0’dan başlayıp toplam servis adedine göre de diyebilirim. Burada sayaç mantığı daha ön planlda. Sayacımı nerde başlatıp nered durduracağıma kendimin karar vermesi gerekiyor. Aşağıdaki örnekte önce servis sayısını öğreniyorum. Sonra sayacımı 0’dan başlatıp, birer birer artacak şekilde en son $servissayisindan 1 eksik duruma gelene kadar devam etmesini söylüyorum. Neden 1 eksik? Çünkü neredeyse tüm programlama dillerinde öğelerin sayıları 0’dan başlıyor.