SharePoint Online:使用 PowerShell 导出访问请求设置
要求:导出 SharePoint Online 中所有网站的访问请求设置。
SharePoint Online:PowerShell 用于导出访问请求设置(电子邮件地址、组配置)
要从 SharePoint Online 租户中的所有网站导出访问请求设置,请使用以下 PowerShell:
#Parameter
$TenantAdminURL = "https://crescent-Admin.SharePoint.com"
$CSVPath = "C:\Temp\AcccessRequestData.csv"
$AccessRequestData= @()
#Function to Get access request Configuration for a SharePoint Online site
Function Get-PnPAccessRequestConfig
{
[cmdletbinding()]
Param(
[parameter(Mandatory = $true, ValueFromPipeline = $True)] $Web
)
Try {
Write-host -f Yellow "Getting Access Request Settings on:"$web.Url
If($Web.HasUniqueRoleAssignments)
{
#Get Access Requests Configuration
If($Web.RequestAccessEmail -ne [string]::Empty)
{
#Get Access Request Email
$AccessRequest = "Enabled"
$EmailOrGroup = "Email"
$AccessRequestConfig = $Web.RequestAccessEmail
Write-host -f Green "`tAccess Requests is '$AccessRequest', Set to '$EmailOrGroup' as '$AccessRequestConfig'!"
}
Elseif($Web.UseAccessRequestDefault -eq $true)
{
#Get Associated Owners Group
$AccessRequest = "Enabled"
$EmailOrGroup = "Default Owner Group"
#Get the Default Owners Group of the site
$OwnersGroup = Get-PnPGroup -AssociatedOwnerGroup
$AccessRequestConfig = $OwnersGroup.Title
Write-host -f Green "`tAccess Requests is '$AccessRequest', Set to '$EmailOrGroup' as '$AccessRequestConfig'!"
}
Else
{
#Access Request is Disabled!
$AccessRequest = "Disabled"
$EmailOrGroup = [string]::Empty
$AccessRequestConfig = [string]::Empty
Write-host -f Green "`tAccess Requests is $AccessRequest!"
}
}
Else
{
$AccessRequest = "Inherits from Parent"
$EmailOrGroup = [string]::Empty
$AccessRequestConfig = [string]::Empty
Write-host -f Yellow "`tWeb inherits permissions from the parent!"$web.Url
}
#Collect Data
$AccessRequestData+= New-Object PSObject -Property ([ordered]@{
WebURL = $Web.URL
AccessRequest = $AccessRequest
EmailOrGroup = $EmailOrGroup
AccessRequestConfig = $AccessRequestConfig
})
#Export Data to CSV
$AccessRequestData | Export-Csv -Path $CSVPath -NoTypeInformation -append
}
Catch {
write-host "`tError Getting Access Requests: $($_.Exception.Message)" -foregroundcolor Red
}
}
#Connect to Admin Center
$Cred = Get-Credential
Connect-PnPOnline -Url $TenantAdminURL -Credentials $Cred
If(Test-Path $CSVPath) { Remove-Item $CSVPath }
#Get All Site collections - Exclude: Seach Center, Mysite Host, App Catalog, Content Type Hub, eDiscovery and Bot Sites
$SitesCollections = Get-PnPTenantSite | Where -Property Template -NotIn ("SRCHCEN#0", "REDIRECTSITE#0","SPSMSITEHOST#0", "APPCATALOG#0", "POINTPUBLISHINGHUB#0", "EDISC#0", "STS#-1")
#Loop through each site collection
ForEach($Site in $SitesCollections)
{
#Connect to site collection
Connect-PnPOnline -Url $Site.Url -Credentials $Cred
#Call the Function for Root Web and all Subwebs
Get-PnPSubWeb -IncludeRootWeb -Recurse -Includes HasUniqueRoleAssignments, RequestAccessEmail, UseAccessRequestDefault | ForEach-Object { Get-PnPAccessRequestConfig $_ }
}
此 PowerShell 脚本获取所有访问请求设置的清单并将其导出到 CSV 文件。
相关文章:
- SharePoint Online:配置所有网站的访问请求设置
- SharePoint Online:使用 PowerShell 禁用所有网站的访问请求
