Darrin Bishop

From the Workbench
posts - 106, comments - 17, trackbacks - 6

GetFeatureAndDependencies - A SharePoint PowerShell Function

As stated in my previous post, GetFeatureDefinition - A SharePoint PowerShell Function, I have been  working on deploying a solution that contained multiple features which lead me down the road of feature activation dependencies. My current client's hosting environment has me looking to see just what I can pull off with hidden features and cross-scope dependencies.  In searching out any best practices around solution and feature packaging Scott Hillier suggested that I dig into the MOSS publishing features  to  look at how they relied on Activation Dependencies.   I just happened to be reading AC's Professional WCM book, SharePoint 2007 Web Content Management Development,  where Andrew  just happens to be discussing the publishing features.

So what I really wanted to do was to view some key information about a feature  and it's dependencies, for a given feature show me it's dependency to include name, id, scope and hidden property   If you have not tried to do this - well it is a time-consuming process when you must wade through  the feature directory  matching up feature activation ids to features. 

In my previous life , lets call it BPS (Before PowerShell), I like many developers would have opened up Visual Studio, started a new console project to created a simple application that would dump the features to the screen.  A typical one-shot app.  But now APS (After PowerShell) I took a few minutes and created a new SharePoint PowerShell function named  GetFeatureAndActivationDependencies which outputs to the screen key properties of the feature and any activation dependencies.

So a little housekeeping before the script. First this script relies on the GetFeatureDefintion function in my last post, GetFeatureDefinition - A SharePoint PowerShell Function. Make sure you add this function to your PowerShell host, either in the host itself or via  a profile. Next, both GetFeatureDefintion and GetFeatureDefintionAndDependencies must run in a PowerShell host on a WSS 3 or MOSS 2007 server. Finally as stated in all my PowerShell and SharePoint post you must load the SharePoint assembly in the PowerShell environment before you use these functions. To  include the SharePoint assembly in the PowerShell environment simply  execute the following command in PowerShell:

[Reflection.Assembly]::Load("Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c")

PowerShell will respond with information about the newly loaded assembly.

So here is the function. It must be run on a WSS 3 or MOSS server  with PowerShell

function GetFeatureAndDependencies
{
 Param([String] $FeatureId)
 
 getFeatureDefinition $FeatureId | sort-object{$_.DisplayName} |
 foreach-object{
   "Feature Definition`n-----------------------------------------------------------"
    $_ | format-table DisplayName, Id, Scope, Hidden -AutoSize
 
    $dep = $_.ActivationDependencies | foreach-object{getFeatureDefinition $_.FeatureId} | FT DisplayName, Id, Scope, Hidden -AutoSize
    if($dep -ne $null)
    { 
     "Activation Dependencies`n-----------------------------------------------------------"
      $dep
    }
    else
    {"No Dependencies"} 
   }
}

Once the function has been defined in your PowerShell session try  the following commands:

GetFeatureAndDependencies

Ok that is a little messy, it will dump every Feature Definition along with any activation dependencies.  This next command is "real-world" example.  All I have been provided is a Feature Definition id….And to make it more real, I don’t  know which feature maps to this ID.

GetFeatureAndDependencies F6924D36-2FA8-4f0b-B16D-06B7250180FA

To close this post, this is an example of a PowerShell script that provides a formatted output  to the screen for a report-like view. This script really was not intended to be used as input into another command. The script does not output a clean set of objects.

Print | posted on Sunday, July 06, 2008 10:18 PM | Filed Under [ PowerShell SharePoint ]

Feedback

# SharePoint Kaffeetasse #85

Form Based Authentification Configuring Forms Authentication in SharePoint 2007 Customizing the Login
7/15/2008 2:22 AM | Mirrored Blogs

# PowerShell and SharePoint

During our Mastering SharePoint workshop this week, I had a couple of students who wanted additional
8/15/2008 2:08 PM | Bob Mixon
Comments have been closed on this topic.

Powered by: