Búsqueda de sitios web

SharePoint Online: busque todos los grupos de seguridad de Active Directory en una colección de sitios


Requisito: obtener todos los grupos de seguridad de AD en un sitio de SharePoint Online.

PowerShell para buscar todos los grupos de AD en SharePoint Online:

En muchas organizaciones, los grupos de Active Directory se utilizan para administrar el acceso y los permisos para los sitios y el contenido de SharePoint Online. A menudo, se crean nuevos grupos según sea necesario y los grupos antiguos pueden no utilizarse o incluso olvidarse. Por lo tanto, es posible que desee buscar todos los grupos de AD en su arrendamiento de SharePoint Online y determinar su membresía para fines de solución de problemas o auditoría. Afortunadamente, esta tarea se puede realizar fácilmente utilizando PowerShell. Esta publicación de blog le mostrará cómo usar PowerShell para buscar todos los grupos de AD en su arrendamiento de SharePoint Online.

Aquí está el PowerShell para obtener todos los grupos de dominio del directorio activo de la colección de sitios de SharePoint Online:


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
   
#Set Variables for Site URL
$SiteURL= "https://crescent.sharepoint.com/sites/marketing/"
$ADGroupCollection= @()
 
#Setup Credentials to connect
$Cred = Get-Credential
 
Try {
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
 
    #Get all Users
    $Users=$Ctx.Web.SiteUsers
    $Ctx.Load($Users)
    $Ctx.ExecuteQuery()
 
    #Filter AD Groups from Users collection
    $ADGroups  = $Users | Where {$_.PrincipalType -eq "SecurityGroup"}

    #Get Each AD Group details
    Foreach($Group in $ADGroups)
    {
        #Get SharePoint Groups of the AD Group
        $Ctx.Load($Group.Groups)
        $Ctx.ExecuteQuery()
        $GroupNames = $Group.Groups | Select -ExpandProperty Title

        #Getting the members
        $ADGroup = new-object psobject
        $ADGroup | add-member noteproperty -name "AD Group Name" -value $Group.Title
        $ADGroup | add-member noteproperty -name "SP Group Membership" -value ($GroupNames -join "; ")
        #Add to Array
        $ADGroupCollection+=$ADGroup 
    }
    #Get the results
    $ADGroupCollection
}
Catch {
    write-host -f Red "Error getting AD Groups:" $_.Exception.Message
}

Obtenga grupos de AD en una colección de sitios mediante el Shell de administración de SharePoint Online:

Esta vez, recuperemos los grupos de seguridad de AD con la ayuda del shell de administración de SharePoint Online.


#Set Config Variables
$AdminCenterURL = "https://crescent-admin.sharepoint.com"
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$ADGroupCollection= @()

#Connect to SharePoint Online
Connect-SPOService -URL $AdminCenterURL

#Get All AD Security Groups from the site collection
$ADGroups = Get-SPOUser -Site $SiteUrl -Limit All | Where { $_.IsGroup -and $_.DisplayName -ne "Everyone" -and $_.DisplayName -ne "Everyone except external users" }
 
#Iterate through each AD Group
Foreach($Group in $ADGroups)
{
        #Send Data to an object array
        $ADGroup = new-object psobject
        $ADGroup | add-member noteproperty -name "Group Name" -value $Group.DisplayName
        $ADGroup | add-member noteproperty -name "SharePoint Groups" -value ($Group.Groups -join ",")
        #Add to Array
        $ADGroupCollection+=$ADGroup          
}
#Get the Data
$ADGroupCollection

Asegúrese de tener instalado el Shell de administración de SharePoint Online en su máquina cliente antes de ejecutar el script.

Exportar grupos de Active Directory de todas las colecciones de sitios mediante PowerShell:

Ahora, modifiquemos un poco el script anterior para extraer grupos de AD de todas las colecciones de sitios en el inquilino y exportarlos a un informe CSV.


#Set Config Variables
$AdminCenterURL = "https://crescent-admin.sharepoint.com"
$ADGroupCollection= @()
$ReportPath ="C:\Temp\ADGroups.csv"

