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

SharePoint Online: ค้นหาผู้ใช้ภายนอกทั้งหมดโดยใช้ PowerShell


ข้อกำหนด: SharePoint Online แสดงรายการผู้ใช้ภายนอกโดยใช้ PowerShell

ผู้ใช้ภายนอกองค์กรสามารถได้รับเชิญให้ทำงานร่วมกับ SharePoint Online ในฐานะ "ผู้ใช้ภายนอก" ดังที่ Microsoft พูดว่า:

“ผู้ใช้ภายนอกคือบุคคลภายนอกองค์กรของคุณที่สามารถเข้าถึงไซต์และเอกสาร SharePoint Online ของคุณได้ แต่ไม่มีใบอนุญาตสำหรับการสมัครใช้งาน SharePoint Online หรือ Microsoft Office 365 ของคุณ ผู้ใช้ภายนอกไม่ใช่พนักงาน ผู้รับเหมา หรือตัวแทนนอกสถานที่สำหรับคุณหรือบริษัทในเครือของคุณ

SharePoint Online: วิธีรับผู้ใช้ภายนอก

ในฐานะที่เป็นส่วนหนึ่งของนโยบายการกำกับดูแล เราต้องการควบคุมการแบ่งปันภายนอก ดังนั้นฉันจึงต้องดูว่ามีการเพิ่มผู้ใช้ภายนอกจำนวนเท่าใดใน SharePoint Online และที่ใด Get-SPOExternalUser cmdlet แสดงรายการผู้ใช้ภายนอกทั้งหมดในผู้เช่า Office 365 ของเรา เพื่อให้ผู้ใช้ภายนอกแสดงรายการโดยใช้ PowerShell cmdlet นี้ พวกเขาจะต้องยอมรับคำเชิญเข้าสู่สภาพแวดล้อม SharePoint Online และเข้าสู่ระบบอย่างน้อยหนึ่งครั้ง

ค้นหาผู้ใช้ภายนอกใน SharePoint Online:

ฉันจะแสดงรายการผู้ใช้ภายนอกที่เข้าถึงไซต์ SharePoint Online ของฉันได้อย่างไร เมื่อต้องการดูผู้ใช้ภายนอกใน SharePoint Online มีหน้าในศูนย์การจัดการ Office 365 เวอร์ชันเก่า: การแชร์ภายนอก >> ผู้ใช้ภายนอก แต่หน้านี้เลิกใช้แล้ว ดังนั้นเราจึงเหลือ PowerShell! เปิด SharePoint Online Management Shell และเรียกใช้สคริปต์ด้านล่างเพื่อดูผู้ใช้ภายนอก SharePoint Online:


#Connect to SharePoint Online Tenant Admin
$AdminSiteURL="https://crescent-admin.sharepoint.com"

$Cred = Get-Credential
Connect-SPOService -URL $AdminSiteURL -Credential $Cred

#sharepoint online list external users powershell
Get-SPOExternalUser | Select DisplayName,Email,AcceptedAs,WhenCreated | Format-Table

แต่เดี๋ยวก่อน! Get-SPOExternalUser cmdlet มีข้อจำกัดในการส่งคืนผู้ใช้ 50 คนแรกเท่านั้น! ดังนั้นเราจึงจำเป็นต้องแก้ไขสคริปต์เล็กน้อยเพื่อรับผู้ใช้ภายนอกทั้งหมดใน SharePoint Online


Try {
    For ($x=0;;$x+=50) {
        $ExternalUsers += Get-SPOExternalUser -PageSize 50 -Position $x -ErrorAction Stop
    }
}
Catch {}
$ExternalUsers

ซึ่งจะดึงข้อมูลผู้ใช้ภายนอกทั้งหมดของผู้เช่า SharePoint Online

รับผู้ใช้ภายนอกของไซต์คอลเลกชันเฉพาะ:

หากคุณต้องการค้นหาผู้ใช้ภายนอกของไซต์ SharePoint Online ของคุณ ให้ระบุพารามิเตอร์ “SiteUrl” เช่น.,


Get-SPOExternalUser -Position 0 -PageSize 50 -SiteUrl <Your-Site-Url>

สิ่งนี้ทำให้ผู้ใช้ภายนอกบนไซต์คอลเลกชัน SharePoint ที่เฉพาะเจาะจง

PnP PowerShell เพื่อรับผู้ใช้ภายนอกทั้งหมดบนเว็บไซต์

เราสามารถรับรายชื่อผู้ใช้ภายนอกจากไซต์ SharePoint Online โดยใช้ PnP PowerShell cmdlet Get-PnPExternalUser


