Búsqueda de sitios web

Encuentre todas las funciones inactivas en SharePoint con PowerShell


¿Qué es una característica inactiva en SharePoint? Bueno, ¡funciones que están instaladas pero no activadas en ninguna parte!

Aquí está el script de PowerShell para buscar funciones inactivas para SharePoint:


Add-PSSnapin "Microsoft.SharePoint.Powershell" -ErrorAction SilentlyContinue

$InactiveFeatures = @()

#Get All installed features on respective scopes
$WebAppFeatures =  Get-SPFeature | Where-Object {$_.Scope -eq "WebApplication" }
$siteFeatures = Get-SPFeature | Where-Object {$_.Scope -eq "Site" } 
$WebFeatures = Get-SPFeature| Where-Object {$_.Scope -eq "Web" }

Write-host "Checking Web Application Scoped Features..."
foreach ($WebAppFeature in $WebAppFeatures)
{
       $Flag = $False
       foreach ($WebApp in Get-SPWebApplication)
       {
         if ((Get-SPFeature -WebApplication $WebApp.URL | Where-Object {$_.Id -eq $WebAppFeature.id}) -ne $null)
         {
            #We found that the Feature is active, Lets end up the loop
            $Flag = $True
            break 
         }
      }
  if($Flag -eq $False)
  {
     Write-Host "$($WebFeature.DisplayName) is not Active on any Web Application!)"
  }   
}

   Write-Host "`nChecking Site Collection Scoped Features..."
   foreach ($SiteFeature in $SiteFeatures)
   {
       $Flag = $False
       :WebAppLoop1 foreach ($WebApp in Get-SPWebApplication)
      {
      foreach($site in $WebApp.Sites)
      {
          if ((Get-SPFeature -Site $Site.URL | Where-Object {$_.Id -eq $SiteFeature.id}) -ne $null)
          {
            #We found that the Feature is active, Lets end up the loop
            $Flag = $True
            break WebAppLoop1 
          }
      }
  }
   if($Flag -eq $False)
   {
      Write-Host "$($SiteFeature.DisplayName) is not Active on Any Site Collection!"
   }   
}

 Write-host "`nChecking Web Scoped Feature..."
   foreach ($WebFeature in $WebFeatures)
   {
       $Flag = $False
    #I'm limiting to a single web application, Remove ""https://sharepoint.crescent.com" to process all WebApps
       :WebAppLoop2 foreach ($WebApp in Get-SPWebApplication "https://sharepoint.crescent.com")
       {
         foreach($Site in $WebApp.Sites)
         {
           foreach($Web in $Site.AllWebs)
           {
            if ((Get-SPFeature -Web $Web.URL | Where-Object {$_.Id -eq $WebFeature.id}) -ne $null)
            {
              #We found that the Feature is active, Lets end up the loop
              $Flag = $True
              break WebAppLoop2 
            }
          }
       }
     }
   if($Flag -eq $False)
   {
     Write-Host "$($WebFeature.DisplayName) is not Active on Any Web!"
   }   
 }

Tenga en cuenta: Podría haber muchas funciones OOTB que permanezcan inactivas según la plantilla de sitio que utilicemos. Por lo tanto, utilice este script para obtener información sobre las funciones personalizadas implementadas en los entornos SharePoint 2013/SharePoint 2010.

Para obtener un informe sobre las funciones activadas en varios ámbitos, consulte: Informe de uso de funciones de SharePoint mediante PowerShell

Artículos relacionados