Exclui um perfil de usuário individual do Office 365 / Sharepoint Online MySite, usando o Powershell

2

Estou tentando desenvolver um processo que permita que meu helpdesk exclua o perfil de um usuário individual do ponto de compartilhamento do Office 365 on-line usando o powershell.

É fácil se conectar ao nosso URL do SharePoint Online e ver os sites que temos:

Connect-MsolService
Connect-SPOService -url https://example-admin.sharepoint.com -Credential [email protected]

Eu posso verificar se estou conectado. get-sposite retorna uma lista de nossos URLs on-line do SharePoint, conforme o esperado.

A execução de comandos, como repair-sposite ou remove-sposite , funciona para todo o conjunto de sites, por exemplo repair-sposite -identity https://example-my.sharepoint.com funciona em todo o conjunto de sites, portanto, a última coisa que quero fazer é executar remove-sposite nesse nível, e executá-lo em um nível mais profundo ( repair-sposite -identity https://example-my.sharepoint.com/personal/user_example_com ) não consegue localizar um site do sharepoint com o qual trabalhar.

Existem alguns sites que cortaram e colaram o mesmo snippet de código para iterar todos os usuários em uma coleção de mysites do sharepoint e remover todos eles, mas não estou convencido de que o código funcione para sites do sharepoint 2013 e é trivial remover as permissões de um usuário de um site. Mas eu não quero fazer nenhuma dessas coisas, eu só quero remover o perfil do usuário um dos mysites.

    
por Rob Moir 06.02.2014 / 14:37

2 respostas

1

Eu tenho gerado uma biblioteca para usar em sharepoint online, então eu tenho escrito centenas dessas pequenas tarefas ultimamente, mas basicamente você precisará usar comandos CSOM. primeiro, faça o download do SDK de contexto do cliente sharepoint server 2013. Em seguida, certifique-se de incluir a DLL em seu código:

Import-Module 'C: \ Arquivos de programas \ Arquivos comuns \ Microsoft Shared \ Extensões de servidor da Web \ 16 \ ISAPI \ Microsoft.SharePoint.Client.dll'

Seu caminho para a DLL pode ser diferente do meu.

Agora você pode usar o CSOM para fazer praticamente tudo que quiser.

Aqui está um código que deve realizar o que você está tentando fazer.

Import-Module 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll'  #Needed for CSOM
$SPOUsername="[email protected]"
$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()
    
por 29.04.2016 / 23:43
1

O melhor que posso encontrar para você:

link

Quais estados:

There are no cmdlets available for managing SharePoint objects at a lower scope than the site collection.

Mas, então, dá essa possibilidade:

There is however a workaround for manipulating objects in SharePoint Online at a lower level using the SharePoint Server 2013 Client Components SDK which enables remote development against SharePoint Server 2013.

Mas não é o que você procura depois de fornecer um script PS simples para o Helpdesk usar. Você pode considerar a possibilidade de abrir um ticket com o suporte do O365, mas minha experiência com isso foi imprevisível. Às vezes parece que eu conheço alguém que sabe apenas respostas escritas, e depois há momentos em que parece que eu recebo os próprios desenvolvedores.

    
por 06.02.2014 / 15:55