PowerShell ile Microsoft 365 Grup Sahiplerini Toplu Güncelleştirme
Microsoft 365 gruplarına atanmış sahiplerin olması gerekir; bu, bir sahip atanmadan yeni bir grup oluşturamayacağınız anlamına gelir; bu, Microsoft Entra Yönetim Merkezi aracılığıyla veya Microsoft Graph PowerShell aracılığıyla bir grup oluştursanız da geçerlidir.
Kullanıcı yönetiminin günlük zorlukları karşısında kendinizi mevcut bir grubun veya birden fazla grubun sahibini değiştirmeniz gereken bir konumda bulabilirsiniz. Bu yazıda, PowerShell ile grup sahiplerini gruplara nasıl ekleyip kaldıracağınızı ve kuruluşunuzdaki tüm gruplar için birden fazla grup sahibini güncellemek için gereken komut dosyasını göstereceğim.
Henüz Microsoft Graph PowerShell'i kullanmadıysanız aşağıdaki kaynaklara göz atın:
- Microsoft Graph PowerShell Modülü Nasıl Kurulur
- Microsoft Graph PowerShell İçin İzinler Nasıl Bulunur?
Get-MgGroupOwner ile mevcut grup sahiplerini görüntüleyin
Hedef grubunuzun mevcut sahiplerini görüntülemek için, öncelikle hedef grubunuzun ayrıntılarını alın ve saklayın, her grup sahibinin kimliğini çıkarmak için Get-MgGroupOwner'ı kullanın, ardından her bir sahip arasında döngü yapın ve çıktıyı almak için Get-MgUser cmdlet'ini kullanın. Kullanıcı bilgilerini PowerShell oturumunuza ekleyin.
group = Get-MgGroup -Filter "DisplayName eq 'GROUP_NAME'"
$owners = Get-MgGroupOwner -GroupId $group.Id
Foreach ($owner in $owners){
Get-MgUser -userid $owner.id | Select DisplayName, ID
}Microsoft Graph'a başka bir çağrı yapma ihtiyacını ortadan kaldırarak, her bir sahibi anlamlı bir şekilde görüntülemenin başka bir çözümü, aşağıdaki gibi, $owners değişkeninde zaten saklanan, sadece gizli olan bilgileri içeren bir rapor oluşturmaktır:
$OwnersList = [System.Collections.Generic.List[Object]]::new()
Foreach ($owner in $owners){
$obj = [PSCustomObject][Ordered]@{
"DisplayName" = $owner.AdditionalProperties.displayName
"ID" = $owner.Id
}
$OwnersList.Add($obj)
}
$OwnersListYeni bir grup sahibi ekleme
Mevcut bir gruba yeni bir grup sahibi eklemek için New-MgGroupOwner cmdlet'ini kullanabiliriz. Yeni sahibin, OData bağlantısına sahip bir karma tablosu içinde tanımlanması gerekiyor, aşağıda yeni sahibi $owner değişkenine tanımladım. OWNER_UPN'i hedef kullanıcınızın kullanıcı adı olarak değiştirdiğinizden emin olun.
$owner = @{
"@odata.id" = "https://graph.microsoft.com/v1.0/users/OWNER_UPN"
}Ayrıca değiştirmeye çalıştığınız grubun kimliğini de bilmeniz gerekir. Bunu yapmanın en basit yolu Get-MgGroup cmdlet'ini aşağıdaki gibi DisplayName üzerinde bir filtreyle kullanmaktır. GROUP_NAME grubunu hedef grubunuzun adıyla değiştirdiğinizden emin olun.
$group = Get-MgGroup -Filter "DisplayName eq 'GROUP_NAME'"Bu iki bilgiye sahip olduğunuzda, yeni grup sahibini grubunuza eklemeye hazırsınız.
New-MgGroupOwner -GroupId $group.Id -BodyParameter $ownerMevcut bir grup sahibini kaldırma
Mevcut bir gruptan bir sahibi kaldırmak için Remove-MgGroupOwnerByRef cmdlet'ini kullanmanız gerekir. Bu, belirli bir sahibi veya tüm sahipleri hedef gruptan çıkarmamıza olanak tanır.
Daha önce olduğu gibi, bir sonraki adımda kullanabilmemiz için hedef grubunuzun bilgilerini depolayarak başlayın.
$group = Get-MgGroup -Filter "DisplayName eq 'GROUP_NAME'"Daha sonra mevcut grup sahiplerini görüntülemek ve saklamak için yukarıdaki örneklerden birini kullanın. Bu örnekte hedef grubumuzun sahiplerini $OwnersList değişkenine kaydettik. Bu değişken tüm mevcut grup sahiplerini içeren bir dizi olduğundan, diziden belirli bir kullanıcıyı seçmek için aşağıdaki gibi 'dizi dilimleme' veya köşeli parantez kullanabiliriz:
$OwnersList[0]
or
$OwnersList[1]Hangi sahibi kaldırmanız gerektiğini yukarıdakiyle değerlendirin ve ardından o sahibi gruptan çıkarmak için aşağıdaki komutu kullanın.
Remove-MgGroupOwnerByRef -GroupId $group.Id -DirectoryObjectID $OwnersList[1].Id Birden çok grup sahibini ekleme ve değiştirme
New-MgGroupOwner cmdlet'inin sınırlamalarından biri, isteğin gövdesinin anahtar/değer çiftlerini içeren karma tablo biçiminde beklemesidir. Hashtable ile her anahtarın benzersiz olması gerekir; dolayısıyla hash tablosu belirli bir anahtarın yalnızca tek bir girişini içerebilir; bu durumda bu, sahip kullanıcı nesnesinin OData tanımlayıcısıdır.
Örneğin, kiracınızdaki tüm gruplar için mevcut iki grup sahibini iki yeni grup sahibiyle değiştirmeniz gerekirse, her yeni grup sahibini şurada belirtmeniz gerekir: kendi hashtable'larını oluşturun ve bunları ekleyerek döngü yapın. Bunlar eklendikten sonra, mevcut sahipler arasında geçiş yaparak bunları kaldırabilecek ve böylece sahiplerin yerini alabileceksiniz.
Aşağıdaki komut dosyası, yukarıda açıklandığı gibi sahiplerin değiştirilmesi için bazı mantıklar sağlar. İlk adım olarak grup sahiplerini depolamak için Get-MgGroupOwner'ı kullandığıma dikkat edin, bunun nedeni grupların bir sahipe ihtiyaç duyması ve bir sahibi atanmadan bırakılamamasıdır. Bu nedenle bu sırayla sahibi eklememiz ve ardından sahibi kaldırmamız gerekiyor.
Connect-MgGraph -scope group.readwrite.all
$owner1 = @{
"@odata.id" = "https://graph.microsoft.com/v1.0/users/OWNER1ID"
}
$owner2 = @{
"@odata.id" = "https://graph.microsoft.com/v1.0/users/OWNER2ID"
}
$groups = Get-MgGroup -All
Foreach ($group in $groups){
$owners = $null
$owners = Get-MgGroupOwner -GroupId $group.Id
New-MgGroupOwner -GroupId $group.Id -BodyParameter $owner1
New-MgGroupOwner -GroupId $group.Id -BodyParameter $owner2
Foreach ($owner in $owners) {
Remove-MgGroupOwnerByRef -GroupId $group.Id -DirectoryObjectID $owner.Id
}
}Kapanıyor
Mevcut ve etkin Microsoft 365 gruplarına grup sahiplerini eklerken, kaldırırken ve değiştirirken birçok farklı karmaşıklık söz konusudur. Yukarıdaki örnek, bu görevleri gerçekleştirmek için gereken temel işlevleri göstermektedir ancak üretime hazır komut dosyalarını temsil etmez. Her zaman başka birinin kodunu inceleyin ve kendi gereksinimlerinizi karşılayacak şekilde değiştirin.