Try { $webApplicationURL = $args[0] $featureFolderName = "Web level FeatureName" $webApp = Get-SPWebApplication $webApplicationURL if($webApp -ne $null) { foreach($siteColl in $webApp.Sites) { if($siteColl -ne $null) { foreach($subWeb in $siteColl.AllWebs) { if($subWeb -ne $null) { # Print each Subsite Write-Host $subWeb.Url #Get Feature ID based on the Feature Name $FeatureID = Get-SPFeature -Web $subWeb.Url | Where {$_.DisplayName -eq $featureFolderName} if($FeatureID -ne $null) { #Check whether Feature to be activated is already activated for this subsite if (Get-SPFeature -Web $subWeb.Url | Where {$_.ID -eq $FeatureID.Id}) { Write-Host $featureFolderName "is already activated at :" $subWeb.Url Enable-SPFeature -Identity $featureFolderName -URL $subWeb.Url -Force Write-Host $featureFolderName "is Re-activated at :" $subWeb.Url } else { Enable-SPFeature -Identity $featureFolderName -Confirm:$false -Url $subWeb.url Write-Host $featureFolderName "has been activated at :" $subWeb.url } } $subWeb.Dispose() } else { Echo $subWeb "does not exist" } } $siteColl.Dispose() } else { Echo $siteColl "does not exist" } } } else { Echo $webApplicationURL "does not exist " } } catch { Write-Host -Object "Error occurred while running this script " }