The Powershell script below checks whether any given feature, in this case its the PublishingWeb Feature is activated or not for a particular Sub-Site.
Here I have shown 2 approaches: 1st one checks the Feature Folder Name and 2nd approach checks the FeatureID activated for that particular Sub-site. Choose the way best suitable in your case.
Add-PsSnapin Microsoft.SharePoint.PowerShell
## SharePoint DLL
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$featureFolderName = "PublishingWeb"
$subSiteURL = "http://sharepointfix/sites/home/USA"
#Approach 1 - Check using Feature Name
#Get Feature ID based on the Feature Name and ensure whether its already activated or not at the current sub-site scope
$FeatureID = Get-SPFeature -Web $subSiteURL | Where {$_.DisplayName -eq $featureFolderName}
if($FeatureID -ne $null)
{
#Approach 2 - Check using Feature ID
#Check whether Feature to be activated is already activated for this sub-site
if (Get-SPFeature -Web $subSiteURL | Where {$_.ID -eq $FeatureID.Id})
{
Write-Host $featureFolderName "is already activated at :" $subSiteURL
}
else
{
Enable-SPFeature -Identity $featureFolderName -Confirm:$false -Url $subSiteURL
Write-Host $featureFolderName "has been activated at :" $subSiteURL
}
}
else
{
Enable-SPFeature -Identity $featureFolderName -Confirm:$false -Url $subSiteURL
Write-Host $featureFolderName "has been activated at :" $subSiteURL
}
Remove-PsSnapin Microsoft.SharePoint.PowerShell
Echo Finish
Here I have shown 2 approaches: 1st one checks the Feature Folder Name and 2nd approach checks the FeatureID activated for that particular Sub-site. Choose the way best suitable in your case.
Add-PsSnapin Microsoft.SharePoint.PowerShell
## SharePoint DLL
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$featureFolderName = "PublishingWeb"
$subSiteURL = "http://sharepointfix/sites/home/USA"
#Approach 1 - Check using Feature Name
#Get Feature ID based on the Feature Name and ensure whether its already activated or not at the current sub-site scope
$FeatureID = Get-SPFeature -Web $subSiteURL | Where {$_.DisplayName -eq $featureFolderName}
if($FeatureID -ne $null)
{
#Approach 2 - Check using Feature ID
#Check whether Feature to be activated is already activated for this sub-site
if (Get-SPFeature -Web $subSiteURL | Where {$_.ID -eq $FeatureID.Id})
{
Write-Host $featureFolderName "is already activated at :" $subSiteURL
}
else
{
Enable-SPFeature -Identity $featureFolderName -Confirm:$false -Url $subSiteURL
Write-Host $featureFolderName "has been activated at :" $subSiteURL
}
}
else
{
Enable-SPFeature -Identity $featureFolderName -Confirm:$false -Url $subSiteURL
Write-Host $featureFolderName "has been activated at :" $subSiteURL
}
Remove-PsSnapin Microsoft.SharePoint.PowerShell
Echo Finish