ค้นหาเว็บไซต์

SharePoint Online: ค้นหากลุ่มความปลอดภัยของ Active Directory ทั้งหมดในไซต์คอลเลกชัน


ข้อกำหนด: รับกลุ่มความปลอดภัยของ AD ทั้งหมดในไซต์ SharePoint Online

PowerShell เพื่อค้นหากลุ่มโฆษณาทั้งหมดใน SharePoint Online:

ในหลายองค์กร กลุ่ม Active Directory ใช้เพื่อจัดการการเข้าถึงและสิทธิ์สำหรับไซต์และเนื้อหา SharePoint Online บ่อยครั้งที่มีการสร้างกลุ่มใหม่ตามความจำเป็น และกลุ่มเก่าอาจไม่ได้ใช้หรือถูกลืมไปเลย ดังนั้น คุณอาจต้องการค้นหากลุ่มโฆษณาทั้งหมดในการเช่า SharePoint Online ของคุณ และพิจารณาความเป็นสมาชิกของกลุ่มเหล่านั้นเพื่อวัตถุประสงค์ในการแก้ไขปัญหาหรือการตรวจสอบ โชคดีที่งานนี้สามารถทำสำเร็จได้อย่างง่ายดายโดยใช้ PowerShell โพสต์ในบล็อกนี้จะแสดงวิธีใช้ PowerShell เพื่อค้นหากลุ่ม AD ทั้งหมดในผู้เช่า SharePoint Online ของคุณ

นี่คือ PowerShell เพื่อรับกลุ่มโดเมนไดเรกทอรีที่ใช้งานอยู่ทั้งหมดจากคอลเลกชันไซต์ 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
}

รับกลุ่มโฆษณาในไซต์คอลเลกชันโดยใช้ SharePoint Online Management Shell:

คราวนี้ เรามาเรียกข้อมูลกลุ่มความปลอดภัย AD ด้วยความช่วยเหลือของเชลล์การจัดการ 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

ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง SharePoint Online Management Shell ในเครื่องไคลเอนต์ของคุณก่อนที่จะรันสคริปต์

ส่งออกกลุ่ม Active Directory ของไซต์คอลเลกชันทั้งหมดโดยใช้ PowerShell:

ตอนนี้ มาปรับเปลี่ยนสคริปต์ด้านบนเล็กน้อยเพื่อแยกกลุ่ม AD จากคอลเลกชันไซต์ทั้งหมดในผู้เช่าและส่งออกไปยังรายงาน 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

ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ในไซต์คอลเลกชันทั้งหมด มิฉะนั้น คุณอาจได้รับ: “การเข้าถึงถูกปฏิเสธ คุณไม่ได้รับอนุญาตให้ดำเนินการนี้หรือเข้าถึงทรัพยากรนี้” ข้อผิดพลาด!

ฉันสามารถค้นหากลุ่มโฆษณาเฉพาะเจาะจงในทุกไซต์ได้หรือไม่ แน่นอน เพียงเปลี่ยนบรรทัด #18 เป็น:


$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 เพื่อค้นหากลุ่ม Active Directory และกลุ่ม Office 365 ทั้งหมดใน SharePoint Online

นี่คือเวอร์ชันสคริปต์ PnP PowerShell เพื่อแยกกลุ่มโฆษณาทั้งหมด รวมถึงกลุ่ม Office 365 ในไซต์ 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

โดยสรุป โดยใช้สคริปต์ PowerShell ผู้ดูแลระบบสามารถค้นหากลุ่มความปลอดภัย Active Directory ทั้งหมดที่เกี่ยวข้องกับคอลเลกชันไซต์ SharePoint Online ข้อมูลนี้สามารถใช้เพื่อวัตถุประสงค์ในการตรวจสอบ เพื่อเพิกถอนการเข้าถึงสำหรับกลุ่มผู้ใช้ หรือสำหรับงานด้านการดูแลระบบอื่นๆ การค้นหากลุ่มความปลอดภัย Active Directory ทั้งหมดในไซต์คอลเลกชัน SharePoint Online เป็นเครื่องมือที่จำเป็นสำหรับผู้ดูแลระบบที่ต้องการรักษาความปลอดภัยและความสมบูรณ์ของสภาพแวดล้อม SharePoint

บทความที่เกี่ยวข้อง