Office 365 Grupları PowerShell ile Yönetimi 5/8

Merhaba arkadaşlar, Office 365 Grup Nedir ve Office 365 Grup Türleri adlı makaleleri yapmıştık, seriiye Office 365 grupları PowerShell yönetimi adlı makalem ile devam ediyorum. Unified Group PowerShell yönetiminde, arayüzde gördüklerinizden daha fazlasını görebilirsiniz. Burada en önemli özelliğimiz ise, Primary SMTP adresini değiştirmek olacak. Bunları makale içinde detaylı olarak paylaşmaya çalışacağım. En sevdiğim konu başlıklarımız adlı kısıma malesef ki gelemiyorum çünkü saçma olacak 🙂 Böyle bodoslama gireceğim artık şu komut şunu yapar diye. Hangisine ihtiyacınız varsa onu kullanabilir veya kendinize göre özelleştirebilirsiniz.

PowerShell ile işlem yapmak için PowerShell bağlantısı yapmanız gerekmektedir. Bu bağlantıyı yapabilmek içinse PowerShell araçlarını indirmeniz gerekmektedir. Daha önce kullanmadıysanız, yukarıdaki iki makeleyi okumanız önemli!

# Office 365 Unified Group Cmdlet

Şimdi kullanacağımız komutları tanıyalım;

New-UnifiedGroupYeni bir Office 365 Grup oluşturur ve birkaç detayı girmenize yarar.
Get-UnifiedGroupVar olan Office 365 Unified Group bilgilerini çeker ve detaylarına ulaşır.
Set-UnifiedGroupÖnceden oluşturulmuş Office 365 gruplarını güncellemeye yarar.
Add-UnifiedGroupLinksOffice 365 gruplarına kullanıcı ve sahip ekler. Yetkilendirme için kullanılır.
Get-UnifiedGroupLinksOffice 365 Grubunda bulunan kullanıcı ve sahiplerin bilgisini görüntüler.
Remove-UnifiedGroupLinksOffice 365 gruplarında bulunan kullanıcıları çıkarmaya veya yetkilerini almaya yarar.
Remove-UnifiedGroupOluşturulmuş bir Office 365 Unified Group’u silmek için kullanılır.

Yukarıdaki komutları kullanarak birkaç şekil yapacağız.

İlk olarak Office 365 bağlantısı yapmanız gerekmektedir bunun için;

Set-ExecutionPolicy UnRestricted
Import-Module MsOnline
$credential = Get-Credential
Connect-MsolService -Credential $credential
$exchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri “https://outlook.office365.com/powershell-liveid/” -Credential $credential -Authentication “Basic” -AllowRedirection
Import-PSSession $exchangeSession

Yukarıdaki komutu kullanarak, Office 365’e bağlantı sağlayalım. Komutu PowerShell’de çalıştırdıktan sonra, kullanıcı adı ve şifresi alanına Office 365’te bulunan yönetici hesap bilgilerini girmeniz gerekmektedir.

# New-UnifiedGroup

Bu komutla birlikte Office 365 gruplarını bu komutla birlikte oluşturabiliriz. Birkaç da parametre kullanma şansımız var, detaylarını sayfasından görebilirsiniz. Sadece tırnak içinde olan alanları düzenlemeniz yeterlidir.

New-UnifiedGroup -DisplayName "PS Group" -Alias "psgroup"

# Get-UnifiedGroup

Bu komutla grubumuza ait olan bütün detayları görebiliriz. Tırnak içinde olan alana detaylarını görmek istediğiniz grubun adını yazmanız yeterli.

Get-UnifiedGroup -Identity "PS Group" |fl *

Sadece bir özelliğini merak ettiğimiz bir durum var ise son yıldızdan sonra özelliğin adını yazmanız yeterli olacaktır. Örneğin bu grubun mail adresini bulmak istersek aşağıdaki komutu kullanabiliriz.

Get-UnifiedGroup -Identity "PS Group" |fl *PrimarySmtpAddress*
Office 365 Grupları PowerShell ile Yönetimi

Diğer detayları da bu şekilde sondaki iki yıldız arasına yazarak bulabilirsiniz. Bulabileceğiniz bütün alanlar makalesinde mevcut.

# Set-UnifiedGroup

Bu komutun da oluşturulan grupları güncellediğini belirtmiştik zaten. Gruplar içinde özellikleri değiştirmek için kullanabiliriz. Örneğin yukarıdaki yaptığımızı genişletelim. Psgroup adresinin mail adresi office365studio.com olarak oluşmuş. Bunu ben, psgroup@cang.us olarak değiştirmek istiyorum. Bunun için aşağıdaki komutu kullanabilirim.

Get-UnifiedGroup -Identity "Ps Group" | Set-UnifiedGroup -PrimarySmtpAddress psgroup@cang.us

