我正在尝试制定一个流程,允许我的帮助台使用 powershell 从 Office 365 sharepoint online 中删除单个用户的个人资料。
很容易连接到我们的 Sharepoint Online URL 并查看我们拥有的站点:
Connect-MsolService
Connect-SPOService -url https://example-admin.sharepoint.com -Credential [email protected]
我可以验证我是否已连接。
get-sposite
正如您所期望的那样,返回我们的 SharePoint 在线 URL 列表。
运行诸如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 网站。
有一些网站都剪切并粘贴了相同的代码片段来迭代 SharePoint mysites 集合中的所有用户并删除所有用户,但我不确定该代码是否适用于 SharePoint 2013 网站,而且从网站中删除用户的权限很简单。但我不想做这两件事,我只想删除一来自 mysites 的用户个人资料。
答案1
我一直在生成一个用于 SharePoint Online 的库,所以最近我一直在编写数百个这样的小任务,但基本上你需要使用 CSOM 命令。首先,下载 SharePoint Server 2013 客户端上下文 SDK。然后确保在你的代码中包含 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="[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()
答案2
我能找到的最好的给你:
http://jopx.blogspot.com/2013/08/managing-sharepoint-online-with.html
其中指出:
没有可用于管理网站集以下范围的 SharePoint 对象的 cmdlet。
但随后又给出了这种可能性:
但是,有一种解决方法,即使用 SharePoint Server 2013 客户端组件 SDK 在较低级别操作 SharePoint Online 中的对象,从而实现针对 SharePoint Server 2013 的远程开发。
但这并不是您想要的,只需为帮助台提供一个简单的 PS 脚本即可。您可以考虑向 O365 支持部门开具一张工单,但我的经验是时好时坏。有时我似乎只找到一个只知道脚本答案的人,有时我似乎找到了真正的开发人员。