使用 PowerShell 管理 SharePoint 使用者和群組
本文適用於 Microsoft 365 企業版和 Office 365 企業版。
如果您是 SharePoint 系統管理員,負責處理大量用戶帳戶或群組清單,而且想要更輕鬆地管理它們,您可以使用適用於 Microsoft 365 的 PowerShell。
開始之前,本文中的程式會要求您連線到 SharePoint。 如需指示,請 參閱連線到 SharePoint PowerShell
取得網站、群組和用戶的清單
在我們開始管理使用者和群組之前,您必須先取得網站、群組和用戶的清單。 然後,您可以使用此資訊來完成本文中的範例。
使用下列命令取得租使用者中的網站清單:
Get-SPOSite
使用下列命令取得租使用者中的群組清單:
Get-SPOSite | ForEach {Get-SPOSiteGroup -Site $_.Url} | Format-Table
使用下列命令取得租使用者中的使用者清單:
Get-SPOSite | ForEach {Get-SPOUser -Site $_.Url}
將使用者新增至網站系統管理員群組
您可以使用 Cmdlet Set-SPOUser
將使用者新增至網站集合上的網站管理員清單。
$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
若要使用這些命令,請以正確的名稱取代引號內的所有專案,包括 < 和 > 字元。
例如,這組命令會將Opal Castlist (使用者名稱 opalc) 新增至 Contoso 租用中 ContosoTest 網站集合上的網站管理員清單:
$tenant = "contoso"
$site = "contosotest"
$user = "opalc"
Set-SPOUser -Site https://$tenant.sharepoint.com/sites/$site -LoginName $user@$tenant.com -IsSiteCollectionAdmin $true
您可以將這些命令複製並貼到記事本中、將$tenant、$site和$user的變數值變更為環境中的實際值,然後將此值貼到 SharePoint 管理命令介面視窗中以執行它們。
將使用者新增至其他網站集合群組
在此工作中,我們會使用 Add-SPOUser
Cmdlet 將使用者新增至網站集合上的 SharePoint 群組。
$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
例如,讓我們將 (用戶名稱管理員) 新增至 contoso 租用中 ContosoTest 網站集合上的[稽核員] 群組:
$tenant = "contoso"
$site = "contosotest"
$user = "glenr"
$group = "Auditors"
Add-SPOUser -Group $group -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site
Create 網站集合群組
您可以使用 Cmdlet New-SPOSiteGroup
來建立新的 SharePoint 群組,並將其新增至網站集合。
$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
群組屬性,例如許可權等級,稍後可以使用 Set-SPOSiteGroup
Cmdlet 來更新。
例如,讓我們將具有僅檢視許可權的稽核員群組新增至 contoso 租用中的 contosotest 網站集合:
$tenant = "contoso"
$site = "contosotest"
$group = "Auditors"
$level = "View Only"
New-SPOSiteGroup -Group $group -PermissionLevels $level -Site https://$tenant.sharepoint.com/sites/$site
從群組移除使用者
有時候您必須從網站或甚至所有網站移除使用者。 員工或許從某個部門移到另一個部門,或離開公司。 您可以在UI中輕鬆地為一位員工執行此動作,但是當您必須將一個網站的完整部門移至另一個網站時,這並不容易完成。
不過,使用 SharePoint 管理命令介面和 CSV 檔案,這會快速且簡單。 在這項工作中,您會使用 Windows PowerShell 從網站集合安全組移除使用者。 然後使用 CSV 檔案,並從不同的網站移除許多使用者。
我們將使用 『Remove-SPOUser』 Cmdlet 從網站集合群組中移除單一 Microsoft 365 使用者,以便查看命令語法。 語法的外觀如下:
$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
例如,讓我們從 contoso 租用中 contosotest 網站集合的[稽核員] 群組中移除[使用者 Overby] 網站集合:
$tenant = "contoso"
$site = "contosotest"
$user = "bobbyo"
$group = "Auditors"
Remove-SPOUser -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site -Group $group
假設我們想要從他目前的所有群組中移除此處的使用者。 以下是我們執行此作業的作法:
$tenant = "contoso"
$user = "bobbyo"
Get-SPOSite | ForEach {Get-SPOSiteGroup –Site $_.Url} | ForEach {Remove-SPOUser -LoginName $user@$tenant.com -Site $_.Url}
警告
這隻是一個範例。 除非您真的必須從每個群組移除使用者,例如用戶離開公司,否則不應該執行此命令。
自動管理大型使用者和群組清單
若要將大量帳戶新增至 SharePoint 網站並授與許可權,您可以使用 Microsoft 365 系統管理中心、個別 PowerShell 命令或 PowerShell 和 CSV 檔案。 在這些選項中,CSV 檔案是自動化這項工作的最快方式。
基本程式是建立 CSV 檔案,其中的標頭 (數據行) 對應至 Windows PowerShell 腳本所需的參數。 您可以輕鬆地在 Excel 中建立這類清單,然後將它匯出為 CSV 檔案。 然後,您會使用 Windows PowerShell 腳本來逐一查看記錄 (CSV 檔案中) 的數據列,並將使用者新增至群組,並將群組新增至網站。
例如,讓我們建立 CSV 檔案來定義網站集合、群組和許可權的群組。 接下來,我們將建立 CSV 檔案,以將使用者填入群組。 最後,我們將建立並執行 Windows PowerShell 腳本,以建立和填入群組。
第一個 CSV 檔案會將一或多個群組新增至一或多個網站集合,並具有下列結構:
頭:
Site,Group,PermissionLevels
專案:
https://tenant.sharepoint.com/sites/site,group,level
以下是範例檔案:
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
第二個 CSV 檔案會將一或多個使用者新增至一或多個群組,並具有此結構:
頭:
Group,LoginName,Site
專案:
group,login,https://tenant.sharepoint.com/sites/site
以下是範例檔案:
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
在下一個步驟中,您必須將兩個 CSV 檔案儲存到磁碟驅動器。 以下是同時使用 CSV 檔案和新增許可權和群組成員資格的範例命令:
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}
腳本會匯入 CSV 檔案內容,並使用數據行中的值來填入 New-SPOSiteGroup 和 Add-SPOUser 命令的參數。 在我們的範例中,我們會將此檔案儲存到磁碟驅動器 C 上的 O365Admin 資料夾,但您可以將它儲存在任何您想要的位置。
現在,讓我們使用相同的 CSV 檔案,針對不同網站中的數個群組移除一群人員。 以下是範例命令:
Import-Csv C:\O365Admin\Users.csv | ForEach {Remove-SPOUser -LoginName $_.LoginName -Site $_.Site -Group $_.Group}
產生用戶報告
您可能想要取得一些網站的報告,並顯示這些網站的使用者、其許可權等級和其他屬性。 這是語法的外觀:
$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
這會抓取這三個月台的數據,並將它們寫入本機磁碟驅動器上的文本檔。 參數 –Append 會將新內容新增至現有的檔案。
例如,讓我們在 Contoso1 租使用者的 ContosoTest、TeamSite01 和 Project01 網站上執行報表:
$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
我們必須只變更 $site 變數。 $tenant變數會透過命令的所有三個執行來保留其值。
不過,如果您想要針對每個網站執行這項操作,該怎麼辦? 您可以執行此動作,而不需要使用下列命令來輸入所有這些網站:
Get-SPOSite | ForEach {Get-SPOUser –Site $_.Url} | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append
此報表相當簡單,您可以新增更多程式碼來建立包含更詳細資訊的更特定報表或報表。 但這應該讓您瞭解如何使用 SharePoint 管理命令介面來管理 SharePoint 環境中的使用者。