Komutu kullandıktan sonra grubun SMTP Adresine tekrar baktım ve psgroup@cang.us olduğunu gördüm. Office 365 Grup Yönetimi adlı makalemde bu sorunu yaşamıştık hatırlarsanız. Bu sorunu bu şekilde geçebiliyoruz.

Office 365 Grupları PowerShell ile Yönetimi

Set-UnifiedGroup ile de birçok parametre kullanabilirsiniz. Detayı için kendi makalesine bakabilirsiniz. Çok fazla olduğu için bu makaleye sığdıramayacağım.

Bu komutla birlikte oluşturduğumuz gruba üye veya sahip ekleyip çıkarabiliriz. Örneğin aşağıdaki komutla Burak Varol’u gruba üye olarak ekleyelim.

Add-UnifiedGroupLinks -Identity "Ps Group" -LinkType Members -Links "burak.varol"

Yukarıdaki komutta sadece Members yerine Owner yazmanız durumunda da kullanıcıyı sahip olarak ekleyecektir.

Bu komut ile de gruplara üye olan kullanıcıları çekebilirsiniz. Aynı grup üzerinde örneklerimize devam edelim;

Gruptaki kullanıcıları görüntülemek için aşağıdaki komutu uygulayabilirsiniz.

Get-UnifiedGroupLinks -Identity "Ps group" -LinkType Members

Bu komutla ise grubun sahiplerini çekebilirsiniz.

Get-UnifiedGroupLinks -Identity "Ps group" -LinkType Owners
Office 365 Grupları PowerShell ile Yönetimi

Bu komutla da gruplardaki kullanıcı ve sahipleri kaldırabilirsiniz.Gruptan bir kullanıcı kaldırmak için aşağıdaki komutu uygulayabilirsiniz; (Burak Varol kullanıcısını ve Can Güneş kullanıcısını gruptan çıkarıyor)

Remove-UnifiedGroupLinks -Identity "PS Group" -LinkType Members -Links burak.varol@cang.us,cang@cang.us

Gruptan bir sahibi powershell ile kaldırmak için aşağıdaki komutu uygulayabilirsiniz. Can Güneş kullanıcısını PS Group sahipliğinden alıyor.

Remove-UnifiedGroupLinks -Identity "PS Group" -LinkType Owners -Links cang@cang.us

Diğer parametreleri de makalesinden bulabilirsiniz.

# Remove-UnifiedGroup

Bu komut ise grubu silmeye yarıyor. Oluşturduğumuz grubu silmek için aşağıdaki komutu kullanacağım.

Remove-UnifiedGroup -Identity "PS Group"

İşinize yarayabileceğini düşündüğüm son bilgi de, gruba toplu şekilde üye ekleme ve bütün üyeleri CSV dosyasına çekmek olacak. Bunları da size paylaşayım.

# Office 365 Grup kullanılabilecek örnek scriptler

Office 365 Gruplarına toplu şekilde kullanıcı PowerShell ile nasıl eklenir?

  1. Öncelikle bir csv oluşturup CSV içine üye olacak kullanıcıların e-postalarını veya görüntüleme adlarını alt alta girin.
  2. Ardından CSV dosyasını C:\ altına atın ve adını members.csv olarak ayarlayın.
  3. Ardından aşağıdaki komutta TestO365Group’u grubunuzun adı ile değiştirin.
  4. Komutu çalıştırdıktan sonra bitmesini bekleyin.
Import-CSV "C:\members.csv" | ForEach-Object {
Add-UnifiedGroupLinks –Identity "TestO365Group" –LinkType Members  –Links $_.member
}

Office 365 grubunda bulunan bütün kullanıcıları Excel’e nasıl çekebilirim?

Aşağıda bulunan komutla birlikte PS Group adlı gruba üye olan bütün kullanıcıların bir Excel’e isimlerini ve e-posta adreslerini yazdırabiliyorum.

Get-UnifiedGroupLinks -Identity "Ps Group" -LinkType Member | Select-Object DisplayName,PrimarySmtpAddress | Export-Csv C:\Temp\PsGroup.csv -NoTypeInformation -Encoding UTF8

Bütün gruplara üye olan bütün kullanıcıları nasıl çekerim?

Hadi olayı biraz ilerletelim. Bütün gruplara üye olan kullanıcıları çekelim. Yapacağımız işlem çok basit, sadece komutu çalıştırın ve gruplara üye olan bütün kullanıcıları C:\ lokasyonunda ALL-UnifiedGroupMembers adlı csv dosyasında bulun.

DipNot! Ya gardaşım, ben sahiplerini istiyordum ama! Diyorsanız eğer CTRL+F ile “-LinkType Member” yerini bulun ve Member yazan yeri Owner olarak değiştirin. Bunun dışında bir şey yapmanıza gerek yok.

#Accept input parameters
Param(
[Parameter(Position=0, Mandatory=$false, ValueFromPipeline=$true)]
[string] $Office365Username,
[Parameter(Position=1, Mandatory=$false, ValueFromPipeline=$true)]
[string] $Office365Password
)

#Constant Variables
$OutputFile = "C:\All-UnifiedGroupMembers.csv" #The CSV Output file that is created, change for your purposes
$arrDLMembers = @{}

#Remove all existing Powershell sessions
Get-PSSession | Remove-PSSession

#Did they provide creds? If not, ask them for it.
if (([string]::IsNullOrEmpty($Office365Username) -eq $false) -and ([string]::IsNullOrEmpty($Office365Password) -eq $false))
{
$SecureOffice365Password = ConvertTo-SecureString -AsPlainText $Office365Password -Force

#Build credentials object
$Office365Credentials = New-Object System.Management.Automation.PSCredential $Office365Username, $SecureOffice365Password
}
else
{
#Build credentials object
$Office365Credentials = Get-Credential
}
#Create remote Powershell session
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Office365credentials -Authentication Basic –AllowRedirection

#Import the session
Import-PSSession $Session -AllowClobber | Out-Null

#Prepare Output file with headers
Out-File -FilePath $OutputFile -InputObject "Distribution Group DisplayName,Distribution Group Email,Member DisplayName, Member Email, Member Type" -Encoding UTF8

#Get all Distribution Groups from Office 365
$objDistributionGroups = Get-UnifiedGroup -ResultSize Unlimited

#Iterate through all groups, one at a time
Foreach ($objDistributionGroup in $objDistributionGroups)
{

write-host "Processing $($objDistributionGroup.DisplayName)..."

#Get members of this group
$objDGMembers = Get-UnifiedGroupLinks -Identity $($objDistributionGroup.PrimarySmtpAddress) -LinkType Member

write-host "Found $($objDGMembers.Count) members..."

#Iterate through each member
Foreach ($objMember in $objDGMembers)
{
Out-File -FilePath $OutputFile -InputObject "$($objDistributionGroup.DisplayName),$($objDistributionGroup.PrimarySMTPAddress),$($objMember.DisplayName),$($objMember.PrimarySMTPAddress),$($objMember.RecipientType)" -Encoding UTF8 -append
write-host "`t$($objDistributionGroup.DisplayName),$($objDistributionGroup.PrimarySMTPAddress),$($objMember.DisplayName),$($objMember.PrimarySMTPAddress),$($objMember.RecipientType)"
}
}

#Clean up session
Get-PSSession | Remove-PSSession

Kullanıcıların grup oluşturması nasıl engellenir?

Office 365 Grup oluşturma makalesinde bahsetmiştik, normal kullanıcılar da oluşturabilir diye. Hatta Office 365 Grup Outlook Özellikleri adlı makalemizde nasıl yapacaklarını da göstermiştim. Bunu kapatmak için de aşağıdaki komutları kullanabilirsiniz.

$GlobalAdmins = Get-MsolRole -RoleName "Company Administrator"
$GlobalAdminsObjectID = $GlobalAdmins.ObjectId.ToString()
$template = Get-MsolAllSettingTemplate | where-object {$_.DisplayName -eq "Group.Unified"}
$setting = $template.CreateSettingsObject()
$setting["EnableGroupCreation"] = "false"
$setting["GroupCreationAllowedGroupId"] = $GlobalAdminsObjectID
New-MsolSettings -SettingsObject $setting
Get-OwaMailboxPolicy | ? { $_.IsDefault -eq $true } | Set-OwaMailboxPolicy -GroupCreationEnabled $false

End of story! Office 365 Grupları PowerShell ile Yönetimi

Yahu kardeşim! Herşeyi paylaşmışsın ama şunun komutunu paylaşmamışsın dediğiniz bir yer varsa yazın bi yorum. Hallederiz bi şekilde. 🙂 Dert edilecek bir şey yok. Belki PowerShell MVP’si değiliz ama bizim de üç beş şeklimiz var. 🙂

Benim aklıma gelen yararlı komutlar bunlardı. Ki zaten makaleyi yazmamdaki asıl amaç bütün grupları çektiğimiz script ve toplu şekilde kullanıcıları üye yapmaktı. Yaptık mı? Yaptık! Fakat, tekrar hatırlatayım! Office 365 grupları PowerShell ile yönetimi ile alakalı aklınıza takılan bir soru varsa buradayım.

Ek olarak SharePoint Kullanımı ve Planner Kullanımı makalelerine de göz atmanızı tavsiye ederim.

Umarım yararlı olmuştur sizler için de. Abonelik almayı unutmayın, yararlı şeyleri paylaşmaya devam edeceğim.

Keyifli çalışmalar dilerim.

Can Güneş

Microsoft Bulut Teknolojileri üzerine kafa yoran ve bu alanda kendini geliştiren birisi. Çalışıp öğrendiğim bilgileri sizlerle paylaşmak için bu internet sayfasını kurdum.

Yorumlar kapatıldı.