Microsoft Office Sharepoint

All my posts are provided "AS IS" with no warranties, and confer no rights.

Getting the feature names available on the server

One script that comes in handy when you have the following type of issue ( rare but it happens ).

Say you have deployed a webpart through a custom solution.

From time to time on your load balanced farm, the page crashes . Investigating , you find out that the solution was not added on one web front end under \Template\Features . You add the solution definition there and all works fine all the time.

Now.. wouldn't it be nice to be able to check quickly the deployed solutions ?

Here's a script for you that attempts to accomplish that.

NOTE : the script comes with NO warranties.run it at your own risk.

$localFeatures = Get-ChildItem "C:\Program Files\common files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\FEATURES" -filter "Feature.xml" -Recurse

$processedFeatures =@()

foreach($featureDef in $localFeatures)

{

    $featureAsXML = [xml](Get-Content $featuredef.PSPath)

    $featureAsPSObject = New-Object -TypeName "PSObject" -Property @{

    Id =$featureAsXML.Feature.Id

    FeatureName = $featuredef.Directory.Name

Title = $featureAsXML.Feature.Title

Description=$featureAsXML.Feature.Description

Scope = $featureAsXML.Feature.Scope

Hidden =$featureAsXML.Feature.Hidden

ReceiverAssembly = $featureAsXML.Feature.ReceiverAssembly

ReceiverClass = $featureAsXML.Feature.ReceiverClass

}

$processedFeatures+=$featureAsPSObject

}

$processedFeatures |Out-GridView

$processedFeatures |Export-CliXml C:\Temp\Features.xml

At the end, if you want to reuse this file you can just do :

$processedFeatures=Import-CliXml C:\Temp\Features.xml