PowerShell kullanarak SharePoint'teki Tüm Sitelerde Özelliği Etkinleştirin


Bazı senaryolarda, SharePoint'teki tüm siteler veya site koleksiyonları için bir özelliği etkinleştirmeniz gerekebilir. Benim durumumda, bir SharePoint web uygulamasındaki tüm site koleksiyonu için tarayıcı tabanlı düzenlemeyi devre dışı bırakmak için SharePoint'in "İstemcide Aç" özelliğini etkinleştirmem gerekiyordu. Bu blog gönderisi, bir özelliği tüm SharePoint sitelerinde aynı anda etkinleştirmek için PowerShell'i nasıl kullanacağınızı gösterecektir. Bir özelliği tüm çiftliğinizde etkinleştirmek istiyorsanız bu çok kullanışlı bir numaradır.

SharePoint'te Bir Özellik Nasıl Etkinleştirilir?

SharePoint web kullanıcı arayüzünden bir site koleksiyonu özelliğini etkinleştirmek için Site ayarları >> Site Koleksiyonu Özellikleri >> seçeneğine giderek ilgili özelliğin yanındaki "Etkinleştir" seçeneğine tıklayın.

Kullanıcı arayüzü üzerinden yeterince kolay, değil mi? Peki, web uygulamasındaki onlarca site koleksiyonu için aynı şeyi yapmanız gerekiyorsa PowerShell mükemmel bir çözümdür.

SharePoint'teki tüm site koleksiyonları için özelliği etkinleştirin


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Configuration Parameters
$WebAppURL="https://portal.crescent.com/"
$FeatureName="OpenInClient" #Feature Folder Name

#Get all site collections of the web app and iterate through
$SiteColl= Get-SPSite -WebApplication $WebAppURL -Limit ALL
Foreach($Site in $SiteColl)
{ 
 #Get the Feature ID from Feature Name
    $Feature = Get-SPFeature -Site $Site.Url | Where {$_.DisplayName -eq $FeatureName}
 
 #If Feature Found
 if($Feature -ne $null)
    {
       #Check if the Feature is activated already
       if (Get-SPFeature -Site $Site.Url | Where {$_.ID -eq $Feature.Id})
       {
         Write-Host $FeatureName "is already activated at " $Site.Url -f Yellow
        }
       else
       {
       #Activate the Feature
       Enable-SPFeature -identity $Feature.ID -URL $Site.URL
       Write-Host "Feature Activated on "$site.URL -f Green   
  }
 }
 else
 {
      Write-Host "Feature Name doesn't exist:"$FeatureName -f Red
 } 
}

Bu PowerShell betiği, özelliği tüm site koleksiyonlarında etkinleştirir.

Bu tek satırı, tüm site koleksiyonlarında bir özelliği etkinleştirmek için de kullanabilirsiniz: (Ancak hata işleme yok!)


Get-SPSite -Limit All | foreach {Enable-SPFeature "0561d315-d5db-4736-929e-26da142812c5" -url $_.URL } 

SharePoint: tüm sitelerde bir özelliği etkinleştirme

Oldukça yaygın olan bir site koleksiyonu altındaki 100'lerce sitede site düzeyinde (web) bir özelliği etkinleştirmeniz gereken bir senaryo düşünün. Benim durumumda, Nintex Workflow 2013 özelliğini belirli bir site koleksiyonundaki tüm alt sitelerde etkinleştirmek zorunda kaldım.


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Configuration Parameters
$SiteCollURL="https://portal.crescent.com/"
$FeatureID="0561d315-d5db-4736-929e-26da142812c5" 

#Get the Feature
$Feature = Get-SPFeature | Where {$_.ID -eq $FeatureID}

#If Feature Found
if($Feature -ne $null)
{     
    #Get all sites under the collection and loop through
    $Site= Get-SPSite $SiteCollURL
    Foreach($Web in $Site.AllWebs)
    {
  #Check if the Feature is activated already
       if (Get-SPFeature -Web $web.Url | Where {$_.ID -eq $FeatureId})
       {
         Write-Host $FeatureID "is already activated at " $Web.Url -f "Blue"
        }
       else
       {
           #Activate the Feature
           Enable-SPFeature -identity $FeatureID -URL $Web.URL
           Write-Host "Feature has been Activated on "$Web.URL -f "Green"
       }
    }
}
else    
{
    Write-Host "Feature doesn't exist:"$FeatureID -f "Red"
}

Bu komut dosyası, SharePoint'teki tüm siteler için özelliği etkinleştirir.

İlgili makaleler