Office 365 Dynamic Distribution Group Member Finder Tool v2.0

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.

 

 

 

 

 

 

Tool’u aşağıdaki linkten indirebilirsiniz.

https://gallery.technet.microsoft.com/scriptcenter/Office-365-Dynamic-035596f6

BakiOnur

Continue Reading Office 365 Dynamic Distribution Group Member Finder Tool v2.0

4 Haziran Microsoft Türkiye Windows Server 2016 Sunumu

4 Haziran günü geniş bir katılımcıyla birlikte gerçekleştirdiğimiz tüm günlük etkinlikte Windows Server 2016’nın yeniliklerini anlattım.

Oldukça renkli geçen oturumlarda diğer arkadaşlarım da farklı MS teknolojilerini paylaşma fırsatı buldular. Bu güzel etkinliğin gerçekleşmesinde emeği geçen Mshowto ve Microsoft ailesine teşekkür ederim. İşte birkaç kare!

Continue Reading 4 Haziran Microsoft Türkiye Windows Server 2016 Sunumu

16 Nisan Microsoft Türkiye Azure Bootcamp – OMS Sunumum

Değerli dostum Önder DEĞER ile birlikte 16 Nisan’da Microsoft Türkiye Ofisi’nde, Azure Bootcamp kapsamında Microsoft OMS (Operations Management Suite) anlattık.
Keyifli geçen bu etkinliğin gerçekleşmesinde emeği geçen herkese ve tüm katılıcmcılara teşekkür ederim.

Continue Reading 16 Nisan Microsoft Türkiye Azure Bootcamp – OMS Sunumum

Windows Powershell 5.0 ile Gelen 7 Güzel Özellik

Powershell gün geçtikçe gelişiyor ve yepyeni güzel özelliklere sahip oluyor.

En son versiyon olan Powershell 5.0 ile gelen özelliklerden bazılarına değinelim.

  1. Get-ChildItem için -Depth parametresi sayesinde yah ep ya hiç derdinden kurtuluyorsunuz. Get-ChildItem -Recure parametresi ile bir dosya yolunun altındaki tüm klasörlerde işlem yapmasını sağlayabiliyorduk. Ancak bazen bu çok uzun sürebiliyordu. Depth parametresi ile hangi derinliğe inebileceğinize karar verebiliyorsunuz.

Get-childitem -depth 5

 

 

 

  1. Get-Member için Force parametresi ile gizli durumda bulunan property, method vs. öğelere erişebilirsiniz.

Get-member -force

 

 

  1. Artık oturumlar arası dosya kopyalamak mümkün. Bir Session içindeyken başka bir Session’a dosya kopyalamak için -ToSession parametresi artık kullanılabilir.

Copy-Item -Path c:\dosya.txt -ToSession $session1 -Destination e:\dosyalar

 

  1. Artık çıktılarınızı Hex olarak da alabileceksiniz. Nasıl mı? Şöyle:

Get-process| out-string | Format-Hex

  1. Clip.exe’nin Powershell’cesi. Son derece kolay kullanımlı

"test" | Set-clipboard

Get-clipboard

 

  1. Out-file -nonewline parametresi ile dosyaya veri yazdırırken otomatik boş satır ekleme özelliğini devre dışı bırakabilirsiniz.

 

  1. Syntax Coloring özelliği ile artık script yasmak çok daha anlaşılır ve zevkli. Daha önce Powershell ISE (Integrated Scripting Environment) sahip olduğumuz bu özellik artık Powershell konsolu içinde de kullanılabilir durumda.

    Bir örnek:

    Sorular için bakionur@bakionur.com

 

 

Continue Reading Windows Powershell 5.0 ile Gelen 7 Güzel Özellik

Windows Powershell ile Windows Servislerini Yönetmek – Part I

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;

Get-Service | where{$_.name -like "win*"} | start-service

 

 

Peki bütün Stop durumundan olan servisleri çalışır hale getirmek istersem;

get-service| where{$_.status -eq "Stopped"} | start-service

 

Bu kombinasyonları arttırabilirsiniz.

 

New-Service

Bu cmdlet ile yeni bir Windows servisini ekleyebilirsiniz. Daha önceden derlenmiş bir Windows servisiniz var ve bunu Windows içine deploy etmek istiyorsunuz.

