Office 365 PowerShell ile Bağlantı Şekilleri ve Yönetim İşlemleri
Merhaba, bu yazımda sizler ile Office 365 üzerinde yönetim için kullanabileceğimiz PowerShell desteğinden bahsedeceğim. Office 365 PowerShell ile bizlere ciddi avantajlar sağlamakta. Kısaca örneklemek gerekirse, PowerShell yardımı ile yeni kullanıcılar oluşturabilir, .csv ile birden çok user’ı import edebilir, Exchange Online platformunu PowerShell ile yönetebiliriz. Hatta bazı durumlarda Office 365’ in yönetimini PowerShell ile yapmamız gerekebilir. Tabi ki DirSync desteği ile Active Directory senkronize özelliğini kullanıyorsanız özellikle user bazında yönetilebilirlik Active Directory üzerinden yapılmakta.
Exchange Online tarafından bir örnek vermek gerekirse, kullanıcı bazında Access “Full Access veya Send As” vermemiz için PowerShell kullanabiliriz. Tabi ki Office 365 sistemi gün geçtikçe güncelleniyor ve PowerShell üzerinden yapmak zorunda olduğumuz işlemleri GUI bazında da yapabilir alt yapı sağlanıyor.
Office 365 üzerinde cmdlets’ ler ile yönetim işlemini Windows PowerShell veya Microsoft Azure Active Directory Module for Windows PowerShell araçları ile yapılabilir.
Azure Active Directory Module for Windows PowerShell ile bağlantı için aşağıda ki kurulum dosyalarını ilgili Server veya Client bilgisayarına yüklemeniz gerekmektedir. Microsoft Online Services Oturum Açma Yardımcısı, Office 365 gibi Microsoft Online Services hizmetlerine son kullanıcı oturum açma özellikleri sağlar.
Windows Online Services Oturum Açma Yardımcısı
Azure Active Directory Module for Windows PowerShell
Microsoft Online Services Sign-in Assistant
Powershell üzerinden Office 365 platformuna bağlanmak istediğimizde, Öncelikli olarak PowerShell Execution Policy ayarını yapmamız gerekmektedir. Bunun sebebi bilgisayarınızda çalışmasına izin verilecek, Windows PowerShell komut (varsa) tespit etmenizi sağlar.
Windows PowerShell’in komutları çalıştırmak için dört adet güvenlik ilkesi vardır.
Unrestricted: Hiçbir yetkisel kısıtlama olmadan; Tüm Windows PowerShell komutlarını çalıştırılabilir.
AllSigned: Güvenilen bir yayımcı tarafından imzalanan Sadece komut çalıştırılabilir.
Restricted: Kısıtlı komut çalıştırılabilir. Windows PowerShell yalnızca etkileşimli modda kullanılabilir.
RemoteSigned: Çalıştırılmadan önce İndirilen komut güvenilen bir yayımcı tarafından imzalanmış olmalıdır.
Get-ExecutionPolicy komutu sayesinde, Windows Powershell üzerinde geçerli olan Restricten Policyi görebiliriz. Policy’i gördükten sonra tüm komutları kısıtlama olmadan çalıştırmak için “Set-ExecutionPolicy Unrestricted” komutunu çalıştırıyoruz.
Office 365 Hizmetine PowerShell İle bağlanma:
Yukarıda belirttiğim işlemler sonrası, Office 365 platformuna PowerShell ile bağlanalım.
Komutumuz: Import-Module MSOnline Office 365 PowerShell komutlarını import etmiş oluyoruz.
Diğer Komutumuz: Connect-MsolService bu komut ile Office 365 yönetici Username ve Password bilgilerini giriyoruz.
Office 365 Admin bilgilerini girdikten sonra, Office 365 Cloud hizmeti içerisinde yapabileceğimiz her şeyi PowerShell komutlarını ile gerçekleştirebiliriz.
Basit bir örnek göstermek gerekirse, Get-MsolUser komutunu ile Office 365 paneline tanımlı olan kullanıcı listesini görebiliriz.
Exchange Online Hizmetine PowerShell İle bağlanma:
Import-Module MSOnline Exchange Online PowerShell komutlarını import etmiş oluyoruz.
$O365Cred = Get-Credential komutunu ile Office 365 Admin Username ve Password bilgilerini giriyoruz.
$O365Session = New-PSSession –ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365Cred -Authentication Basic –AllowRedirection komutunu Windows PowerShell üzerinde çalıştırıyoruz. Bu komut sayesinde Windows Powershell’ i Cloud data merkezine bağlıyoruz.
Import-PSSession $O365Session komutu ile Cloud tabanlı servis komutlarının kullanımını sağlıyoruz.
İşlem sonrası yaklaşık 500 CMDlets import edilmiş olur.
Exchange Online üzerinde birkaç komut ile bağlantımızı bir nevi test etmiş olalım.
Office 365 Exchange Online üzerine PowerShell ile başarılı bir şekilde bağlandık ve PowerShell cmdletslerimizi kontrol amaçlı çalıştırdık.
Lync Online Hizmetine PowerShell İle bağlanma:
Lync Server Administration Tools aşağıda ki linkten indirip, kuruyoruz.
https://technet.microsoft.com/en-us/library/hh974317.aspx
http://www.microsoft.com/en-us/download/details.aspx?id=39366
Aşağıda ki PowerShell komutlarını sırasıyla giriyoruz.
1.$credential = Get-Credential
3. $session = New-CsOnlineSession -Credential $credential
4. Import-PSSession $session
5. Get-CsOnlineUser ufuk.tatlidil
SharePoint Online Hizmetine PowerShell İle bağlanma:
SharePoint Online Management Shell aşağıda ki linkten indirip, kuruyoruz.
http://www.microsoft.com/en-us/download/details.aspx?id=35588
Daha sonra SharePoint Management Shell’ i run as Administrator olarak çalıştırıyoruz.
Sharepoint Online’ PowerShell ile bağlanabilmek için; Connect-SPOService –Url https://o365cp-admin.sharepoint.com -credential [email protected] komutunu kullanıyoruz.
Get-Command –Module Microsoft.Online.Sharepoint.PowerShell komutu ile SharePoint Online üzerinde hangi komutları kullanabileceğimizi görebiliriz.
Get-SPOSite komutu sayesinde SharePoint Online üzerinde bulunan sitelerimizin listesini görebiliriz.
Get-SPOUser -Site https://o365cp.sharepoint.com komutu ile SharePoint Online üzerinde ki aktif userları görebiliriz.
SharePoint Online Management Shell
https://technet.microsoft.com/en-us/library/fp161388.aspx#ae4901b4-505a-42a9-b8d4-fca778abc12e
Microsoft’ un Office 365 komut satırı aracı olarak Microsoft Online Services for Windows Powershell mevcut. Ancak, ben sizler ile Windows Vista, Windows 7, Windows 8/8.1, Windows Server 2008/2012 ve 2012r2 ile birlikte kullanımımıza sunulmuş olan komut satır aracı Windows Powershell ile Office 365 hesabını nasıl yönetebileceğimizi paylaşacağım.
Windows PowerShell’ i Run As Administrator olarak çalıştırdıktan sonra, Get-ExecutionPolicy komutu ile PowerShell CMDletsleri çalışıtırp, çalıştıramadığımızı kontrol edelim.
Güvenlik ilkesi olarak, Unrestricted olduğunu görüyoruz.
Güvenlik ilkelerini ilk yazımızda paylaşmıştım. Tekrar hatırlayalım.
Windows PowerShell’in komutları çalıştırmak için dört adet güvenlik ilkesi vardır.
· Unrestricted: Hiçbir yetkisel kısıtlama olmadan; Tüm Windows PowerShell komutlarını çalıştırılabilir.
· AllSigned: Güvenilen bir yayımcı tarafından imzalanan Sadece komut çalıştırılabilir.
· Restricted: Kısıtlı komut çalıştırılabilir. Windows PowerShell yalnızca etkileşimli modda kullanılabilir.
· RemoteSigned: Çalıştırılmadan önce İndirilen komut güvenilen bir yayımcı tarafından imzalanmış olmalıdır.
Eğer Get-ExecutionPolicy komutunu çalıştırdığınızda Restricted karşılığını alırsanız ki bu kısıtlı olduğu anlamına gelir, aşağıda ki komutlar ile kendinize yetki verebilirsiniz.
· Set-ExecutionPolicy Unrestricted
· Set-ExecutionPolicy AllSigned
· Set-ExecutionPolicy RemoteSigned
$LiveCred = Get-Credential, $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic –AllowRedirection, Import-PSSession $Session ve Connect-MsolService –Credential $cred komutları ile Office 365 hesabımıza bağlanıyoruz. Bağlantı detayları için ilk makalemize göz atabilirsiniz.
Not: Restricted yetkilerini vermezseniz, Import-PSSession $Session komutu sonrası hata alırsınız.
Klasik komutumuz Get-MsolUser ile Office 365 userlarımızı görüntüleyebiliriz.
https://msdn.microsoft.com/en-us/library/azure/dn194096.aspx
New-MsolUser komutu ile bir user oluşturalım.
New-MsolUser -UserPrincipalName [email protected] -DisplayName “Sezgin KARABACAK” -FirstName “Sezgin” -LastName “KARABACAK”
Kullanıcı başarılı bir şekilde oluştu.
Bir kullanıcıyı silmek istersek ne yapmalıyız?
Komut: Remove-MsolUser –UserPrincipalName [email protected]
Daha geniş içerikli bir user oluşturmak isterseniz aşağıda ki örnek işinizi görecektir.
New-MsolUser -UserPrincipalName [email protected] -DisplayName ” Dominique Trujillo” -FirstName “Dominique ” -LastName “Trujillo” -UsageLocation “US” -LicenseAssignment “Contoso:BPOS_Standard”
Silinen bir Office 365 user’ ı nasıl restore edebiliriz?
Komutumuz:
$DelUser = Get-MsolUser -UserPrincipalName [email protected] -ReturnDeletedUsers
Restore-MsolUser -ObjectId $DelUser.ObjectId
Office 365 Userlarının şifrelerini belli bir süre sonra var olan Password Policy den etkilenerek değiştirmesin istersek aşağıda ki komutu çalıştırabiliriz.
Get-MsolUser | Set-MsolUser –PasswordNeverExpires $True
Belirli bir user’ın bu işlemden etkilenmesini istersek komutumuz;
Set-MsolUser –UserPrincipalName “[email protected]” –PasswordNeverExpires $false
Office 365 üzerinde ki bir user’ın şifresini değiştirmek istersek;
Set-MsolUserPassword –UserPrincipalName “[email protected]” –NewPassword “Ada1453-”
Get-MsolDomain komutu ile aktif domainlerimizi görebiliriz.
New-MsolDomain –Name “Domain Name” Komutu ile yeni domain ekleyebiliriz.
Set-MsolDomain –Name “Domain Name” –IsDefault Komutu ile istediğimiz domain’ i default hale getirebiliriz.
Exchange Online yönetimi adımlarını incelemeye başlıyoruz. Yine Windows PowerShell kullanarak Exchange Online platformunu yöneteceğiz.
Tekrar aşağıda ki adımları uyguluyoruz.
Windows PowerShell’ i Run As Administrator olarak çalıştırdıktan sonra, Get-ExecutionPolicy komutu ile PowerShell CMDletsleri çalıştırıp, çalıştıramadığımızı kontrol edelim.
Güvenlik ilkesi olarak, Unrestricted olduğunu görüyoruz.
Güvenlik ilkelerini ilkyazımızda paylaşmıştım. Tekrar hatırlayalım.
Windows PowerShell’in komutları çalıştırmak için dört adet güvenlik ilkesi vardır.
· Unrestricted: Hiçbir yetkisel kısıtlama olmadan; Tüm Windows PowerShell komutlarını çalıştırılabilir.
· AllSigned: Güvenilen bir yayımcı tarafından imzalanan Sadece komut çalıştırılabilir.
· Restricted: Kısıtlı komut çalıştırılabilir. Windows PowerShell yalnızca etkileşimli modda kullanılabilir.
· RemoteSigned: Çalıştırılmadan önce İndirilen komut güvenilen bir yayımcı tarafından imzalanmış olmalıdır.
Eğer Get-ExecutionPolicy komutunu çalıştırdığınızda Restricted karşılığını alırsanız ki bu kısıtlı olduğu anlamına gelir, aşağıda ki komutlar ile kendinize yetki verebilirsiniz.
· Set-ExecutionPolicy Unrestricted
· Set-ExecutionPolicy AllSigned
· Set-ExecutionPolicy RemoteSigned
$LiveCred = Get-Credential, $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic –AllowRedirection
Import-PSSession $Session
Connect-MsolService –Credential $cred komutları ile Office 365 hesabımıza bağlanıyoruz. Bağlantı detayları için ilk makalemize göz atabilirsiniz.
Not: Restricted yetkilerini vermezseniz, Import-PSSession $Session komutu sonrası hata alırsınız.
Exchange Online ile PowerShell üzerinden neler yapabiliriz? Exchange Online adımını birkaç örnek ile tamamlayalım. Aslında On Prem ortamımızda bulunan Exchange Server’ ı yönetir gibi, Office 365 üzerinde ki Exchange Online’ da aynı orantıda PowerShell ile yönetebiliriz.
Daha fazla Exchange Online PowerShell CMDlets bilgisi için aşağıda ki linki incelemenizi öneririm.
https://technet.microsoft.com/en-us/library/jj200677%28v=exchg.150%29.aspx
En temel komutumuz Get-MailBox
SMTP adr esini öğrenmemiz için, Get-Mailbox “ufuk.tatlidil” |fl *primarysmtpaddress*
Kullanıcı izinlerini görmek için, Get-RecipientPermission ufuk.tatlidil
Ufuk.Tatlidil kullanıcısına İlkim.Ada kullanıcı mailbox’ı için Full Access verelim.
Add-MailboxPermission -Identity “[email protected]” -AccessRights FullAccess -user “[email protected]”
Get-RecipientPermission ile kontrol edebilirsiniz.
Office 365 Exchange Online User Mailbox’ ı adres defterinden gizlemek için, Set-Mailbox “ilkim.ada” –HiddenFromAddressListsEnabled $true
Adres defterinden gizlenen Office 365 Exchange Online User Mailbox’ ı adres defterinden göstermek için, Set-Mailbox “ilkim.ada” –HiddenFromAddressListsEnabled $false
Get-Mailbox ilkim.ada | fl ile Office 365 Exchange Online usermailbox’ ın içeriğini detaylarını görebiliriz.
Shared mailbox oluşturmak için, New-Mailbox -Name “Cloud Team” –Alias “cloudteam” –Shared
Shared mailbox oluşturduk. Kullanılabilir limit olarak 50 gb. Kota default olarak geldi. Ancak bu durumda Shared Mailbox’ a lisans atamak gerekir. Ancak, biz kotasını 5 gb. Olarak limitlersek, lisans atamamıza gerek kalmaz.
Set-Mailbox “[email protected]” -ProhibitSendReceiveQuota 5GB -ProhibitSendQuota 4.75GB -IssueWarningQuota 4.5GB
Exchange Online User Mailboxları Export etmek için, Get-Mailbox |select emailaddresses, name, userprincipalname, identity|export-csv -path C:\ExchangeOnlineUserMBX.csv
IMAP tabanlı mail hizmetlerinden Office 365 Exchange Online migration yapacaksak, IMAP hizmetinin geçiş için uygun olup olmadığını da Poweshell üzerinden test edebiliriz.
Test-MigrationServerAvailability –Imap –RemoteServer “imap-mail.outlook.com” –Port 993
Office 365 Exchange Online PowerShell üzerinde ki işlemlerimiz bittikten sonra Remove-PSSession $Session komutu ile Powershell ile Office 365 hesabımızın bağlantısını sonlandırabiliriz. PowerShell üzerinden direk çarpıyla çıkarsak, 30 dk. İçerisinde session otomatik sonlanacaktır.