#Connect to SharePoint Online
Connect-SPOService -URL $AdminCenterURL

#Get All Site Collections from the tenant
$Sites  = Get-SPOSite -Limit ALL

#Iterate through each site collection
ForEach($Site in $Sites)
{
    Write-host "Processing Site Collection:"$Site.URL -f Yellow

    #Get All AD Groups / Office 365 Groups from the site collection
    $ADGroups = Get-SPOUser -Site $Site.Url -Limit All | Where { $_.IsGroup -and $_.DisplayName -Notin ("Everyone","Everyone except external users", "Company Administrator", "SharePoint Service Administrator","All Users `(windows`)") }
 
    #Iterate through each AD Group
    Foreach($Group in $ADGroups)
    {
            #Send Data to an object array
            $ADGroup = new-object psobject
            $ADGroup | add-member noteproperty -name "Site Name" -value $Site.Title
            $ADGroup | add-member noteproperty -name "URL" -value $Site.URL
            $ADGroup | add-member noteproperty -name "Group Name" -value $Group.DisplayName
            $ADGroup | add-member noteproperty -name "SharePoint Groups" -value ($Group.Groups -join ",")
            #Add to Array
            $ADGroupCollection+=$ADGroup          
    }
}
#Export Data to CSV
$ADGroupCollection
$ADGroupCollection | export-csv $ReportPath -notypeinformation
Write-host "SharePoint Online Domain Groups data exported to a CSV file at:"$ReportPath -ForegroundColor Cyan

Asegúrese de tener permisos para todas las colecciones de sitios; de lo contrario, es posible que reciba: “Acceso denegado. No tiene permiso para realizar esta acción o acceder a este recurso”. ¡error!

¿Puedo buscar un grupo de AD específico en todos los sitios? Claro, simplemente cambie la línea n.° 18 a:


$ADGroups = Get-SPOUser -Site $Site.Url -Limit All | Where { $_.IsGroup -and $_.DisplayName -ne "Everyone" -and $_.DisplayName -ne "Everyone except external users" -and $_.DisplayName -like '*ADSecurityGroupName*' }

PnP PowerShell para buscar todos los grupos de Active Directory y grupos de Office 365 en SharePoint Online

Aquí está la versión del script PnP PowerShell para extraer todos los grupos de AD, incluidos los grupos de Office 365 en sitios de SharePoint Online.


#Parameters
$AdminCenterUrl = "https://Crescent-admin.sharepoint.com"
$CSVPath = 'c:\Temp\ADGroupsInSPO.csv'

#Connect to SharePoint admin center
Connect-PnPOnline -Url $AdminCenterUrl -Interactive

#Get all SharePoint sites
$Sites = Get-PnPTenantSite
$Report = @()

#Loop through each site
ForEach ($Site in $Sites)
{
    Try {
        Write-host "Processing Site:"$Site.URL -f Yellow
        Connect-PnPOnline -Url $Site.Url -Interactive
        $ADGroups = Get-PnPUser | Where { $_.PrincipalType -eq "SecurityGroup" -and $_.Title -Notin ("Everyone","Everyone except external users", "Company Administrator", "SharePoint Service Administrator","All Users `(windows`)") }

        ForEach ($Group in $ADGroups)
        {
            $Report += New-Object Pscustomobject -Property @{
            SiteURL = $Site.URL
            GroupName = $Group.Title
            LoginName = $Group.LoginName
            GroupEmail = $Group.Email
            }
        }        
    }
    Catch {
        continue;
   }
}

$Report
 
#Generate a CSV file from the data
$Report | Export-Csv $CSVPath -NoTypeInformation

En resumen, al utilizar scripts de PowerShell, los administradores pueden encontrar todos los grupos de seguridad de Active Directory asociados con una colección de sitios de SharePoint Online. Esta información se puede utilizar con fines de auditoría, para revocar el acceso de un grupo de usuarios o para otras tareas administrativas. Encontrar todos los grupos de seguridad de Active Directory en una colección de sitios de SharePoint Online es una herramienta esencial para los administradores que desean mantener la seguridad y la integridad de su entorno de SharePoint.

Artículos relacionados