$SiteURL = "https://crescent.SharePoint.com/sites/retail"

#Connect to Site
Connect-PnPOnline -Url $SiteURL -Interactive

$ExternalUsers = @()
#Get All External users
Try {
    For ($x=0;;$x+=50) 
    {
            $ExternalUsers += Get-PnPExternalUser -SiteUrl $SiteUrl -Position $x -PageSize 50 -ErrorAction Stop | Select DisplayName,EMail,InvitedBy,AcceptedAs,WhenCreated
    }
}
catch {}

#Get All External users
$ExternalUsers

รับผู้ใช้ภายนอกทั้งหมดในไซต์ SharePoint Online และส่งออกเป็นรายงาน CSV

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


#Config Parameters
$AdminSiteURL="https://crescent-admin.sharepoint.com"
$SiteURL="https://crescent.sharepoint.com/sites/le"
$ReportOutput ="C:\Temp\ExternalUsersRpt.csv"
 
#Connect to SharePoint Online
Connect-SPOService -URL $AdminSiteURL
 
#Get the Site Collection
$Site  = Get-SPOSite -Identity $SiteURL

$ExternalUsers =@()
Write-host -f Yellow "Getting External users from Site Collection:"$Site.URL
Try {
    For ($x=0;;$x+=50) {
        $ExternalUsers += Get-SPOExternalUser -SiteUrl $Site.Url -Position $x -PageSize 50 -ErrorAction Stop | Select DisplayName,EMail,InvitedBy,AcceptedAs,WhenCreated
    }
}
catch {}
 
#Export the Data to CSV file
$ExternalUsers | Export-Csv -Path $ReportOutput -NoTypeInformation

สคริปต์ด้านบนรับผู้ใช้ภายนอกทั้งหมดจากไซต์ที่ระบุและส่งออกเป็น CSV

SharePoint Online ค้นหาผู้ใช้ภายนอกและส่งออกเป็น CSV:

คุณต้องวนซ้ำแต่ละคอลเลกชันเพื่อรับรายชื่อผู้ใช้ภายนอก สคริปต์ PowerShell ต่อไปนี้ช่วยให้คุณสามารถวนซ้ำแต่ละไซต์คอลเลกชันและกำหนดผู้ใช้ภายนอก มารวมทุกอย่างเข้าด้วยกันและส่งออกรายชื่อผู้ใช้ภายนอกเป็นไฟล์ CSV:


#Import SharePoint Online Management Shell
Import-Module Microsoft.Online.Sharepoint.PowerShell -DisableNameChecking

#Config Parameters
$AdminSiteURL="https://crescent-admin.sharepoint.com"
$ReportOutput ="C:\Temp\ExternalUsersRpt.csv"

#Get Credentials to connect
$Cred = Get-Credential

#Connect to SharePoint Online Tenant Admin
Connect-SPOService -URL $AdminSiteURL -Credential $Cred

#Get All Site Collections
$SiteCollections  = Get-SPOSite -Limit All

#Iterate through each site collection and get external users
Foreach ($Site in $SiteCollections)
{
    Write-host -f Yellow "Checking Site Collection:"$Site.URL
    Try {
        For ($x=0;;$x+=50) {
            $ExternalUsers += Get-SPOExternalUser -SiteUrl $Site.Url -Position $x -PageSize 50 -ErrorAction Stop | Select DisplayName,EMail,InvitedBy,AcceptedAs,WhenCreated,@{Name = "SiteUrl" ; Expression = {$Site.url} 
        }
    }
}
catch {}
}

#Export the Data to CSV file
$ExternalUsers | Export-Csv -Path $ReportOutput -NoTypeInformation

สิ่งนี้จะสร้างรายงานผู้ใช้ภายนอกของ SharePoint Online!

วิธีอื่นในการรับผู้ใช้ภายนอกทั้งหมด - ไซต์คอลเลกชันอย่างชาญฉลาด:

เมื่อเร็วๆ นี้ ฉันพบปัญหาบางอย่างใน Get-SPOExternalUser cmdlet ในบางกรณี ระบบจะไม่ส่งคืนผู้ใช้ภายนอกทั้งหมด ลองใช้ Get-SPOUser cmdlet เพื่อรับผู้ใช้ภายนอกตามไซต์คอลเลกชัน


#Import SharePoint Online Management Shell
Import-Module Microsoft.Online.Sharepoint.PowerShell -DisableNameChecking

#Config Parameters
$AdminSiteURL="https://crescent-admin.sharepoint.com"
$ReportOutput ="C:\Temp\ExternalUsersRpt.csv"

