Powershell ile exchange sunucuya uzaktan bağlantı

- updated -

Bir arada derli toplu uzak baglantinin anlatildigi bir exchange help dokümani yada powershell kaynagi bulamadim ve bu nedenle bu konu üzerine bir makale yazmak istedim. Exchange 2010 ve sonrasi Exchange'ler 2007 versiyonu gibi uzaktan yönetilebilir ancak önemli bir farkla..

 

Exchange yönetimi Powershell üzerine bina edilen ve winRM ile desteklenen bir yapiya sahip. Bu iki component sayesinde powershell ve winrm yüklü bir makinadan exchange ile ilgili hiçbirsey kurmadan server yönetilebilir.

 

Powershell (PS) ve WinRM windows 7 ve Windows 2008 R2 ve sonrasi ile birlikte gelirken önceki windows versiyonlarina ayrica kurulmasi gerekiyor.

 

Powershell, bits ve WinRM'in olusturdugu bütünlüge artik windows management framework (WMF) diyoruz. Aslinda bits sonradan windows parçasi halinde sunuldugundan onu saymayabiliriz.

 

Not: Farkli versiyon Powershell'ler ayni makinada birlikte olamaz.

 

Örnegin WMF yüklü bir windows üzerinden powershell çalistirildiktan sonra asagidaki islemler yapilarak Exchange baglanti saglanir yönetim gerçeklestirilebilir.

 

Eger farkli bir domain'de ve/veya yetkisiz bir kullanici ile baglanmayi deniyorsak öncelikle yetkili kullanici haline gelmeliyiz. Bunun için yetkili kullanici credential'lari collect edilir.

Remote olarak baglanacak username ve password girilir. Username girilirken "domain\username" formati yada UPN logon formati kullanilabilir. Baglanti yapacak user'in remote shell baglanti izni bulunmali. Bunu Get-User command let ile görebiliriz.

  

Yukaridaki örnekte administrator kullanicisinin RemotePowerShellEnabled = TRUE oldugu görülüyor... Yani gerekli iznimiz var...

Çalismayi yapacagimiz makinada exchange script'lerin çalismasi için local güvenlik policy'imizi default Restricted 'tan Unrestricted 'a çevirebiliriz.  Ancak güvenlik ile ilgili önemli bir konu oldugunu ve operasyon sonrasinda kapatmanizda fayda bulundugunu hatirlatmaliyim.

 

 

 Not: Execution policy'i default degerine almak için ; "Set-ExecutionPolicy Restricted" uygulanmali...

 

Yukarida aldigimiz credential ile session açiyoruz..

 

Bazi durumlarda HTTPS baglanti zorunlu olabilir böyle durumlarda server'in üzerindeki iis sertifikasi client tarafinda da trusted olmali ayrica tarih ve isim bilgisi dogru olmalidir.

 

Yukarida Sami adli server'a baglanti yapilmaktadir.

Açtigimiz connection session'i import etmek geriye kaliyor.

Ayni islemin powershell ISE arayüzünden ayni görüntü ve import ani...

Komut çiktisi...

Böylece tüm exchange management yüzlerce cmd-let ve script local ps'mizden çalistirilabilecektir.

  

Farkli bir exchange command ISE ekraninda.

 

  

 

Baglantida sorun olmasi durumda asagidaki komut ile detayli bir yardim klavuzuna ulasabilirsiniz..

 

Get-Help about_remote_troubleshooting

 

Örnegin; Eger timeout aliyorsaniz ve server performansinizdan endiseliyseniz timeout süresini arttirmak isteyebilirsiniz.. Bunun için; "New-PSSessionOption -OperationTimeOut 100000" 100 sn olarak set etmis olduk.

 

Peki ya disconnect;

 

Mevcut session'lari listelemek için;

 

Get-PSSession command-let kullanilabilir

 

Ilgili session'i kapatmak için;

Remove-PSSession $ connection / Id

 

denilmesi yeterlidir...

Ilave etmekte belki fayda vardir..

Execution policy'ler zaman zaman script ve komut çalistirmada sorun sebebi olabiliyor.

Get-ExecutionPolicy -List çiktisini hedef sunucuda degerlendirmenizi ve buna bagli olarak ilgili scope'lar dahilinde execution policy set etmenizi öneririm. Örnegin;

Set-ExecutionPolicy Unrestricted -Scope CurrentUser

Yukaridaki komut ile logon durumdaki user için ilgili policy'i set etmis oluyorsuz.

Kubilay Ekici