SharePoint Online - 查找直接作业

问题描述 投票:0回答:1

我们拥有 600 多个 SharePoint 网站,我们将把它们迁移到全新的混合域环境。我们目前正在尝试配置跨租户访问场景。我正在尝试查找已直接分配到我们任何 SharePoint 网站的任何用户。我不想逐个用户(超过 3000 个用户)去查找直接分配,除非绝对必要。我宁愿查看站点并确定用户是否未被分配为组的一部分。到目前为止,我还没有找到可以识别直接分配用户的 SPO cmdlet。

以前有人这样做过吗?如果有的话,您愿意分享您的方法和经验吗?我可以分配所有当前用户/组,但宁愿在将站点从旧租户迁移到新租户之前进行清理。我已成功将新租户中的帐户作为 #EXT 用户分配到旧租户中的现有站点。但我们希望尽可能避免直接分配它。

我使用 Get-SPOSite 将站点拉入集合中,并使用 Get-SPOUser 将每个站点的用户/组拉入集合中。从那里我需要确定直接任务,但这还不清楚。短暂性脑缺血发作。

powershell sharepoint-online
1个回答
0
投票

要查找已直接分配到任何 SharePoint 网站的任何用户,您可以使用 Get-SPOUser cmdlet 获取每个网站的所有用户的列表,然后使用 Get-SPOGroup cmdlet 获取所有用户的列表每个站点的组。然后,您可以将用户与每个组的成员进行比较,以确定是否有任何用户未分配为组的一部分。下面是一个可以完成此任务的 PowerShell 脚本示例:

$sites = Get-SPOSite
foreach ($site in $sites) {
    $users = Get-SPOUser -Site $site.Url
    $groups = Get-SPOGroup -Site $site.Url
    foreach ($user in $users) {
        $isAssigned = $false
        foreach ($group in $groups) {
            $members = Get-SPOGroup -Site $site.Url -Group $group.Title | Select-Object -ExpandProperty Users
            if ($members -contains $user.LoginName) {
                $isAssigned = $true
                break
            }
        }
        if (!$isAssigned) {
            Write-Output "User $($user.LoginName) is not assigned to a group on site $($site.Url)"
        }
    }
}

此脚本将循环访问租户中的所有 SharePoint 网站,并且对于每个网站,它将获取所有用户和组的列表。然后它将循环遍历每个用户,对于每个用户,它将循环遍历每个组以查看该用户是否是该组的成员。如果用户不是任何组的成员,它将输出一条消息,指示该用户未分配到该站点上的组。

© www.soinside.com 2019 - 2024. All rights reserved.