Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Em 2016, apresentamos uma experiência nova de "moderna" para o SharePoint, trazendo extensibilidade, acessibilidade e design responsivo para uma revisão completa da experiência do usuário. Desde então, moderna foi base para inovação em todo o SharePoint e no OneDrive, embora modo clássico permanece com suporte e está disponível. A maioria das listas e bibliotecas funcionam perfeitamente na experiência moderna, mas também há listas que não funcionam conforme o esperado ou não tem a funcionalidade quando usados em moderna. Com frequência isso ocorre devido a personalizações na lista (por exemplo, JSLink) ou a página do formulário da lista (por exemplo, várias web parts usadas). SharePoint detectará personalizações mais incompatíveis e mostrará listas e bibliotecas afetadas usando a experiência clássica, enquanto as listas e bibliotecas do site serão exibidas usando a experiência moderna. Se alternar entre as experiências clássicas e modernas não for aceitável, você tem a opção de exclusão das listas e bibliotecas da experiência moderna. Neste artigo, você aprenderá sobre as opções de exclusão disponíveis, como detectar listas e bibliotecas que podem se beneficiar da exclusão de moderna e por fim como lidar melhor com auto-exclusão.
Opções para desativar essa listas e bibliotecas da experiência moderna
Desativar no nível do conjunto de sites
Você pode desativar um conjunto de sites que usa a experiência de "moderna" habilitando o recurso com a ID E3540C7D-6BEA-403C-A224-1A12EAFEE4C4. Usar o seguinte PowerShell PnP para ativar/desativar o recurso necessário:
# Connect to a site
$cred = Get-Credential
Connect-PnPOnline -Url https://[tenant].sharepoint.com/sites/siteurl -Credentials $cred
# Opt out from modern lists and libraries at site collection level
Enable-PnPFeature -Identity E3540C7D-6BEA-403C-A224-1A12EAFEE4C4 -Scope Site
# And again enable modern lists and libraries at site collection level
#Disable-PnPFeature -Identity E3540C7D-6BEA-403C-A224-1A12EAFEE4C4 -Scope Site
Desativar no nível da web
Você pode desativar web de usar a experiência de "moderna" habilitando o recurso com ID 52E14B6F-B1BB-4969-B89B-C4FAA56745EF. Usar o seguinte PowerShell PnP para ativar/desativar o recurso necessário:
# Connect to a site
$cred = Get-Credential
Connect-PnPOnline -Url https://[tenant].sharepoint.com/sites/siteurl -Credentials $cred
# Opt out from modern lists and libraries at web level
Enable-PnPFeature -Identity 52E14B6F-B1BB-4969-B89B-C4FAA56745EF -Scope Web
# And again enable modern lists and libraries at web level
#Disable-PnPFeature -Identity 52E14B6F-B1BB-4969-B89B-C4FAA56745EF -Scope Web
Observação
O PnP PowerShell é uma solução de software livre com uma comunidade ativa de suporte. Não há nenhuma SLA para o suporte da ferramenta de software livre por parte da Microsoft.
Desativar nível de lista
Para controlar a experiência no nível de biblioteca, vá até Configurações da lista>Configurações avançadas e altere o comportamento.

O mesmo também pode ser feito usando PowerShell PnP conforme mostrado nesse trecho:
# Connect to a site
$cred = Get-Credential
Connect-PnPOnline -Url https://[tenant].sharepoint.com/sites/siteurl -Credentials $cred
# Get the list to update
$list = Get-PnPList -Identity "Shared Documents" -Includes ListExperienceOptions
# Set the list experience (0 = Auto, 1 = modern, 2 = classic)
$list.ListExperienceOptions = 2
$list.Update()
Invoke-PnPQuery
Observação
- As configurações no nível de biblioteca substituir as configurações no nível do conjunto de site ou da web.
A detecção de listas e bibliotecas que são candidatas por serem excluídas da experiência moderna
Desativar a experiência de moderna só é necessário em determinados casos, conforme descrito na introdução deste artigo. O capítulo anterior mostra como realizar uma exclusão, mas como saber quais listas e bibliotecas são candidatas a serem desativadas da experiência moderna?
As scanner do SharePoint modernização lhe dará as respostas necessárias: se você executar o verificador na "Verificação completa" ou no modo de "preparação de experiência de lista moderna" a scanner coletará todos os dados sobre suas listas. Ao usar o relatório de Excel criado preparação de lista de Moderna UI você pode encontrar listas com personalizações, conforme explicado no artigo Analisar e usar os dados do scanner.
As listas encontradas já serão apresentadas como clássico devido ao mecanismo de emergência clássico do SharePoint. Se, no entanto, você quiser oferecer uma experiência de usuário clássica completa, talvez você queira desativar o conjunto de sites das listas e bibliotecas modernas. Para facilitar, o scanner gera um arquivo CSV chamado SitesWithCustomizations.csv listando todos os conjuntos de sites que contém uma ou mais listas que podem ser desativadas.
Este arquivo CSV é uma lista simples de conjunto de sites da URL sem um cabeçalho, conforme mostrado no exemplo abaixo:
"https://contoso.sharepoint.com/sites/siteA"
"https://contoso.sharepoint.com/sites/siteB"
"https://contoso.sharepoint.com/sites/siteC"
Como lidar melhor com a exclusão de conjunto de sites selecionado
Você pode usar as opções descritas anteriormente para desativar um conjunto de sites, da web ou lista de modernas listas e bibliotecas. Se você tiver usado o scanner para gerar uma lista de conjuntos de sites que são candidatos que desativaram de moderna, você pode então usar abaixo script do PowerShell PnP para executar uma exclusão "em massa".
<#
.SYNOPSIS
Enables or disables the modern list and library experience at site collection level. The script can handle a single site collection or a list of site collections provided via a CSV file.
To get the CSV file you can run the Modernization Scanner, version 2.3 or higher, and use the "Lists and Library" mode (see https://aka.ms/sppnp-modernizationscanner) or alternatively
create the file yourselves:
"https://contoso.sharepoint.com/sites/siteA"
"https://contoso.sharepoint.com/sites/siteB"
"https://contoso.sharepoint.com/sites/siteC"
.EXAMPLE
PS C:\> .\SetModernListUsage.ps1
#>
#region Logging and generic functions
function LogWrite
{
param([string] $log , [string] $ForegroundColor)
$global:strmWrtLog.writeLine($log)
if([string]::IsNullOrEmpty($ForegroundColor))
{
Write-Host $log
}
else
{
Write-Host $log -ForegroundColor $ForegroundColor
}
}
function LogError
{
param([string] $log)
$global:strmWrtError.writeLine($log)
}
function UsageLog
{
try
{
$cc = Get-PnPContext
$cc.Load($cc.Web)
$cc.ClientTag = "SPDev:ModernListUsage"
$cc.ExecuteQuery()
}
catch [Exception] { }
}
#endregion
function SiteCollectionUsesModernLists
{
param([string] $siteCollectionUrl,
[Boolean] $useModern,
$credentials,
$tenantContext,
[string] $adminUPN)
#region Ensure access to the site collection, if needed promote the calling account to site collection admin
# Check if we can access the site...if not let's 'promote' ourselves as site admin
$adminClaim = "i:0#.f|membership|$adminUPN"
$adminWasAdded = $false
$siteContext = $null
$siteCollectionUrl = $siteCollectionUrl.TrimEnd("/");
Try
{
LogWrite "User running script: $adminUPN"
LogWrite "Connecting to site $siteCollectionUrl"
$siteContext = Connect-PnPOnline -Url $siteCollectionUrl -Credentials $credentials -Verbose -ReturnConnection
}
Catch [Exception]
{
# If Access Denied then use tenant API to add current tenant admin user as site collection admin to the current site
if ($_.Exception.Response.StatusCode -eq "Unauthorized")
{
LogWrite "Temporarily adding user $adminUPN as site collection admin"
Set-PnPTenantSite -Url $siteCollectionUrl -Owners @($adminUPN) -Connection $tenantContext
$adminWasAdded = $true
LogWrite "Second attempt to connect to site $siteCollectionUrl"
$siteContext = Connect-PnPOnline -Url $siteCollectionUrl -Credentials $credentials -Verbose -ReturnConnection
}
else
{
$ErrorMessage = $_.Exception.Message
LogWrite "Error for site $siteCollectionUrl : $ErrorMessage" Red
LogError $ErrorMessage
return
}
}
#endregion
Try
{
#region Adding admin
# Check if current tenant admin is part of the site collection admins, if not add the account
$siteAdmins = $null
if ($adminWasAdded -eq $false)
{
try
{
# Eat exceptions here...resulting $siteAdmins variable will be empty which will trigger the needed actions
$siteAdmins = Get-PnPSiteCollectionAdmin -Connection $siteContext -ErrorAction Ignore
}
catch [Exception] { }
$adminNeedToBeAdded = $true
foreach($admin in $siteAdmins)
{
if ($admin.LoginName -eq $adminClaim)
{
$adminNeedToBeAdded = $false
break
}
}
if ($adminNeedToBeAdded)
{
LogWrite "Temporarily adding user $adminUPN as site collection admin"
Set-PnPTenantSite -Url $siteCollectionUrl -Owners @($adminUPN) -Connection $tenantContext
$adminWasAdded = $true
}
}
UsageLog
#endregion
#region Enable/disable the modern list experience at site collection level
if ($useModern)
{
LogWrite "Disabling the modern list blocking feature"
Disable-PnPFeature -Identity "E3540C7D-6BEA-403C-A224-1A12EAFEE4C4" -Scope Site -Force -Connection $siteContext
}
else
{
LogWrite "Enabling the modern list blocking feature"
Enable-PnPFeature -Identity "E3540C7D-6BEA-403C-A224-1A12EAFEE4C4" -Scope Site -Force -Connection $siteContext
}
#endregion
#region Cleanup updated permissions
LogWrite "Configuration is done, let's cleanup the configured permissions"
# Remove the added site collection admin - obviously this needs to be the final step in the script :-)
if ($adminWasAdded)
{
LogWrite "Remove $adminUPN from site collection administrators"
Remove-PnPSiteCollectionAdmin -Owners @($adminUPN) -Connection $siteContext
}
#endregion
LogWrite "Configuration done for site collection $siteCollectionUrl" Green
# Disconnect PnP Powershell from site
Disconnect-PnPOnline
}
Catch [Exception]
{
$ErrorMessage = $_.Exception.Message
LogWrite "Error: $ErrorMessage" Red
LogError $ErrorMessage
#region Cleanup updated permissions on error
# Configuration did not complete...remove the added tenant admin to restore site permissions as final step in the cleanup
if ($adminWasAdded)
{
try
{
# Final step, remove the added site collection admin
Remove-PnPSiteCollectionAdmin -Owners @($adminUPN) -Connection $siteContext
}
catch [Exception] { }
}
#endregion
LogWrite "Configuration failed for site collection $siteCollectionUrl" Red
}
}
#######################################################
# MAIN section #
#######################################################
# OVERRIDES
# If you want to automate the run and make the script ask less questions, feel free to hardcode these 2 values below. Otherwise they'll be asked from the user or parsed from the values they input
# Tenant admin url
$tenantAdminUrl = "" # e.g. "https://contoso-admin.sharepoint.com"
# If you use credential manager then specify the used credential manager entry, if left blank you'll be asked for a user/pwd
$credentialManagerCredentialToUse = ""
#region Setup Logging
$date = Get-Date
$logfile = ((Get-Item -Path ".\" -Verbose).FullName + "\ModernListUsage_log_" + $date.ToFileTime() + ".txt")
$global:strmWrtLog=[System.IO.StreamWriter]$logfile
$global:Errorfile = ((Get-Item -Path ".\" -Verbose).FullName + "\ModernListUsage_error_" + $date.ToFileTime() + ".txt")
$global:strmWrtError=[System.IO.StreamWriter]$Errorfile
#endregion
#region Load needed PowerShell modules
# Ensure PnP PowerShell is loaded
$minimumVersion = New-Object System.Version("3.4.1812.2")
if (-not (Get-InstalledModule -Name SharePointPnPPowerShellOnline -MinimumVersion $minimumVersion -ErrorAction Ignore))
{
Install-Module SharePointPnPPowerShellOnline -MinimumVersion $minimumVersion -Scope CurrentUser
}
Import-Module SharePointPnPPowerShellOnline -DisableNameChecking -MinimumVersion $minimumVersion
#endregion
#region Gather set modern list usage run input
# Url of the site collection to remediate
$siteCollectionUrlToConfigure = ""
$enableModern = $false
# Get the input information
$siteURLFile = Read-Host -Prompt "Input either single site collection URL (e.g. https://contoso.sharepoint.com/sites/teamsite1) or name of .CSV file (e.g. SitesWithCustomizations.csv) ?"
if (-not $siteURLFile.EndsWith(".csv"))
{
$siteCollectionUrlToConfigure = $siteURLFile
}
# If we are using a CSV, we'll need to get the tenant admin url from the user or use the hardcoded one
else
{
if ($tenantAdminUrl -eq $null -or $tenantAdminUrl.Length -le 0)
{
$tenantAdminUrl = Read-Host -Prompt "Input the tenant admin site URL (like https://contoso-admin.sharepoint.com)"
}
}
$enableModernString = Read-Host -Prompt "Do you want to enable modern lists and libraries for this site collection? Enter True for yes, False otherwise"
try
{
$enableModern = [System.Convert]::ToBoolean($enableModernString)
}
catch [FormatException]
{
$enableModern = $false
}
# We'll parse the tenantAdminUrl from site url (unless it's set already!)
if ($tenantAdminUrl -eq $null -or $tenantAdminUrl.Length -le 0)
{
if ($siteURLFile.IndexOf("/teams") -gt 0)
{
$tenantAdminUrl = $siteURLFile.Substring(0, $siteURLFile.IndexOf("/teams")).Replace(".sharepoint.", "-admin.sharepoint.")
}
else
{
$tenantAdminUrl = $siteURLFile.Substring(0, $siteURLFile.IndexOf("/sites")).Replace(".sharepoint.", "-admin.sharepoint.")
}
}
# Get the tenant admin credentials.
$credentials = $null
$adminUPN = $null
if(![String]::IsNullOrEmpty($credentialManagerCredentialToUse) -and (Get-PnPStoredCredential -Name $credentialManagerCredentialToUse) -ne $null)
{
$adminUPN = (Get-PnPStoredCredential -Name $credentialManagerCredentialToUse).UserName
$credentials = $credentialManagerCredentialToUse
}
else
{
# Prompts for credentials, if not found in the Windows Credential Manager.
$adminUPN = Read-Host -Prompt "Please enter admin UPN (e.g. admin@contoso.onmicrosoft.com)"
$pass = Read-host -AsSecureString "Please enter admin password"
$credentials = new-object management.automation.pscredential $adminUPN,$pass
}
if($credentials -eq $null)
{
Write-Host "Error: No credentials supplied." -ForegroundColor Red
exit 1
}
#endregion
#region Connect to SharePoint
# Get a tenant admin connection, will be reused in the remainder of the script
LogWrite "Connect to tenant admin site $tenantAdminUrl"
$tenantContext = Connect-PnPOnline -Url $tenantAdminUrl -Credentials $credentials -Verbose -ReturnConnection
#endregion
#region Configure the site(s)
if (-not $siteURLFile.EndsWith(".csv"))
{
# Remediate the given site collection
SiteCollectionUsesModernLists $siteCollectionUrlToConfigure $enableModern $credentials $tenantContext $adminUPN
}
else
{
$csvRows = Import-Csv $siteURLFile -Header SiteCollectionUrl
foreach($row in $csvRows)
{
if($row.SiteCollectionUrl -ne "")
{
$siteUrl = $row.SiteCollectionUrl
SiteCollectionUsesModernLists $siteUrl $enableModern $credentials $tenantContext $adminUPN
}
}
}
#endregion
#region Close log files
if ($global:strmWrtLog -ne $NULL)
{
$global:strmWrtLog.Close()
$global:strmWrtLog.Dispose()
}
if ($global:strmWrtError -ne $NULL)
{
$global:strmWrtError.Close()
$global:strmWrtError.Dispose()
}
#endregion