PowerShell ile SharePoint kullanıcılarını ve gruplarını yönetme
Bu makale hem Microsoft 365 Kurumsal hem de Office 365 Kurumsal için geçerlidir.
Büyük kullanıcı hesapları veya grupları listeleriyle çalışan ve bunları yönetmek için daha kolay bir yol isteyen bir SharePoint yöneticisiyseniz, Microsoft 365 için PowerShell'i kullanabilirsiniz.
Başlamadan önce, bu makaledeki yordamlar SharePoint'e bağlanmanızı gerektirir. Yönergeler için bkz. SharePoint PowerShell'e bağlanma
Sitelerin, grupların ve kullanıcıların listesini alma
Kullanıcıları ve grupları yönetmeye başlamadan önce sitelerinizin, gruplarınızın ve kullanıcılarınızın listelerini almanız gerekir. Daha sonra, bu makaledeki örnekle çalışmak için bu bilgileri kullanabilirsiniz.
Şu komutla kiracınızdaki sitelerin listesini alın:
Get-SPOSite
Şu komutla kiracınızdaki grupların listesini alın:
Get-SPOSite | ForEach {Get-SPOSiteGroup -Site $_.Url} | Format-Table
Şu komutla kiracınızdaki kullanıcıların listesini alın:
Get-SPOSite | ForEach {Get-SPOUser -Site $_.Url}
Site yöneticileri grubuna kullanıcı ekleme
Bir site koleksiyonundaki Set-SPOUser
site yöneticileri listesine kullanıcı eklemek için cmdlet'ini kullanırsınız.
$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
$user = "<user account name, such as opalc>"
Set-SPOUser -Site https://$tenant.sharepoint.com/sites/$site -LoginName $user@$tenant.com -IsSiteCollectionAdmin $true
Bu komutları kullanmak için, ve > karakterleri de dahil olmak üzere < tırnak içindeki her şeyi doğru adlarla değiştirin.
Örneğin, bu komut kümesi Contoso kiracısında ContosoTest site koleksiyonundaki site yöneticileri listesine Opal Castillo'yu (kullanıcı adı opalc) ekler:
$tenant = "contoso"
$site = "contosotest"
$user = "opalc"
Set-SPOUser -Site https://$tenant.sharepoint.com/sites/$site -LoginName $user@$tenant.com -IsSiteCollectionAdmin $true
Bu komutları kopyalayıp Not Defteri'ne yapıştırabilir, $tenant, $site ve $user değişken değerlerini ortamınızdaki gerçek değerlerle değiştirebilir ve ardından bunları çalıştırmak için SharePoint Yönetim Kabuğu pencerenize yapıştırabilirsiniz.
Diğer site koleksiyonu gruplarına kullanıcı ekleme
Bu görevde, bir site koleksiyonundaki Add-SPOUser
SharePoint grubuna kullanıcı eklemek için cmdlet'ini kullanırız.
$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
$user = "<user account name, such as opalc>"
$group = "<group name name, such as Auditors>"
Add-SPOUser -Group $group -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site
Örneğin, contoso kiracısında ContosoTest site koleksiyonundaki Denetçiler grubuna Glen Rife (kullanıcı adı glenr) ekleyelim:
$tenant = "contoso"
$site = "contosotest"
$user = "glenr"
$group = "Auditors"
Add-SPOUser -Group $group -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site
Site koleksiyonu grubunu İçerik Oluşturucu
Cmdlet'ini New-SPOSiteGroup
kullanarak yeni bir SharePoint grubu oluşturur ve bunu bir site koleksiyonuna eklersiniz.
$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
$group = "<group name name, such as Auditors>"
$level = "<permission level, such as View Only>"
New-SPOSiteGroup -Group $group -PermissionLevels $level -Site https://$tenant.sharepoint.com/sites/$site
İzin düzeyleri gibi grup özellikleri daha sonra cmdlet'i kullanılarak Set-SPOSiteGroup
güncelleştirilebilir.
Örneğin, contoso kiracısında contosotest site koleksiyonuna Yalnızca Görüntüleme izinlerine sahip Denetçiler grubunu ekleyelim:
$tenant = "contoso"
$site = "contosotest"
$group = "Auditors"
$level = "View Only"
New-SPOSiteGroup -Group $group -PermissionLevels $level -Site https://$tenant.sharepoint.com/sites/$site
Gruptan kullanıcı kaldırma
Bazen bir kullanıcıyı bir siteden, hatta tüm sitelerden kaldırmanız gerekir. Belki de çalışan bir bölümden diğerine geçer veya şirketten ayrılır. Bunu kullanıcı arabiriminde bir çalışan için kolayca yapabilirsiniz, ancak tam bir bölümü bir siteden diğerine taşımanız gerektiğinde bu işlem kolayca yapılamaz.
Ancak SharePoint Yönetim Kabuğu ve CSV dosyalarını kullanarak bu hızlı ve kolay bir işlemdir. Bu görevde, bir kullanıcıyı site koleksiyonu güvenlik grubundan kaldırmak için Windows PowerShell kullanırsınız. Ardından bir CSV dosyası kullanır ve farklı sitelerden çok sayıda kullanıcıyı kaldırırsınız.
Komut söz dizimini görebilmek için site koleksiyonu grubundan tek bir Microsoft 365 kullanıcısını kaldırmak için 'Remove-SPOUser' cmdlet'ini kullanacağız. Söz dizimi şöyle görünür:
$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
$user = "<user account name, such as opalc>"
$group = "<group name name, such as Auditors>"
Remove-SPOUser -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site -Group $group
Örneğin, contoso kiracısında contosotest site koleksiyonundaki site koleksiyonu Denetçileri grubundan Ahmet Overby'yi kaldıralım:
$tenant = "contoso"
$site = "contosotest"
$user = "bobbyo"
$group = "Auditors"
Remove-SPOUser -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site -Group $group
Bobby'yi şu anda içinde olduğu tüm gruplardan kaldırmak istediğimizi varsayalım. Bunu şu şekilde yaparız:
$tenant = "contoso"
$user = "bobbyo"
Get-SPOSite | ForEach {Get-SPOSiteGroup –Site $_.Url} | ForEach {Remove-SPOUser -LoginName $user@$tenant.com -Site $_.Url}
Uyarı
Bu sadece bir örnektir. Her gruptan bir kullanıcıyı kaldırmanız gerekmediği sürece (örneğin, kullanıcı şirketten ayrıldığında) bu komutu çalıştırmamalısınız.
Büyük kullanıcı ve grup listelerinin yönetimini otomatikleştirme
SharePoint sitelerine çok sayıda hesap eklemek ve bunlara izin vermek için Microsoft 365 yönetim merkezi, tek tek PowerShell komutlarını veya PowerShell'i ve csv dosyasını kullanabilirsiniz. Bu seçenekler arasında CSV dosyası, bu görevi otomatikleştirmenin en hızlı yoludur.
Temel işlem, Windows PowerShell betiğin ihtiyaç duyduğu parametrelere karşılık gelen üst bilgileri (sütunları) içeren bir CSV dosyası oluşturmaktır. Excel'de bu tür bir listeyi kolayca oluşturabilir ve csv dosyası olarak dışarı aktarabilirsiniz. Ardından, CSV dosyasındaki kayıtlar (satırlar) arasında yineleme yapmak ve kullanıcıları gruplara ve grupları sitelere eklemek için bir Windows PowerShell betiği kullanırsınız.
Örneğin, bir grup site koleksiyonu, grup ve izin tanımlamak için bir CSV dosyası oluşturalım. Ardından, grupları kullanıcılarla doldurmak için bir CSV dosyası oluşturacağız. Son olarak grupları oluşturan ve dolduran bir Windows PowerShell betiği oluşturup çalıştıracağız.
İlk CSV dosyası bir veya daha fazla site koleksiyonuna bir veya daha fazla grup ekler ve şu yapıya sahip olur:
Üstbilgi:
Site,Group,PermissionLevels
Öğe:
https://tenant.sharepoint.com/sites/site,group,level
Örnek bir dosya aşağıda verilmişti:
Site,Group,PermissionLevels
https://contoso.sharepoint.com/sites/contosotest,Contoso Project Leads,Full Control
https://contoso.sharepoint.com/sites/contosotest,Contoso Auditors,View Only
https://contoso.sharepoint.com/sites/contosotest,Contoso Designers,Design
https://contoso.sharepoint.com/sites/TeamSite01,XT1000 Team Leads,Full Control
https://contoso.sharepoint.com/sites/TeamSite01,XT1000 Advisors,Edit
https://contoso.sharepoint.com/sites/Blog01,Contoso Blog Designers,Design
https://contoso.sharepoint.com/sites/Blog01,Contoso Blog Editors,Edit
https://contoso.sharepoint.com/sites/Project01,Project Alpha Approvers,Full Control
İkinci CSV dosyası bir veya daha fazla gruba bir veya daha fazla kullanıcı ekler ve şu yapıya sahip olur:
Üstbilgi:
Group,LoginName,Site
Öğe:
group,login,https://tenant.sharepoint.com/sites/site
Örnek bir dosya aşağıda verilmişti:
Group,LoginName,Site
Contoso Project Leads,bobbyo@contoso.com,https://contoso.sharepoint.com/sites/contosotest
Contoso Auditors,allieb@contoso.com,https://contoso.sharepoint.com/sites/contosotest
Contoso Designers,bonniek@contoso.com,https://contoso.sharepoint.com/sites/contosotest
XT1000 Team Leads,dorenap@contoso.com,https://contoso.sharepoint.com/sites/TeamSite01
XT1000 Advisors,garthf@contoso.com,https://contoso.sharepoint.com/sites/TeamSite01
Contoso Blog Designers,janets@contoso.com,https://contoso.sharepoint.com/sites/Blog01
Contoso Blog Editors,opalc@contoso.com,https://contoso.sharepoint.com/sites/Blog01
Project Alpha Approvers,robinc@contoso.com,https://contoso.sharepoint.com/sites/Project01
Sonraki adım için, sürücünüze kaydedilmiş iki CSV dosyasının olması gerekir. Burada hem CSV dosyalarını kullanan hem de izin ve grup üyeliği ekleyen örnek komutlar verilmiştir:
Import-Csv C:\O365Admin\GroupsAndPermissions.csv | ForEach {New-SPOSiteGroup -Group $_.Group -PermissionLevels $_.PermissionLevels -Site $_.Site}
Import-Csv C:\O365Admin\Users.csv | ForEach {Add-SPOUser -Group $_.Group –LoginName $_.LoginName -Site $_.Site}
Betik, CSV dosya içeriğini içeri aktarır ve New-SPOSiteGroup ve Add-SPOUser komutlarının parametrelerini doldurmak için sütunlardaki değerleri kullanır. Örneğimizde, bu dosyayı C sürücüsündeki O365Admin klasörüne kaydediyoruz, ancak istediğiniz yere kaydedebilirsiniz.
Şimdi aynı CSV dosyasını kullanarak farklı sitelerdeki birkaç grup için bir grup kişiyi kaldıralım. Aşağıda örnek bir komut verilmişti:
Import-Csv C:\O365Admin\Users.csv | ForEach {Remove-SPOUser -LoginName $_.LoginName -Site $_.Site -Group $_.Group}
Kullanıcı raporları oluşturma
Birkaç site için bir rapor almak ve bu sitelerin kullanıcılarını, izin düzeylerini ve diğer özellikleri görüntülemek isteyebilirsiniz. Söz dizimi şöyle görünür:
$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | select * | Format-table -Wrap -AutoSize | Out-File c\UsersReport.txt -Force -Width 360 -Append
Bu, bu üç sitenin verilerini alır ve yerel sürücünüzdeki bir metin dosyasına yazar. –Append parametresi var olan bir dosyaya yeni içerik ekler.
Örneğin, Contoso1 kiracısı için ContosoTest, TeamSite01 ve Project01 sitelerinde bir rapor çalıştıralım:
$tenant = "contoso"
$site = "contosotest"
Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append
$site = "TeamSite01"
Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site |Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append
$site = "Project01"
Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append
Yalnızca $site değişkenini değiştirmek zorunda kaldık. $tenant değişkeni, değerini komutun üç çalıştırmasına kadar korur.
Ancak, bunu her site için yapmak isterseniz ne olur? Bu komutu kullanarak tüm bu web sitelerini yazmak zorunda kalmadan bunu yapabilirsiniz:
Get-SPOSite | ForEach {Get-SPOUser –Site $_.Url} | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append
Bu rapor oldukça basittir ve daha ayrıntılı bilgiler içeren daha belirli raporlar veya raporlar oluşturmak için daha fazla kod ekleyebilirsiniz. Ancak bu size SharePoint ortamındaki kullanıcıları yönetmek için SharePoint Yönetim Kabuğu'nun nasıl kullanılacağı hakkında bir fikir vermelidir.
Ayrıca bkz.
SharePoint PowerShell'e bağlanma
SharePoint'i PowerShell ile yönetme