<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Solutionizing .NET &#187; SPWebConfigModification</title>
	<atom:link href="http://solutionizing.net/tag/spwebconfigmodification/feed/" rel="self" type="application/rss+xml" />
	<link>http://solutionizing.net</link>
	<description>Random thoughts on custom development in SharePoint.</description>
	<lastBuildDate>Sat, 12 May 2012 03:45:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='solutionizing.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Solutionizing .NET &#187; SPWebConfigModification</title>
		<link>http://solutionizing.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://solutionizing.net/osd.xml" title="Solutionizing .NET" />
	<atom:link rel='hub' href='http://solutionizing.net/?pushpress=hub'/>
		<item>
		<title>SPWebConfigModification Works Fine</title>
		<link>http://solutionizing.net/2009/05/26/spwebconfigmodification-works-fine/</link>
		<comments>http://solutionizing.net/2009/05/26/spwebconfigmodification-works-fine/#comments</comments>
		<pubDate>Tue, 26 May 2009 16:02:43 +0000</pubDate>
		<dc:creator>Keith Dahlby</dc:creator>
				<category><![CDATA[Object Model]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SPWebConfigModification]]></category>

		<guid isPermaLink="false">http://solutionizing.net/?p=523</guid>
		<description><![CDATA[Manpreet Alag&#8216;s recent post, SPWebConfigModification does not work on Farms with multiple WFEs, has been making its rounds on Twitter and the link blogs. A post title like that is sure to get attention, but is it really true? After looking a bit closer, I don&#8217;t believe it is. The post suggests that this doesn&#8217;t [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=solutionizing.net&#038;blog=3982353&#038;post=523&#038;subd=solutionizing&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.msdn.com/malag/">Manpreet Alag</a>&#8216;s recent post, <a href="http://blogs.msdn.com/malag/archive/2009/05/22/spwebconfigmodification-does-not-work-on-farms-with-multiple-wfes.aspx">SPWebConfigModification does not work on Farms with multiple WFEs</a>, has been making its rounds on Twitter and the link blogs. A post title like that is sure to get attention, but is it really true? After looking a bit closer, I don&#8217;t believe it is.</p>
<p>The post suggests that this doesn&#8217;t work:</p>
<pre>SPSite siteCollection = new SPSite("http://MOSSServer/");
SPWebApplication webApp = siteCollection.WebApplication;
// ...
webApp.WebConfigModifications.Add(modification);
webApp.Farm.Services.GetValue&lt;SPWebService&gt;().ApplyWebConfigModifications();</pre>
<p>But this does:</p>
<pre>SPWebService.ContentService.WebConfigModifications.Add(modification);
SPWebService.ContentService.Update();
SPWebService.ContentService.ApplyWebConfigModifications();</pre>
<p>Drawing this final conclusion:</p>
<blockquote><p>Instead of adding modifications to <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebapplication.webconfigmodifications.aspx" target="_blank">WebConfigModifcations</a> of <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebapplication.aspx" target="_blank">SPWebApplication</a> object, we are using SPWebService.ContentService to call <strong>ADD</strong> and <strong>UPDATE</strong> methods. Whenever required, it is always advised to use <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebservice.contentservice.aspx" target="_blank">SPWebService.ContentService</a> to make the modifications rather than accessing <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.sppersistedobject.farm.aspx" target="_blank">Farm</a> instance through <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebapplication.aspx" target="_blank">SPWebApplication</a>.</p></blockquote>
<p>The suggestion is that there&#8217;s a problem with applying the changes through <code>webApp.Farm</code>. But that <code>Farm</code> is just <code>SPFarm.Local</code>:</p>
<pre>public SPSite(string requestUrl) : this(<strong>SPFarm.Local</strong>, new Uri(requestUrl), false, SPSecurity.UserToken)
{
}</pre>
<p>So the last line is essentially equivalent to this:</p>
<pre>SPFarm.Local.Services.GetValue&lt;SPWebService&gt;()</pre>
<p>Taking a peek at <code>ContentService</code>, we find this definition:</p>
<pre>public static SPWebService get_ContentService
{
    if (SPFarm.Local != null)
    {
        return SPFarm.Local.Services.GetValue&lt;SPWebService&gt;();
    }
    return null;
}</pre>
<p>The modified sample isn&#8217;t actually doing anything different to apply the changes! So the problem is either in how SharePoint handles Web Application-scoped web config changes, or that the changes aren&#8217;t being applied correctly. The latter is much more likely than the former, and indeed the solution is actually quite simple: just look for the only other significant difference between the code samples.</p>
<pre>webApp.WebConfigModifications.Add(modification);
<strong>webApp.Update();</strong> // Oops!
webApp.Farm.Services.GetValue&lt;SPWebService&gt;().ApplyWebConfigModifications();</pre>
<p>A quick PowerShell session or console app would have verified that the config changes weren&#8217;t being saved to the database.</p>
<p>So what have we learned?</p>
<ol>
<li>Always call Update() after making changes to an SPPersistedObject (like SPWebApplication or SPWebService).</li>
<li>SPWebService.ContentService is a shortcut for SPFarm.Local.Services.GetValue&lt;SPWebService&gt;.</li>
<li>Check your code carefully before blaming the SharePoint API!</li>
</ol>
<br /> Tagged: SPWebConfigModification <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/solutionizing.wordpress.com/523/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/solutionizing.wordpress.com/523/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/solutionizing.wordpress.com/523/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/solutionizing.wordpress.com/523/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/solutionizing.wordpress.com/523/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/solutionizing.wordpress.com/523/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/solutionizing.wordpress.com/523/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/solutionizing.wordpress.com/523/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/solutionizing.wordpress.com/523/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/solutionizing.wordpress.com/523/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/solutionizing.wordpress.com/523/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/solutionizing.wordpress.com/523/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/solutionizing.wordpress.com/523/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/solutionizing.wordpress.com/523/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=solutionizing.net&#038;blog=3982353&#038;post=523&#038;subd=solutionizing&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://solutionizing.net/2009/05/26/spwebconfigmodification-works-fine/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/26483382e3717e58e4c45d06c8ec351d?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">dahlbyk</media:title>
		</media:content>
	</item>
		<item>
		<title>PowerShellASP with SharePoint</title>
		<link>http://solutionizing.net/2008/07/24/powershellasp-with-sharepoint/</link>
		<comments>http://solutionizing.net/2008/07/24/powershellasp-with-sharepoint/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 07:56:33 +0000</pubDate>
		<dc:creator>Keith Dahlby</dc:creator>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[Object Model]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[HttpHandler]]></category>
		<category><![CDATA[PowerShellASP]]></category>
		<category><![CDATA[SPWebConfigModification]]></category>

		<guid isPermaLink="false">http://solutionizing.wordpress.com/?p=33</guid>
		<description><![CDATA[PowerShellASP was announced earlier this week, and naturally my first thought was &#8220;Does it work with SharePoint?&#8221; It turns out that it does, but only for paths mapped to the file system (_layouts, _admin, etc). I&#8217;m hoping the authors will consider making a SharePoint extension of the handler to support files stored in the content [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=solutionizing.net&#038;blog=3982353&#038;post=33&#038;subd=solutionizing&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.powershelltoys.com/">PowerShellASP</a> was <a title="PowerShell ASP - Too cool!" href="http://blogs.msdn.com/powershell/archive/2008/07/18/powershell-asp-too-cool.aspx">announced</a> earlier this week, and naturally my first thought was &#8220;Does it work with SharePoint?&#8221; It turns out that it does, but only for paths mapped to the file system (_layouts, _admin, etc). I&#8217;m hoping the authors will consider making a SharePoint extension of the handler to support files stored in the content database as well (more on that later). Just think&#8230;writing PowerShell in SharePoint Designer! What could be better?!</p>
<h2>Solutionizing PoShASP</h2>
<p>Of course you could just follow the provided installation instructions by hand, but what if we wanted to use a WSP?</p>
<h3>Step 1: Install PowerShell 1.0</h3>
<p>PowerShell is included on Windows Server 2008; for other flavors of Windows, <a title="How to Download Windows PowerShell 1.0" href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx">download here</a>.</p>
<h3>Step 2: Web.Config Changes</h3>
<p>PoShASP requires adding an <code>HttpHandler</code> to web.config. The preferred way to do this is through a WebApplication-scoped feature receiver. The code would look something like this:</p>
<pre>using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;

namespace Solutionizing.PowerShellASP {
  class WebApplicationFeatureReceiver : SPFeatureReceiver {
    private const string MODS_OWNER = "PowerShellASP";
    private const string PS_VERB = "*";
    private const string PS_PATH = "*.ps1x";
    private const string PS_TYPE = "PowerShellToys.PowerShellASP.PSHandler, PowerShellToys.PowerShellASP";
    private const string MOD_PATH  = "configuration/system.web/httpHandlers";
    private const string MOD_NAME  = @"add[@path=""{0}""]";
    private const string MOD_VALUE = @"&lt;add verb=""{0}"" path=""{1}"" type=""{2}""/&gt;";

    private SPWebConfigModification AddHttpHandler(string verb, string path, string type) {
      SPWebConfigModification mod = new SPWebConfigModification(string.Format(MOD_NAME, path), MOD_PATH);
      mod.Value = String.Format(MOD_VALUE, verb, path, type);
      mod.Owner = MODS_OWNER;
      mod.Sequence = 0;
      mod.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
      return mod;
    }

    public override void FeatureActivated(SPFeatureReceiverProperties properties) {
      SPWebApplication webApp = properties.Feature.Parent as SPWebApplication;
      webApp.WebConfigModifications.Add(AddHttpHandler(PS_VERB, PS_PATH, PS_TYPE));
      webApp.Farm.Services.GetValue&lt;SPWebService&gt;().ApplyWebConfigModifications();
    }

    public override void FeatureDeactivating(SPFeatureReceiverProperties properties) {
      SPWebApplication webApp = properties.Feature.Parent as SPWebApplication;
      Collection&lt;SPWebConfigModification&gt; mods = webApp.WebConfigModifications;

      int startCount = mods.Count;
      for (int c = startCount - 1; c &gt;= 0; c--) {
        SPWebConfigModification mod = mods[c];
        if (mod.Owner == MODS_OWNER)
          mods.Remove(mod);
      }

      if (startCount &gt; mods.Count) {
        webApp.Update();
        webApp.Farm.Services.GetValue&lt;SPWebService&gt;().ApplyWebConfigModifications();
      }
    }

    public override void FeatureInstalled(SPFeatureReceiverProperties properties) { }
    public override void FeatureUninstalling(SPFeatureReceiverProperties properties) { }
  }
}</pre>
<p>And we need a feature for the receiver. (Download image <a href="http://solutionizing.files.wordpress.com/2008/07/posh_60x45.jpg">here</a>.)<br />
<a href="http://solutionizing.files.wordpress.com/2008/07/posh_60x45.jpg"><img class="alignright size-full wp-image-36" src="http://solutionizing.files.wordpress.com/2008/07/posh_60x45.jpg?w=780" alt="PowerShell Logo"   /></a></p>
<pre>&lt;Feature Id="316F5804-C11B-4E4B-9CD3-E6BD6801091A"
         Title="PowerShellASP"
         Description="Installs PowerShellASP - http://www.powershelltoys.com/"
         Scope="WebApplication"
         Version="1.0.0.0"
         ImageUrl="PowerShellASP/PoSh_60x45.jpg"
         ImageUrlAltText="PowerShell"
         ReceiverAssembly="Solutionizing.PowerShellASP, ..."
         ReceiverClass="Solutionizing.PowerShellASP.WebApplicationFeatureReceiver"
         xmlns="http://schemas.microsoft.com/sharepoint/" /&gt;</pre>
<h3>Step 3: Test Script</h3>
<p>Before we finish the package, let&#8217;s add a sample script in LAYOUTS &#8211; test.ps1x:</p>
<pre>&lt;html&gt;
&lt;body&gt;
&lt;% $s = new-object Microsoft.SharePoint.SPSite($Request.Url) %&gt;
&lt;% $raw = $Request.RawUrl %&gt;
&lt;% $w = $s.OpenWeb($raw.Substring(0, $raw.IndexOf($Request.Path))) %&gt;
&lt;h1&gt;Hidden Lists in &lt;a href="&lt;%=$w.Url %&gt;"&gt;&lt;%=$w.Title %&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;table width="100%"&gt;
&lt;tr&gt;&lt;th&gt;List Title&lt;/th&gt;&lt;th&gt;Items&lt;tr&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;% $w.Lists | ?{$_.Hidden -eq $true} |
   sort @{expression="ItemCount";Ascending=$true},@{expression="Title";Descending=$true} | %{ %&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;a href="&lt;%= $w.Url %&gt;&lt;%= $_.DefaultViewUrl %&gt;"&gt;&lt;%= $_.Title %&gt;&lt;/a&gt;&lt;/td&gt;
  &lt;td&gt;&lt;%= $_.ItemCount %&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan="2"&gt;&lt;p style="overflow: auto; height: 8em"&gt;
&lt;%= [Microsoft.SharePoint.Utilities.SPEncode]::HtmlEncode($_.PropertiesXml) %&gt;
&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;% } %&gt;
&lt;/table&gt;
&lt;pre&gt;
&lt;% $w %&gt;
&lt;% $s %&gt;
&lt;% $Request %&gt;
&lt;/pre&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>This contrived example fetches the current SPSite and SPWeb and then outputs a table of the hidden lists in the current site with a few properties. It also dumps the default PowerShell view of the current <code>SPWeb</code>, <code>SPSite</code> and <code>HttpRequest</code> objects. It&#8217;s not exactly pretty, but it sufficiently demonstrates a few key concepts of PoShASP.</p>
<h3>Step 4: Deploy DLL</h3>
<p>The final piece is the assembly, which needs to go in the web application&#8217;s bin directory. Our solution brings everything together:</p>
<pre>&lt;Solution SolutionId="5C594B30-9AE5-4910-8DA2-1D7BA622FACC"
          ResetWebServer="True"
          xmlns="http://schemas.microsoft.com/sharepoint/"&gt;
  &lt;FeatureManifests&gt;
    &lt;FeatureManifest Location="PowerShellASP\feature.xml" /&gt;
  &lt;/FeatureManifests&gt;
  &lt;TemplateFiles&gt;
    &lt;TemplateFile Location="IMAGES\PowerShellASP\PoSh_60x45.jpg" /&gt;
    &lt;TemplateFile Location="LAYOUTS\PowerShellASP\test.ps1x" /&gt;
  &lt;/TemplateFiles&gt;
  &lt;Assemblies&gt;
    &lt;Assembly Location="Solutionizing.PowerShellASP.dll"
              DeploymentTarget="GlobalAssemblyCache" /&gt;
    &lt;Assembly Location="PowerShellToys.PowerShellASP.dll"
              DeploymentTarget="WebApplication" /&gt;</pre>
<pre>  &lt;/Assemblies&gt;
&lt;/Solution&gt;</pre>
<h3>Step 5: Deploy</h3>
<p><a href="http://solutionizing.files.wordpress.com/2008/07/poshasp1.png"><img class="alignright size-medium wp-image-44" src="http://solutionizing.files.wordpress.com/2008/07/poshasp1.png?w=300&h=230" alt="" width="300" height="230" /></a>Now that our solution is complete, we can install and deploy the WSP. Note that the package contains a resource—the PoShASP DLL—scoped for a web application, so deploy accordingly. Once the solution is deployed, the feature needs to be activated through Central Admin or stsadm (or PowerShell ;). If all goes according to plan, the application&#8217;s bin directory will contain PowerShellToys.PowerShellASP.dll and web.config will have an <code>HttpHandler</code> for .ps1x files. Now open your browser to http://yourapp/_layouts/PowerShellASP/test.ps1x and see what we have. You can also try http://yourapp/SubSite/_layouts/PowerShellASP/test.ps1x to see the change in site context. (Screenshot was taken before I rolled test.ps1x into my test solution.)</p>
<h3>From Content Database</h3>
<p><a href="http://solutionizing.files.wordpress.com/2008/07/poshasp2.png"><img class="alignright size-medium wp-image-47" src="http://solutionizing.files.wordpress.com/2008/07/poshasp2.png?w=300&h=100" alt="" width="300" height="100" /></a>Earlier I mentioned that the handler doesn&#8217;t work for scripts stored in the content database. The easiest way to test this is to upload a .ps1x file to a document library. Attempting to open the file yields a lovely exception. So where is this exceptional path coming from? Well the stack trace gives us a good place to start:</p>
<pre>   System.IO.StreamReader..ctor(String path) +112
   PowerShellToys.PowerShellASP.PSHandler.a(String A_0) +75</pre>
<p>Cue <a title="Lutz Roeder's .NET Reflector" href="http://www.aisto.com/roeder/dotnet/">Reflector</a>. In <code>PSHandler.a(String A_0)</code> we find the following:</p>
<pre>    using (StreamReader reader = new StreamReader(A_0)) {
      ...</pre>
<p>And <code>A_0</code> comes from the implementation of <code>IHttpHandler.ProcessRequest(HttpContext)</code>:</p>
<pre>    string filename = A_0.Request.MapPath(A_0.Request.FilePath);
    ...
    this.a(filename);</pre>
<p>Since Docs/Documents/Get-Process.ps1x doesn&#8217;t map to anything special like _layouts, IIS just maps it to the local root of the site. We know this won&#8217;t work, but how can we let the handler in on our little secret? In my next post I&#8217;ll go over some code that could get us to that point.</p>
<p>With or without the content database limitation, how would <em>you</em> use PowerShellASP with SharePoint?</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/solutionizing.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/solutionizing.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/solutionizing.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/solutionizing.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/solutionizing.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/solutionizing.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/solutionizing.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/solutionizing.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/solutionizing.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/solutionizing.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/solutionizing.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/solutionizing.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/solutionizing.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/solutionizing.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/solutionizing.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/solutionizing.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=solutionizing.net&#038;blog=3982353&#038;post=33&#038;subd=solutionizing&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://solutionizing.net/2008/07/24/powershellasp-with-sharepoint/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/26483382e3717e58e4c45d06c8ec351d?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">dahlbyk</media:title>
		</media:content>

		<media:content url="http://solutionizing.files.wordpress.com/2008/07/posh_60x45.jpg" medium="image">
			<media:title type="html">PowerShell Logo</media:title>
		</media:content>

		<media:content url="http://solutionizing.files.wordpress.com/2008/07/poshasp1.png?w=300" medium="image" />

		<media:content url="http://solutionizing.files.wordpress.com/2008/07/poshasp2.png?w=300" medium="image" />
	</item>
	</channel>
</rss>