New-service -Name "BakiOnur" -DisplayName "BakiOnur" -binarypathname "c:\test\services\" -Description "BakiOnur Windows Servisi" -StartupType Automatic

 

Böylece aşağıdaki resim oluşmuş oluyor.

 

Evet Powershell’in yukarıdaki komutları ile servislerinizi yönetmek kolay, peki başka powershell komutları yok mu servisleri yönetebilmek için?

Elbette var.

WMI !

 

Wmi ile Servis yönetimi yazısı için tıklayın

 

Continue Reading Windows Powershell ile Windows Servislerini Yönetmek – Part I

Powershell 5.0 Chocolatey ile yüzlerce uygulamaya sahip olun

Powershell 5.0 ile birilkte gelen önemli yeniliklerden biri de Chocolatey!

Bu uygulama kütüphanesi sayesinde bilgisayarınıza bir uygulamayı indirip kurmak bir kaç saniyeyi geçmiyor. Nasıl mı?

Öncelikle Powershell 5.0’a sahip olduğumuzdan emin olalım.

Evet artık 5.0 için emin olduğumuza göre Chocolatey’e bakabiliriz. Peki Powershell 5.0 sahibi olmayanlar ne yapmalı?

Şuradan indirebilirsiniz!

Update:

WMF 5.0 download için aşağıdaki linki kullanabilirsiniz

https://www.microsoft.com/en-us/download/details.aspx?id=50395

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 Reading Powershell 5.0 Chocolatey ile yüzlerce uygulamaya sahip olun

Windows Powershell ile Windows Servislerini Yönetmek – Part 2

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'"

 

Bir başka yolu da Filter parametresini kullanmak.

Get-WmiObject win32_Service -Filter "name='WinRM'"

Daha basit bir şekilde yapamaz mıyız?

Get-WmiObject win32_service | where{$_.name –eq "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.

$winrm_servisinin_durumu=(Get-WmiObject win32_service | where{$_.name –eq "WinRM"}).state

Artık “$winrm_servisinin_durumu” isimli değişkeni her çağırışımda aşağıdaki gibi bana WinRM servisinin o anki durumunu verecektir.

Running!

Şimdi biraz da Method’ları kullanalım ve servisin ayarlarını değiştirelim.

Servisin başlangıç tipini Manual olarak belirleyelim

(Get-WmiObject win32_service | where{$_.name –eq "WinRM"}).changestartmode("Manual")

Servisin başlangıç tipini Automatic olarak belirleyelim

(Get-WmiObject win32_service | where{$_.name –eq "WinRM"}).changestartmode("Automatic")

Servisi başlatalım

(Get-WmiObject win32_service | where{$_.name –eq "WinRM"}).Startservice()

Servisi durduralım

(Get-WmiObject win32_service | where{$_.name –eq "WinRM"}).stopservice()

 

Konumuzun dışlında olabilir ancak komut satırından da (cmd.exe) SC komutuyla servislerinizi yönetebilirsiniz. Elbette powershell kadar esnek değil.

Sorular için bakionur@bakionur.com

Continue Reading Windows Powershell ile Windows Servislerini Yönetmek – Part 2

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!

Measure-Command -Expression {gci -r -Depth 8}
			

 

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

gci -r Depth 8

komutunu denedim. 3.5 saniyede sonuçlandı.

Sorular icin bakionur@bakionur.com

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

Windows Powershell ile haftasonuna ne kadar kaldığını öğrenmek

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ş
 

function cuma{
cls
$gun=(get-date).DayOfWeek.value__
[datetime]$an=(get-date).datetime
$ilkcuma=5-$gun
$cuma=$an.AddDays($ilkcuma)
$cuma=get-date -year $cuma.Year -month $cuma.Month -day $cuma.Day -hour 17 -Minute 30 -Second 00
$diff=New-TimeSpan $cuma
"HAFTASONUNA"
write-host $diff.Duration().Days "gün"
write-host $diff.Duration().hours "saat"
write-host $diff.Duration().minutes "dakika"
write-host $diff.Duration().seconds "saniye"
"KALDI"
}
do{
cuma
start-sleep 1
}
until(1 -gt 2)

 
sorular için bakionur@bakionur.com

Continue Reading Windows Powershell ile haftasonuna ne kadar kaldığını öğrenmek