Поделиться через


Управление пользователями и группами SharePoint с помощью PowerShell

Эта статья относится к Microsoft 365 корпоративный и Office 365 корпоративный.

Если вы являетесь администратором SharePoint, который работает с большими списками учетных записей пользователей или групп и хочет упростить управление ими, вы можете использовать PowerShell для Microsoft 365.

Прежде чем начать, процедуры, описанные в этой статье, требуют подключения к SharePoint. Инструкции см. в статье Подключение к SharePoint PowerShell.

Получение списков сайтов, групп и пользователей

Прежде чем мы начнем управлять пользователями и группами, вам необходимо получить список сайтов, групп и пользователей. Эту информацию можно использовать для работы с примером в данной статье.

Чтобы получить список сайтов в своем клиенте, выполните следующую команду:

Get-SPOSite

Чтобы получить список групп в своем клиенте, выполните следующую команду:

Get-SPOSite | ForEach {Get-SPOSiteGroup -Site $_.Url} | Format-Table

Чтобы получить список пользователей в своем клиенте, выполните следующую команду:

Get-SPOSite | ForEach {Get-SPOUser -Site $_.Url}

Добавление пользователя в группу администраторов сайта

Командлет используется 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 Castillo (имя пользователя opalc) в список администраторов сайта в семействе веб-сайтов ContosoTest в клиенте Contoso:

$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 командлет для добавления пользователя в группу 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

Например, давайте добавим Глен Райф (имя пользователя glenr) в группу Аудиторы в семействе веб-сайтов ContosoTest в клиенте contoso:

$tenant = "contoso"
$site = "contosotest"
$user = "glenr"
$group = "Auditors"
Add-SPOUser -Group $group -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site

Создание группы семейства веб-сайтов

Командлет используется 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 .

Например, давайте добавим группу "Аудиторы" с разрешениями "Только просмотр" в семейство веб-сайтов contosotest в клиенте contoso:

$tenant = "contoso"
$site = "contosotest"
$group = "Auditors"
$level = "View Only"
New-SPOSiteGroup -Group $group -PermissionLevels $level -Site https://$tenant.sharepoint.com/sites/$site

Удаление пользователей из группы

Иногда необходимо удалить пользователя с сайта или даже со всех сайтов. Возможно, сотрудник переводится из одного подразделения в другое или увольняется из компании. Вы можете легко сделать это для одного сотрудника в пользовательском интерфейсе, но это не так просто сделать, когда вам нужно переместить полное разделение с одного сайта на другой.

Однако с помощью командной консоли SharePoint и CSV-файлов это происходит быстро и просто. В этой задаче вы используете Windows PowerShell, чтобы удалить пользователя из группы безопасности семейства веб-сайтов. Затем вы используете CSV-файл и удаляете множество пользователей с разных сайтов.

Мы будем использовать командлет Remove-SPOUser, чтобы удалить одного пользователя 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

Например, давайте удалим Bobby Overby из группы аудиторов семейства веб-сайтов в семействе веб-сайтов contosotest в клиенте contoso:

$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 . В нашем примере мы сохраняем этот файл в папку O365Admin на диске C, но вы можете сохранить его в любом месте.

Теперь давайте удалим группу людей для нескольких групп на разных сайтах с помощью одного 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 добавляет новое содержимое в существующий файл.

Например, запустим отчет на сайтах ContosoTest, TeamSite01 и Project01 клиентской организации Contoso1.

$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.

См. также

Подключение к SharePoint PowerShell

Управление SharePoint с помощью PowerShell

Управление Microsoft 365 с помощью PowerShell

Начало работы с PowerShell для Microsoft 365