Я пытаюсь разработать процесс, который позволил бы моей службе поддержки удалять профиль отдельного пользователя из общего доступа Office 365 в Интернете с помощью PowerShell.
Подключиться к нашему URL-адресу Sharepoint Online и увидеть имеющиеся у нас сайты легко:
Connect-MsolService
Connect-SPOService -url https://example-admin.sharepoint.com -Credential AccountWithOffice365AdminRights@example.com
Я могу проверить, что я подключен. get-sposite
как и ожидалось, возвращает список наших URL-адресов sharepoint.
Запуск таких команд, как repair-sposite
или remove-sposite
работать для всего семейства сайтов, например repair-sposite -identity https://example-my.sharepoint.com
работает со всем семейством сайтов, поэтому последнее, что я хочу делать, это запускать remove-sposite
на этом уровне и запускать его на более глубоком уровне (repair-sposite -identity https://example-my.sharepoint.com/personal/user_example_com
) не может найти сайт sharepoint для работы.
Есть несколько сайтов, которые вырезали и вставили один и тот же фрагмент кода, чтобы перебрать всех пользователей в коллекции mysites sharepoint и удалить их всех, но я не уверен, что код работает для сайтов sharepoint 2013, и это тривиально для удаления разрешений пользователя с сайта. Но я не хочу ничего из этого делать, я просто хочу удалить один профиль пользователя с сайта mysites.
Лучшее, что я могу найти для вас:
http://jopx.blogspot.com/2013/08/managing-sharepoint-online-with.html
В котором говорится:
Командлеты для управления объектами SharePoint в более низкой области, чем семейство сайтов, отсутствуют.
Но тогда дает такую возможность:
Однако существует обходной путь для управления объектами в SharePoint Online на более низком уровне с помощью пакета SDK клиентских компонентов SharePoint Server 2013, который обеспечивает удаленную разработку для SharePoint Server 2013.
Но это не то, что вам нужно для предоставления простого скрипта PS для использования службой поддержки. Вы можете рассмотреть возможность открытия заявки в службу поддержки O365, но мой опыт в этой области был неудачным. Иногда мне кажется, что у меня есть кто-то, кто знает только ответы по сценарию, а иногда мне кажется, что я получаю самих разработчиков.
Я создавал библиотеку для использования в сети sharepoint, поэтому в последнее время я написал сотни этих небольших задач, но в основном вам нужно будет использовать команды CSOM. Сначала загрузите SDK контекста клиента sharepoint server 2013. Затем убедитесь, что вы включили DLL в свой код:
Модуль импорта 'C: \ Program Files \ Common Files \ Microsoft Shared \ Web Server Extensions \ 16 \ ISAPI \ Microsoft.SharePoint.Client.dll'
Ваш путь к DLL может отличаться от моего.
Теперь вы можете использовать CSOM, чтобы делать все, что захотите.
Вот код, который должен выполнить то, что вы пытаетесь сделать.
Import-Module 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll' #Needed for CSOM
$SPOUsername="username@sharepoint.com"
$SPOPassword="my plain text password"
$SPCred=New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($SPOUsername,(ConvertTo-SecureString $SPOPassword -AsPlainText -Force))
$context = New-Object Microsoft.SharePoint.Client.ClientContext("https://Blah.sharepoint.com/sites/.....")
$context.Credentials = $SPCred
$web=$context.Web
$context.Load($web.SiteUsers)
$context.ExecuteQuery()
$Web.SiteUsers|Select ID,Email,title #Display users and their IDs
$Web.SiteUsers.RemoveById(<ID of target user>)
$context.ExecuteQuery()