网站搜索

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 禁用所有网站的访问请求

相关文章