#Get Credentials to connect
$Cred = Get-Credential

#Connect to SharePoint Online Tenant Admin
Connect-SPOService -URL $AdminSiteURL -Credential $Cred

#Get all Site Collections
$SitesCollection = Get-SPOSite -Limit ALL

$ExternalUsers=@()
#Iterate through each site collection
ForEach($Site in $SitesCollection)
{
    Write-host -f Yellow "Checking Site Collection:"$Site.URL

    #Get All External users of the site collection
    $ExtUsers = Get-SPOUser -Limit All -Site $Site.URL | Where {$_.LoginName -like "*#ext#*" -or $_.LoginName -like "*urn:spo:guest*"}
    If($ExtUsers.count -gt 0)
    {
        Write-host -f Green "Found $($ExtUsers.count) External User(s)!"
        $ExternalUsers += $ExtUsers
    }
}

#Export the Data to CSV file
$ExternalUsers | Export-Csv -Path $ReportOutput -NoTypeInformation

เมื่อต้องการแสดงรายการผู้ใช้ภายนอกใน SharePoint Online คุณยังสามารถใช้สิ่งต่อไปนี้:


Get-SPOUser -Site $SiteURL -Limit All | Where-Object {$_.UserType -eq "Guest"}

สร้างรายงานผู้ใช้ภายนอกสำหรับคอลเลกชันไซต์ทั้งหมดในผู้เช่าโดยใช้ PnP PowerShell

มาค้นหาผู้ใช้ภายนอกทั้งหมดจากไซต์ SharePoint Online ทั้งหมดในผู้เช่าและส่งออกเป็นไฟล์ CSV


#Parameter
$Domain =  "crescentintranet" #Domain Name in SharePoint Online. E.g. https://Crescent.sharepoint.com
$CSVFile = "C:\Temp\ExternalSharing.csv"

#Frame Tenant URL and Tenant Admin URL
$TenantURL = "https://$Domain.SharePoint.com"
$TenantAdminURL = "https://$Domain-Admin.SharePoint.com"

#Delete the Output report file if exists 
If (Test-Path $CSVFile) { Remove-Item $CSVFile }

#Connect to Admin Center
Connect-PnPOnline -Url $TenantAdminURL -Interactive
   
#Get All Site collections with External sharing enabled - Filter BOT and MySite Host
$Sites = Get-PnPTenantSite -Filter "Url -like '$TenantURL'" | Where {$_.SharingCapability -ne "Disabled"}
  
#Iterate through all site collections
$Sites | ForEach-Object {
    Write-host "Getting External Users of Site:"$_.URL -f Yellow
    #Connect to each site collection
    Connect-PnPOnline -Url $_.URL -Interactive
    $ExternalUsersData = @()

    #Get all External Users of the site collection
    $ExternalUsers = Get-PnPUser | Where {$_.LoginName -like "*#ext#*" -or $_.LoginName -like "*urn:spo:guest*"}    
    Write-host "`tFound '$($ExternalUsers.count)' External users" -f Green
    
    #Collect Data
    ForEach($User in $ExternalUsers)
    { 
        $ExternalUsersData += New-Object PSObject -Property ([ordered]@{
            SiteName = $_.Title
            SiteURL  = $_.URL
            UserName = $User.Title
            Email = $User.Email
        })
    }

    #Export Documents Inventory to CSV
    $ExternalUsersData | Export-CSV $CSVFile -NoTypeInformation -Append
}

Write-host "External Users Report Generated Successfully!" -f Magenta

PowerShell เพื่อรับผู้ใช้ภายนอกจาก Azure AD

คราวนี้ เรามาค้นหา Azure AD โดยตรงสำหรับผู้ใช้ภายนอกทั้งหมดกัน! ผู้ใช้เหล่านี้อาจมีหรือไม่มีสิทธิ์ในการเข้าถึงไซต์ SharePoint Online ตามหมายเหตุด้านข้าง ต่อไปนี้เป็นวิธีรับบัญชีผู้เยี่ยมชมโดยใช้ PowerShell:


#Connect to AzureAD
Connect-AzureAD
 
#Get All External Users from AzureAD
$ExternalUsers = Get-AzureADUser -All:$True | Where {$_.UserType -eq "Guest"} 

Write-host "Total Number of External User Found:"$ExternalUsers.Count
$ExternalUsers | Select DisplayName, Mail

$CSVFile = "C:\temp\AzureExternalUsers.csv"
$ExternalUsers | Select DisplayName, Mail | Export-CSV $CSVFile -NoTypeInformation

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