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

