<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Peter Schneider</title><subtitle type="html">&lt;br /&gt;MCT, MCSD.NET, MCAD.NET, MCDBA</subtitle><id>http://weblogs.asp.net/pschneider/atom.aspx</id><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/default.aspx" /><link rel="self" type="application/atom+xml" href="http://weblogs.asp.net/pschneider/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20510.895">Community Server</generator><updated>2006-12-03T04:50:00Z</updated><entry><title>VS2008 Partner Training Unterlagen</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2008/07/06/vs2008-partner-training-unterlagen.aspx" /><id>http://weblogs.asp.net/pschneider/archive/2008/07/06/vs2008-partner-training-unterlagen.aspx</id><published>2008-07-06T14:38:00Z</published><updated>2008-07-06T14:38:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;Die Unterlagen für die ersten zwei Tage stehen hier zum Download bereit.&lt;/P&gt;&lt;IFRAME style="BORDER-RIGHT: #dde5e9 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #dde5e9 1px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 3px; BORDER-LEFT: #dde5e9 1px solid; WIDTH: 240px; PADDING-TOP: 0px; BORDER-BOTTOM: #dde5e9 1px solid; HEIGHT: 66px; BACKGROUND-COLOR: #ffffff" marginWidth=0 marginHeight=0 src="http://cid-39a2c70ce084f610.skydrive.live.com/embedrowdetail.aspx/Unterlagen%20VS2008%20Partner%20Training" frameBorder=0 scrolling=no mce_src="http://cid-39a2c70ce084f610.skydrive.live.com/embedrowdetail.aspx/Unterlagen%20VS2008%20Partner%20Training"&gt;&lt;/IFRAME&gt;
&lt;P mce_keep="true"&gt;Viel Vergnügen beim Durchstöbern, falls Fragen auftauchen, können Sie mich gerne über das Kontaktformular dieser Seite kontaktieren.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6366832" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author></entry><entry><title>Powershell CmdLet for LiveContacts Get-WindowsLiveContact</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2008/03/25/powershell-cmdlet-for-livecontacts-get-windowslivecontact.aspx" /><id>http://weblogs.asp.net/pschneider/archive/2008/03/25/powershell-cmdlet-for-livecontacts-get-windowslivecontact.aspx</id><published>2008-03-25T17:10:32Z</published><updated>2008-03-25T17:10:32Z</updated><content type="html">&lt;p&gt;The &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b5a78784-922d-4267-a6e9-5d2ecf1dced8&amp;amp;displaylang=en" target="_blank"&gt;Windows Live ID Client SDK&lt;/a&gt; documentation shows you quite well how to sign in silently or with the built-in dialog - yet there is a small problem if you want to use this within a Powershell cmdlet, because the threading model has to be set to Single Threaded Apartment State (STA).&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://blogs.msdn.com/powershell/" target="_blank"&gt;Powershell Team Blog&lt;/a&gt; has a &lt;a href="http://blogs.msdn.com/powershell/archive/2007/03/23/thread-apartmentstate-and-powershell-execution-thread.aspx" target="_blank"&gt;good entry&lt;/a&gt; on how to change the threading model.&lt;/p&gt;  &lt;p&gt;To use the Windows Live Client SDK library within a powershell cmdlet you have to start another thread and set the apartmentstate to STA, here's how to do it:&lt;/p&gt;  &lt;div&gt;ExecutionResult class:    &lt;br /&gt;    &lt;br /&gt;&lt;/div&gt;  &lt;div&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;internal&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; ExecutionResult
{

    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; output;
    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; Exception error;

    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Object Output
    {
        get { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; output; }
        set { output = &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;; }
    }

    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Exception Error
    {
        get { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; error; }
        set { error = &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;; }
    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;
  &lt;br /&gt;PerformWindowsLiveClientLogin: 

  &lt;br /&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; PerformWindowsLiveClientLogin(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; outputToWriteTo)
{
    ExecutionResult result = (ExecutionResult)outputToWriteTo;
    WindowsLiveClientLogin(result);
    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;null&lt;/span&gt; != waitHandle)
    {
        waitHandle.Set();
    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;
  &lt;br /&gt;WindowsLiveClientLogin: 

  &lt;br /&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; WindowsLiveClientLogin(ExecutionResult result)
{
    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
    {
        oIDMgr = 
            IdentityManager.CreateInstance(
               &lt;span style="color: #006080"&gt;&amp;quot;Peter Schneider;ps@ugwa.net;Windows Live Powershell CmdLets&amp;quot;&lt;/span&gt;, 
               &lt;span style="color: #006080"&gt;&amp;quot;Windows Live Powershell CmdLets&amp;quot;&lt;/span&gt;);
    }
    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (WLLogOnException wlex) {  result.Error = wlex;  }

    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
    {
        oID = oIDMgr.CreateIdentity(defaultUserName);
    }
    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (WLLogOnException wlex) { result.Error = wlex; }

    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (oID != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)
    {
        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (oID.SavedCredentials == CredentialType.UserNameAndPassword)
        {
            &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
            {
                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (oID.Authenticate(AuthenticationType.Silent))
                {
                    &lt;span style="color: #008000"&gt;// User authenticated successfully&lt;/span&gt;
                }
                &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;
                {
                    &lt;span style="color: #008000"&gt;// Show Windows Live Client Login Dialog&lt;/span&gt;
                    oID.Authenticate();
                }
            }
            &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (WLLogOnException wlex) { result.Error = wlex;  }
        }
        &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;
        {
            &lt;span style="color: #008000"&gt;// Insufficient credentials saved for user, &lt;/span&gt;
            &lt;span style="color: #008000"&gt;// show Windows Live Client Login Dialog&lt;/span&gt;
            oID.Authenticate();
        }
    }

    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
    {
        ticket = oID.GetTicket(&lt;span style="color: #006080"&gt;&amp;quot;https://cumulus.services.live.com/&amp;quot;&lt;/span&gt; 
            + oID.UserName, &lt;span style="color: #006080"&gt;&amp;quot;MBI&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;);
    }
    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (WLLogOnException wlex) { result.Error = wlex; }

}&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;div&gt;BeginProcessing: 
  &lt;br /&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; BeginProcessing()
{

    ExecutionResult result = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ExecutionResult();
    Thread executionThread = 
        &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Thread(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ParameterizedThreadStart(PerformWindowsLiveClientLogin));
    executionThread.SetApartmentState(ApartmentState.STA);
    waitHandle = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ManualResetEvent(&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;);
    executionThread.Start(result);
    waitHandle.WaitOne();

    &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; uri = &lt;span style="color: #006080"&gt;@&amp;quot;https://cumulus.services.live.com/&amp;quot;&lt;/span&gt;+oID.UserName+&lt;span style="color: #006080"&gt;&amp;quot;/LiveContacts/Contacts&amp;quot;&lt;/span&gt;;

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
    request.Headers.Add(&lt;span style="color: #006080"&gt;&amp;quot;Authorization&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;WLID1.0 t=\&amp;quot;&amp;quot;&lt;/span&gt; + ticket +&lt;span style="color: #006080"&gt;&amp;quot;\&amp;quot;&amp;quot;&lt;/span&gt;);
    request.AllowAutoRedirect = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;
    request.UserAgent = &lt;span style="color: #006080"&gt;&amp;quot;WindowsLive.Contacts Powershell CmdLets&amp;quot;&lt;/span&gt;;
    request.ContentType = &lt;span style="color: #006080"&gt;&amp;quot;text/xml&amp;quot;&lt;/span&gt;;
    request.Pipelined = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;
    request.ProtocolVersion = HttpVersion.Version10;            
    request.Method = &lt;span style="color: #006080"&gt;&amp;quot;GET&amp;quot;&lt;/span&gt;;

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

    XmlDocument contacts = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; XmlDocument();

    contacts.LoadXml(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; StreamReader(response.GetResponseStream()).ReadToEnd());

    WriteObject(contacts);
      
}&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;div&gt;You can download the whole source for the CmdLet here:
  &lt;br /&gt;

  &lt;br /&gt;&lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; padding-left: 0px; border-top: #dde5e9 1px solid; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 26px; background-color: #ffffff" marginheight="0" src="http://cid-c7291ccfb0fcc469.skydrive.live.com/embedrow.aspx/WindowsLive.Contacts%20CmdLet" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;

  &lt;br /&gt;

  &lt;br /&gt;Install the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b5a78784-922d-4267-a6e9-5d2ecf1dced8&amp;amp;displaylang=en" target="_blank"&gt;Windows Live Client SDK&lt;/a&gt;,&amp;#160; compile the cmdlet and afterwards use:

  &lt;br /&gt;&lt;/div&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;installutil /i WindowsLive.Contacts
add-pssnapin WindowsLive.Contacts&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;to use the cmdlet in powershell. If installing on Vista, please remember to run powershell as Administrator.&lt;/p&gt;

&lt;p&gt;Here are some sample scripts to get started:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enumerate all WindowsLive Contacts using Windows Live Client SDK Login Dialog:&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;$result = get-windowslivecontact

$result.Contacts.Contact | select WindowsLiveId&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Enumerate all WindowsLive Contacts using Silent Login:&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;$result = get-windowslivecontact -WindowsLiveId &lt;span style="color: #006080"&gt;&amp;quot;your@liveid.com&amp;quot;&lt;/span&gt;

$result.Contacts.Contact | select WindowsLiveId&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Show WindowsLiveId from several Windows Live Accounts using SilentLogin&lt;/strong&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #006080"&gt;&amp;quot;first@live.com&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;second@live.com&amp;quot;&lt;/span&gt; | % { get-windowslivecontact -WindowsLiveId $_ } | select WindowsLiveId&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The Cmdlet returns the XmlDocument, which can easily be accessed via dot notation:&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;$result = get-windowslivecontact 

$result.Contacts.Contact[0].Profiles.Personal&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;If you don't want to use the Windows Live Client SDK, take a look at this &lt;a href="http://weblogs.asp.net/pschneider/archive/2008/03/21/atomspacesphotos-browser-sample-application.aspx" target="_blank"&gt;sample&lt;/a&gt;, which uses a RPS ticket for authentication - you can easily adopt the sample.&lt;/p&gt;

&lt;p&gt;There are many things you could add to this sample. Use it as a starting point - yet I would be happy to here from extensions.. &lt;img alt="smile_tongue" src="http://spaces.live.com/rte/emoticons/smile_tongue.gif" /&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6024472" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author><category term="C#" scheme="http://weblogs.asp.net/pschneider/archive/tags/C_2300_/default.aspx" /><category term="Powershell" scheme="http://weblogs.asp.net/pschneider/archive/tags/Powershell/default.aspx" /><category term="Windows Live" scheme="http://weblogs.asp.net/pschneider/archive/tags/Windows+Live/default.aspx" /></entry><entry><title>AtomSpacesPhotos Browser Sample Application</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2008/03/21/atomspacesphotos-browser-sample-application.aspx" /><id>http://weblogs.asp.net/pschneider/archive/2008/03/21/atomspacesphotos-browser-sample-application.aspx</id><published>2008-03-21T20:43:00Z</published><updated>2008-03-21T20:43:00Z</updated><content type="html">&lt;P&gt;If you have seen &lt;A href="http://sessions.visitmix.com/?selectedSearch=T19" target=_blank mce_href="http://sessions.visitmix.com/?selectedSearch=T19"&gt;Pablo Castro's MIX Session&lt;/A&gt; about accessing the &lt;STRONG&gt;Windows Live Services via Atom Publishing Protocol&lt;/STRONG&gt; and want to play yourself with the protocol, I've built a quick and dirty WinForms app, which logs you in with your Windows Live ID and allows you to edit the request uri. &lt;/P&gt;
&lt;P&gt;It&lt;EM&gt; doesn't&lt;/EM&gt; use the &lt;A href="http://msdn2.microsoft.com/en-us/library/bb404787.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb404787.aspx"&gt;Windows Live Client SDK&lt;/A&gt;, but uses a Rps ticket, which we get via SOAP request.&lt;/P&gt;
&lt;P&gt;You should first add the photo module to your spaces account (&lt;A href="http://spaces.live.com/" mce_href="http://spaces.live.com"&gt;http://spaces.live.com&lt;/A&gt;)&lt;/P&gt;
&lt;P&gt;Afterwards you can connect with your Windows Live ID and password and examine your space...&lt;/P&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/blogs/pschneider/WindowsLiveWriter/AtomSpacesPhotosBrowserSampleApplication_12100/CropperCapture%5B4%5D_2.jpg" mce_href="http://weblogs.asp.net/blogs/pschneider/WindowsLiveWriter/AtomSpacesPhotosBrowserSampleApplication_12100/CropperCapture%5B4%5D_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" border=0 alt=CropperCapture[4] src="http://weblogs.asp.net/blogs/pschneider/WindowsLiveWriter/AtomSpacesPhotosBrowserSampleApplication_12100/CropperCapture%5B4%5D_thumb.jpg" width=542 height=394 mce_src="http://weblogs.asp.net/blogs/pschneider/WindowsLiveWriter/AtomSpacesPhotosBrowserSampleApplication_12100/CropperCapture%5B4%5D_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;STRONG&gt;Download the sample application here:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IFRAME style="BORDER-RIGHT: #dde5e9 1px solid; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BORDER-TOP: #dde5e9 1px solid; PADDING-BOTTOM: 0px; MARGIN: 3px; BORDER-LEFT: #dde5e9 1px solid; WIDTH: 240px; PADDING-TOP: 0px; BORDER-BOTTOM: #dde5e9 1px solid; HEIGHT: 26px; BACKGROUND-COLOR: #ffffff" marginHeight=0 src="http://cid-c7291ccfb0fcc469.skydrive.live.com/embedrow.aspx/AtomPubSample" frameBorder=0 marginWidth=0 scrolling=no mce_src="http://cid-c7291ccfb0fcc469.skydrive.live.com/embedrow.aspx/AtomPubSample"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;Be aware that the sample application writes to C:\Temp and does &lt;STRONG&gt;not&lt;/STRONG&gt; delete the downloaded information - so do yourself if you use the app on a different computer.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Background information:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The challenging part is more or less how to get authenticated within the winforms application. Most of the &lt;A href="http://msdn2.microsoft.com/en-us/library/cc304585.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/cc304585.aspx"&gt;samples and documentation&lt;/A&gt; uses the &lt;A href="http://msdn2.microsoft.com/en-us/library/cc287637.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/cc287637.aspx"&gt;delegated authentication model&lt;/A&gt;, which can only be used by webapplications.&lt;/P&gt;
&lt;P&gt;For this browser I've used the &lt;STRONG&gt;TicketAcquirer&lt;/STRONG&gt; class, which I found on &lt;A href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1686529&amp;amp;SiteID=1" target=_blank mce_href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1686529&amp;amp;SiteID=1"&gt;MSDN Forums&lt;/A&gt;. At least I've found several versions, some working, some not. This one works, and I've slightly modificated it, so that you can pass your username and password along.&lt;/P&gt;
&lt;P&gt;FYI: If you are behind a proxy you might want to add a new instance of a WebProxy class to the request...&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FONT-SIZE: 8pt; BORDER-TOP: gray 1px solid; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 109.91%; CURSOR: text; MAX-HEIGHT: 400px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; HEIGHT: 283px; BACKGROUND-COLOR: #f4f4f4"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; TicketAcquirer
{
    &lt;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; applicationId = &lt;SPAN style="COLOR: #006080"&gt;"10"&lt;/SPAN&gt;; 

    &lt;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; soapEnvelope = &lt;SPAN style="COLOR: #006080"&gt;@"&amp;lt;s:Envelope
      xmlns:s = "&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"http://www.w3.org/2003/05/soap-envelope"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"
      xmlns:wsse = "&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"
      xmlns:saml = "&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"urn:oasis:names:tc:SAML:1.0:assertion"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"
      xmlns:wsp = "&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"http://schemas.xmlsoap.org/ws/2004/09/policy"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"
      xmlns:wsu = "&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"
      xmlns:wsa = "&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"http://www.w3.org/2005/08/addressing"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"
      xmlns:wssc = "&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"http://schemas.xmlsoap.org/ws/2005/02/sc"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"
      xmlns:wst = "&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"http://schemas.xmlsoap.org/ws/2005/02/trust"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"&amp;gt;
      &amp;lt;s:Header&amp;gt;
       &amp;lt;wlid:ClientInfo xmlns:wlid = "&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"http://schemas.microsoft.com/wlid"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"&amp;gt;
         &amp;lt;wlid:ApplicationID&amp;gt;{0}&amp;lt;/wlid:ApplicationID&amp;gt;
       &amp;lt;/wlid:ClientInfo&amp;gt;
       &amp;lt;wsa:Action s:mustUnderstand = "&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"1"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"&amp;gt;http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue&amp;lt;/wsa:Action&amp;gt;
       &amp;lt;wsa:To s:mustUnderstand = "&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"1"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"&amp;gt;https://dev.login.live.com/wstlogin.srf&amp;lt;/wsa:To&amp;gt;
       &amp;lt;wsse:Security&amp;gt;
         &amp;lt;wsse:UsernameToken wsu:Id = "&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"user"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"&amp;gt;
           &amp;lt;wsse:Username&amp;gt;{1}&amp;lt;/wsse:Username&amp;gt;
           &amp;lt;wsse:Password&amp;gt;{2}&amp;lt;/wsse:Password&amp;gt;
         &amp;lt;/wsse:UsernameToken&amp;gt;
       &amp;lt;/wsse:Security&amp;gt;
     &amp;lt;/s:Header&amp;gt;
     &amp;lt;s:Body&amp;gt;
       &amp;lt;wst:RequestSecurityToken Id = "&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"RST0"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"&amp;gt;
         &amp;lt;wst:RequestType&amp;gt;http://schemas.xmlsoap.org/ws/2005/02/trust/Issue&amp;lt;/wst:RequestType&amp;gt;
         &amp;lt;wsp:AppliesTo&amp;gt;
            &amp;lt;wsa:EndpointReference&amp;gt;
               &amp;lt;wsa:Address&amp;gt;http://live.com&amp;lt;/wsa:Address&amp;gt;
            &amp;lt;/wsa:EndpointReference&amp;gt;
         &amp;lt;/wsp:AppliesTo&amp;gt;
         &amp;lt;wsp:PolicyReference URI = "&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"MBI"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #006080"&gt;"&amp;gt;&amp;lt;/wsp:PolicyReference&amp;gt;
      &amp;lt;/wst:RequestSecurityToken&amp;gt;
     &amp;lt;/s:Body&amp;gt;
     &amp;lt;/s:Envelope&amp;gt;"&lt;/SPAN&gt;;

    &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; GetTicket(&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; username, &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; password)
    {
        soapEnvelope = String.Format(soapEnvelope, &lt;SPAN style="COLOR: #006080"&gt;"10"&lt;/SPAN&gt;, username, password);

        &lt;SPAN style="COLOR: #0000ff"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; url = &lt;SPAN style="COLOR: #006080"&gt;@"https://dev.login.live.com/wstlogin.srf"&lt;/SPAN&gt;;
        WebRequest request = WebRequest.Create(url);
        request.Method = &lt;SPAN style="COLOR: #006080"&gt;"POST"&lt;/SPAN&gt;;
        request.ContentType = &lt;SPAN style="COLOR: #006080"&gt;"application/soap+xml; charset=UTF-8"&lt;/SPAN&gt;;
        request.Timeout = 10 * 1000;
        &lt;SPAN style="COLOR: #0000ff"&gt;byte&lt;/SPAN&gt;[] bytes = System.Text.Encoding.UTF8.GetBytes(soapEnvelope);
        request.GetRequestStream().Write(bytes, 0, bytes.Length);
        request.GetRequestStream().Close();
        WebResponse response;
        response = request.GetResponse();
        &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; xml;
        &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; (System.IO.StreamReader reader = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; System.IO.StreamReader(response.GetResponseStream()))
            xml = reader.ReadToEnd();
        response.Close();
        XmlDocument document = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; XmlDocument();
        document.LoadXml(xml);
        XmlNamespaceManager nsManager = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; XmlNamespaceManager(document.NameTable);
        nsManager.AddNamespace(&lt;SPAN style="COLOR: #006080"&gt;"wsse"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #006080"&gt;"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"&lt;/SPAN&gt;);
        XmlNode node = document.SelectSingleNode(&lt;SPAN style="COLOR: #006080"&gt;@"//wsse:BinarySecurityToken/text()"&lt;/SPAN&gt;, nsManager);
        &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (node == &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;)
            &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;;
        &lt;SPAN style="COLOR: #0000ff"&gt;else&lt;/SPAN&gt;
            &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; node.Value;
    }

}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;The usage of the class is really simple:&lt;/P&gt;
&lt;DIV&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;TicketAcquirer ta = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; TicketAcquirer();
ticket = ta.GetTicket(txtUsername.Text, txtPassword.Text);&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;We can use the ticket in further requests:&lt;/P&gt;
&lt;DIV&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Headers.Add(&lt;SPAN style="COLOR: #006080"&gt;"Authorization"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #006080"&gt;"WLID1.0 t=\""&lt;/SPAN&gt; + ticket + &lt;SPAN style="COLOR: #006080"&gt;"\""&lt;/SPAN&gt;);
request.AllowAutoRedirect = &lt;SPAN style="COLOR: #0000ff"&gt;false&lt;/SPAN&gt;;
request.UserAgent = &lt;SPAN style="COLOR: #006080"&gt;"AtomPub Sample"&lt;/SPAN&gt;;
request.ContentType = &lt;SPAN style="COLOR: #006080"&gt;"text/xml"&lt;/SPAN&gt;;
request.Pipelined = &lt;SPAN style="COLOR: #0000ff"&gt;false&lt;/SPAN&gt;;
request.ProtocolVersion = HttpVersion.Version10;
request.Method = &lt;SPAN style="COLOR: #006080"&gt;"GET"&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;Review the documentation at &lt;A href="http://msdn2.microsoft.com/en-us/library/cc304585.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/cc304585.aspx"&gt;samples and documentation&lt;/A&gt; and play yourself.. &lt;IMG alt=smile_tongue src="http://spaces.live.com/rte/emoticons/smile_tongue.gif" mce_src="http://spaces.live.com/rte/emoticons/smile_tongue.gif"&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6007231" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author><category term="C#" scheme="http://weblogs.asp.net/pschneider/archive/tags/C_2300_/default.aspx" /><category term="Windows Live" scheme="http://weblogs.asp.net/pschneider/archive/tags/Windows+Live/default.aspx" /></entry><entry><title>Planetary-Scale Views on an Instant-Messaging Network</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2008/03/17/planetary-scale-views-on-an-instant-messaging-network.aspx" /><id>http://weblogs.asp.net/pschneider/archive/2008/03/17/planetary-scale-views-on-an-instant-messaging-network.aspx</id><published>2008-03-17T12:07:46Z</published><updated>2008-03-17T12:07:46Z</updated><content type="html">&lt;p&gt;Here's a link to a quite interesting study, you might be interested in. It actually presents a study of anonymized data capturing a month of high-level communication activities within the whole of the Microsoft Messenger instant-messaging system. &lt;/p&gt;  &lt;p&gt;Quite funny: Which country do you think has the largest number of Messenger users?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://arxiv.org/PS_cache/arxiv/pdf/0803/0803.0939v1.pdf" target="_blank"&gt;Click here for the study&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5987350" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author><category term="Community" scheme="http://weblogs.asp.net/pschneider/archive/tags/Community/default.aspx" /></entry><entry><title>Switch Right Windows and Right Alt Key</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2008/03/13/switch-right-windows-and-right-alt-key.aspx" /><id>http://weblogs.asp.net/pschneider/archive/2008/03/13/switch-right-windows-and-right-alt-key.aspx</id><published>2008-03-13T12:42:00Z</published><updated>2008-03-13T12:42:00Z</updated><content type="html">&lt;P&gt;I've just bought a Apple Keyboard (USB) and wanted to switch the key mapping of the right windows and right alt key..&lt;/P&gt;
&lt;P&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] &lt;BR&gt;"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,5c,e0,38,e0,38,e0,5c,e0,\ &lt;BR&gt;&amp;nbsp; 00,00,00,00&lt;/P&gt;
&lt;P&gt;To swap both the left and the right Windows and Alt Key use:&lt;/P&gt;
&lt;P&gt;Windows Registry Editor Version 5.00&lt;/P&gt;
&lt;P&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]&lt;BR&gt;"Scancode Map"=hex:00,00,00,00,00,00,00,00,07,00,00,00,37,e0,64,00,5b,e0,38,00,\&lt;BR&gt;&amp;nbsp; 38,00,5b,e0,5c,e0,38,e0,38,e0,5c,e0,47,e0,63,e0,00,00,00,00&lt;/P&gt;
&lt;P&gt;Reboot or log off afterwards.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5960436" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author><category term="Tipps &amp;amp; Tricks" scheme="http://weblogs.asp.net/pschneider/archive/tags/Tipps+_2600_amp_3B00_+Tricks/default.aspx" /></entry><entry><title>Open Url Activity for IE8</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2008/03/09/open-url-activity-for-ie8.aspx" /><id>http://weblogs.asp.net/pschneider/archive/2008/03/09/open-url-activity-for-ie8.aspx</id><published>2008-03-09T19:15:29Z</published><updated>2008-03-09T19:15:29Z</updated><content type="html">&lt;p&gt;More or less often you find Url's in webpages (for example in forum comments) which are not hyperlinked.&lt;/p&gt;  &lt;p&gt;You then Copy and Paste the Url into the Browser's address bar to open it. With this little IE8 activity you can open the Url via the activity smarttag.    &lt;br /&gt;&lt;a href="http://weblogs.asp.net/blogs/pschneider/WindowsLiveWriter/OpenUrlActivityforIE8_11CDB/OpenUrlActivity_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="OpenUrlActivity" src="http://weblogs.asp.net/blogs/pschneider/WindowsLiveWriter/OpenUrlActivityforIE8_11CDB/OpenUrlActivity_thumb.jpg" width="455" height="299" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As the {selection} variable is not accepted in the action attribute of the execute element, I've entered the [your domain] placeholder, which you might want to change to your domain to get the sample running.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;      &lt;br /&gt;&amp;lt;openServiceDescription xmlns=&amp;quot;&lt;/font&gt;&lt;a href="http://www.microsoft.com/schemas/openservicedescription/1.0" ?="?"&gt;&lt;font face="Courier New"&gt;http://www.microsoft.com/schemas/openservicedescription/1.0&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;&amp;gt;      &lt;br /&gt;&amp;lt;homepageUrl&amp;gt;&lt;/font&gt;&lt;font face="Courier New"&gt;http://[your domain]&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;lt;/homepageUrl&amp;gt;      &lt;br /&gt;&amp;lt;display&amp;gt;       &lt;br /&gt;&amp;lt;name&amp;gt;Open URL in Browser&amp;lt;/name&amp;gt;       &lt;br /&gt;&amp;lt;icon&amp;gt;&lt;/font&gt;&lt;a href="http://www.live.com/favicon.ico"&gt;&lt;font face="Courier New"&gt;http://www.live.com/favicon.ico&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;&amp;lt;/icon&amp;gt;      &lt;br /&gt;&amp;lt;/display&amp;gt;       &lt;br /&gt;&amp;lt;activity category=&amp;quot;share&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;activityAction context=&amp;quot;selection&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;preview action=&amp;quot; &lt;/font&gt;&lt;a href="http://[your domain]/Redirect.aspx" ?="?"&gt;&lt;font face="Courier New"&gt;http://[your domain]/Redirect.aspx&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;parameter name=&amp;quot;url&amp;quot; value=&amp;quot;{selection}&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/preview&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;execute action=&amp;quot; &lt;/font&gt;&lt;a href="http://[your domain]/Redirect.aspx" ?="?"&gt;&lt;font face="Courier New"&gt;http://[your domain]/Redirect.aspx&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;parameter name=&amp;quot;url&amp;quot; value=&amp;quot;{selection}&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/execute&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;/activityAction&amp;gt;       &lt;br /&gt;&amp;lt;/activity&amp;gt;       &lt;br /&gt;&amp;lt;/openServiceDescription&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;To get this sample running save the above code snippet to a XML file and upload it to [your domain] and save it as OpenUrlActivity.xml&lt;/p&gt;  &lt;p&gt;You then need a little &amp;quot;install&amp;quot; routine:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;button onclick=&amp;quot;window.external.addService('&lt;/font&gt;&lt;a href="http://[your domain]/OpenUrlActivity.xml')" ?="?"&gt;&lt;font face="Courier New"&gt;http://[your domain]/OpenUrlActivity.xml')&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;&amp;gt;Add OpenUrl Activity      &lt;br /&gt;&amp;lt;/button&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Needless to say that you also need the Redirect.aspx where you redirect the user to the value passed with the url parameter. &lt;/p&gt;  &lt;p&gt;For a detailed description of the Activity XML Format see &lt;a title="http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&amp;amp;ReleaseId=566" href="http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&amp;amp;ReleaseId=566"&gt;http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&amp;amp;ReleaseId=566&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5940953" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author><category term="Tipps &amp; Tricks" scheme="http://weblogs.asp.net/pschneider/archive/tags/Tipps+_2600_+Tricks/default.aspx" /><category term="General Software Development" scheme="http://weblogs.asp.net/pschneider/archive/tags/General+Software+Development/default.aspx" /></entry><entry><title>Academic Community Launch 2008 Austria</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2008/03/03/academic-community-launch-2008-austria.aspx" /><id>http://weblogs.asp.net/pschneider/archive/2008/03/03/academic-community-launch-2008-austria.aspx</id><published>2008-03-03T17:58:28Z</published><updated>2008-03-03T17:58:28Z</updated><content type="html">&lt;p&gt;&lt;a href="http://alexduggleby.com"&gt;Alex&lt;/a&gt;, &lt;a href="http://vb-magazin.de/forums/blogs/mario_meir-huber/default.aspx"&gt;Mario&lt;/a&gt;, &lt;a href="http://www.imagineclub.at/"&gt;Horst&lt;/a&gt; and &lt;a href="http://liensberger.it/web/blog/"&gt;Christian&lt;/a&gt; are organizing the so called &lt;a href="http://www.anuga.at"&gt;&amp;#8220;Academic Community Launch 2008&amp;#8243;&lt;/a&gt; in &lt;a href="http://en.wikipedia.org/wiki/Austria"&gt;Austria&lt;/a&gt;. &lt;img alt="8)" src="http://www.liensberger.it/web/blog/wp-includes/images/smilies/icon_cool.gif" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/pschneider/WindowsLiveWriter/AcademicCommunityLaunch2008Austria_10AC7/communitylaunch_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="251" alt="communitylaunch" src="http://weblogs.asp.net/blogs/pschneider/WindowsLiveWriter/AcademicCommunityLaunch2008Austria_10AC7/communitylaunch_thumb.png" width="375" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The community launch is &lt;strong&gt;free for students and interested people&lt;/strong&gt; (free as you don&amp;#8217;t have to pay any entry fee and you get something to drink and eat for free). They are going to talk about the new features in Visual Studio 2008 (Mario), the new data features in .NET 3.5, SQL Server 2008 and beyond (Alex) and the new features in .NET 3.5 such as LINQ, anonymous types, lambda expressions, XML literals, own LINQ providers, &amp;#8230; (Christian).&lt;/p&gt;  &lt;p&gt;The talks are going to be in German and they will tour all Austria; including &lt;a href="http://en.wikipedia.org/wiki/Salzburg"&gt;Salzburg&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Linz"&gt;Linz&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Hagenberg"&gt;Hagenberg&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Innsbruck"&gt;Innsbruck&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Wien"&gt;Wien&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Graz"&gt;Graz&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Klagenfurt"&gt;Klagenfurt&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5907031" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author><category term="Community" scheme="http://weblogs.asp.net/pschneider/archive/tags/Community/default.aspx" /></entry><entry><title>SQL Server 2008 gratis E-Book</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2008/03/03/sql-server-2008-gratis-e-book.aspx" /><id>http://weblogs.asp.net/pschneider/archive/2008/03/03/sql-server-2008-gratis-e-book.aspx</id><published>2008-03-03T12:03:31Z</published><updated>2008-03-03T12:03:31Z</updated><content type="html">&lt;p&gt;Auf &lt;a title="http://csna01.libredigital.com/?urss1q2we6" href="http://csna01.libredigital.com/?urss1q2we6"&gt;http://csna01.libredigital.com/?urss1q2we6&lt;/a&gt; kann man zur Zeit die E-Book Version von Peter DeBetta's Buch &amp;quot;&lt;strong&gt;Introduction SQL Server 2008&lt;/strong&gt;&amp;quot; herunterladen (Chapter 1: Declarative Management Framework). F&amp;#252;r registrierte Benutzer gibt es ein zus&amp;#228;tzliches Chapter (Transact-SQL Enhancement).&lt;/p&gt;  &lt;p&gt;F&amp;#252;r weitere E-Learning Angebote einfach auf &lt;a title="http://www.microsoft.com/learning/sql/2008/default.mspx" href="http://www.microsoft.com/learning/sql/2008/default.mspx"&gt;http://www.microsoft.com/learning/sql/2008/default.mspx&lt;/a&gt; vorbeischauen...&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5905498" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author><category term="SQL Server" scheme="http://weblogs.asp.net/pschneider/archive/tags/SQL+Server/default.aspx" /></entry><entry><title>Silverlight Snow Effect</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2007/12/06/silverlight-snow-effect.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="25979" href="http://weblogs.asp.net/pschneider/attachment/5413724.ashx" /><id>http://weblogs.asp.net/pschneider/archive/2007/12/06/silverlight-snow-effect.aspx</id><published>2007-12-06T19:57:00Z</published><updated>2007-12-06T19:57:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;Old but nice effect. Download the source (see attachment of this post) and feel free to use it. Yet it comes without any warranty.. ;-)&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5413724" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author><category term="Silverlight" scheme="http://weblogs.asp.net/pschneider/archive/tags/Silverlight/default.aspx" /></entry><entry><title>Brainfuck Compiler and Interpreter in Powershell</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2007/04/08/brainf-compiler-and-interpreter-in-powershell.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="1195" href="http://weblogs.asp.net/pschneider/attachment/2195523.ashx" /><id>http://weblogs.asp.net/pschneider/archive/2007/04/08/brainf-compiler-and-interpreter-in-powershell.aspx</id><published>2007-04-08T09:23:00Z</published><updated>2007-04-08T09:23:00Z</updated><content type="html">&lt;p&gt;Surley some of you know the Brainfuck programming language... there are many compilers and interpreters around, yet I haven&amp;#39;t found some for powershell... so here we go:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Powershell Brainfuck Interpreter:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="1"&gt;param ($i) &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="1"&gt;$t = @{ &amp;#39;&amp;gt;&amp;#39;=&amp;#39;$p++;&amp;#39;;&lt;br /&gt;&amp;#39;&amp;lt;&amp;#39;=&amp;#39;$p--;&amp;#39;;&lt;br /&gt;&amp;#39;+&amp;#39;=&amp;#39;$m[$p]++&amp;#39;;&lt;br /&gt;&amp;#39;-&amp;#39;=&amp;#39;$m[$p]--&amp;#39;;&lt;br /&gt;&amp;#39;.&amp;#39;=&amp;#39;write-host $([char]$m[$p]) -n &amp;#39;;&lt;br /&gt;&amp;#39;,&amp;#39;=&amp;#39;$m[$p]=$host.ui.ReadLine() &amp;#39;;&lt;br /&gt;&amp;#39;[&amp;#39;=&amp;#39;while ($m[$p] -ne 0) {&amp;#39;;&lt;br /&gt;&amp;#39;]&amp;#39;=&amp;#39;}&amp;#39;;&lt;br /&gt;} &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="1"&gt;$c = &amp;#39;$p=0;$m=new-object &amp;quot;byte[]&amp;quot; 32768&amp;#39;+&amp;quot;`n&amp;quot; ;&amp;nbsp;gc $i -Enc Byte -r 1 | % {$c+=$t[&amp;quot;$([char]$_)&amp;quot;]+&amp;quot;`n&amp;quot;} &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="1"&gt;invoke-expression $c &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Powershell Brainfuck Compiler:&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="1"&gt;param ( [string] $infile = $(throw &amp;quot;Please specify input file (.b)&amp;quot;),&lt;br /&gt;[string] $outfile = $(throw &amp;quot;Please specify output file (.cs)&amp;quot;),&lt;br /&gt;[switch] $run = $false&lt;br /&gt;) &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="1"&gt;$csc = (join-path ($env:windir) Microsoft.NET\Framework\v2.0.50727\csc.exe) &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="1"&gt;$transpose = @{&amp;#39;&amp;gt;&amp;#39; = &amp;#39;p++;&amp;#39;;&lt;br /&gt;&amp;#39;&amp;lt;&amp;#39; = &amp;#39;p--;&amp;#39;;&lt;br /&gt;&amp;#39;+&amp;#39; = &amp;#39;m[p]++;&amp;#39;;&lt;br /&gt;&amp;#39;-&amp;#39; = &amp;#39;m[p]--;&amp;#39;;&lt;br /&gt;&amp;#39;.&amp;#39; = &amp;#39;Console.Write(m[p]);&amp;#39;;&lt;br /&gt;&amp;#39;,&amp;#39; = &amp;#39;m[p]=Console.ReadLine();&amp;#39;;&lt;br /&gt;&amp;#39;[&amp;#39; = &amp;quot;while (m[p]!=0) {&amp;quot;&lt;br /&gt;&amp;#39;]&amp;#39; = &amp;#39;}&amp;#39;;&lt;br /&gt;} &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="1"&gt;$header = @&amp;quot;&lt;br /&gt;using System;&lt;br /&gt;public class Program {&lt;br /&gt;public static void Main() {&lt;br /&gt;int p=0;&lt;br /&gt;char[] m=new char[32768];&lt;br /&gt;&amp;quot;@ &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="1"&gt;if ($(test-path $outfile)) { rm $outfile | out-null }&lt;br /&gt;$header | out-file $outfile -append &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="1"&gt;get-content $infile -encoding Byte -readcount 1 | &lt;br /&gt;% { $transpose[&amp;quot;$([char]$_)&amp;quot;] } | out-file $outfile -append &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="1"&gt;&amp;quot;}}&amp;quot; | out-file $outfile -append &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="1"&gt;&amp;amp; $csc `/target:exe $outfile | out-null &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="1"&gt;if ($run) { &lt;br /&gt;$outfile = $outfile.Replace(&amp;quot;.cs&amp;quot;,&amp;quot;.exe&amp;quot;)&lt;br /&gt;&amp;amp; .`/$outfile &lt;br /&gt;}&lt;/font&gt; &lt;/p&gt;&lt;p&gt;You can find the both script files (compiler and interpreter) in the attachment of this post.&lt;/p&gt;&lt;p&gt;Have fun!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=2195523" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author><category term="C#" scheme="http://weblogs.asp.net/pschneider/archive/tags/C_2300_/default.aspx" /><category term="Powershell" scheme="http://weblogs.asp.net/pschneider/archive/tags/Powershell/default.aspx" /></entry><entry><title>MSDN Briefing: MSBuild Unveiled</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2007/02/28/msdn-briefing-msbuild-unveiled.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="956785" href="http://weblogs.asp.net/pschneider/attachment/2145412.ashx" /><id>http://weblogs.asp.net/pschneider/archive/2007/02/28/msdn-briefing-msbuild-unveiled.aspx</id><published>2007-03-01T03:15:00Z</published><updated>2007-03-01T03:15:00Z</updated><content type="html">&lt;p&gt;Am 28.2.2007 fand in Wien das MSDN Briefing mit dem Thema &amp;quot;&lt;a href="http://blogs.msdn.com/msdnat/archive/2007/02/06/msdn-briefing-28-feb-2007-msbuild.aspx" target="_blank"&gt;MSBuild Unveiled&lt;/a&gt;&amp;quot; statt. &lt;/p&gt;&lt;p&gt;Ihr k&amp;ouml;nnt die Pr&amp;auml;sentation hier im Anhang herunterladen. &lt;/p&gt;&lt;p&gt;Nach dem Briefing sind weitere Fragen aufgetaucht, unter anderem, wie kann man Solutions programmatisch builden und VC++ Projekte mit MSBuild erstellen lassen.&lt;br /&gt;&lt;br /&gt;Hier ein kleines Code Snippet, um eine Solution mit der Build Engine in der Release Configuration f&amp;uuml;r die X64 Platform zu builden:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;Engine&lt;/span&gt; engine = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Engine&lt;/span&gt;(&lt;span style="color: #a31515"&gt;@&amp;quot;C:\Windows\Microsoft.NET\Framework\v2.0.50727&amp;quot;&lt;/span&gt;);

&lt;span style="color: #2b91af"&gt;Project&lt;/span&gt; solution = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Project&lt;/span&gt;(engine);
solution.Load(&lt;span style="color: #a31515"&gt;@&amp;quot;D:\Samples\SampleApplication.sln&amp;quot;&lt;/span&gt;);

solution.SetProperty(&lt;span style="color: #a31515"&gt;&amp;quot;Configuration&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Release&amp;quot;&lt;/span&gt;);
solution.SetProperty(&lt;span style="color: #a31515"&gt;&amp;quot;Platform&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;X64&amp;quot;&lt;/span&gt;);

solution.Build();&lt;/pre&gt;&lt;p&gt;Ben&amp;ouml;tigt wird lediglich eine Referenz auf Microsoft.Build.BuildEngine.&lt;/p&gt;&lt;p&gt;VC++ Projekte: Nicht bzw. nur teilweise machbar. Geplant ist das ganze erst nach dem Orcas (n&amp;auml;chste Visual Studio Version) Release... &lt;/p&gt;&lt;p&gt;Es gibt jedoch einen VCBuild Task (siehe hierf&amp;uuml;r &lt;a href="http://msdn2.microsoft.com/en-us/library/8xcy2245.aspx"&gt;http://msdn2.microsoft.com/en-us/library/8xcy2245.aspx&lt;/a&gt;)&lt;br /&gt;F&amp;uuml;r einfachere VC++ Projekte sollte das funktionieren... &lt;/p&gt;&lt;p&gt;Hier aber ein paar Links zum Weiterlesen: &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/06/InsideMSBuild/"&gt;http://msdn.microsoft.com/msdnmag/issues/06/06/InsideMSBuild/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/0k6kkbsd.aspx"&gt;http://msdn2.microsoft.com/en-us/library/0k6kkbsd.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msbuildtasks.tigris.org/"&gt;http://msbuildtasks.tigris.org/&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Die Literatur zu MSBuild ist nicht gerade vielf&amp;auml;ltig, hier dennoch eine kleine Buchempfehlung: &lt;/p&gt;&lt;p&gt;&lt;table border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;img border="1" height="75" src="http://ec2.images-amazon.com/images/P/1590596528.01._SCTHUMBZZZ_.jpg" width="57" /&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;strong&gt;Deploying .NET Applications: Learning MSBuild and ClickOnce (Expert&amp;#39;s Voice in .Net)&lt;/strong&gt;&lt;br /&gt;by Sayed Y. Hashimi, Sayed Ibrahim Hashimi&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/gp/redirect.html%3FASIN=1590596528%26tag=ws%26lcode=sp1%26cID=2025%26ccmID=165953%26location=/o/ASIN/1590596528%253FSubscriptionId=0525E2PQ81DD7ZTWTK82"&gt;Read more about this title...&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=2145412" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author><category term="MsBuild" scheme="http://weblogs.asp.net/pschneider/archive/tags/MsBuild/default.aspx" /></entry><entry><title>MVP Podcast auf Microsoft Podcast Network Austria</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2007/01/29/mvp-podcast-auf-microsoft-podcast-network-austria.aspx" /><id>http://weblogs.asp.net/pschneider/archive/2007/01/29/mvp-podcast-auf-microsoft-podcast-network-austria.aspx</id><published>2007-01-29T13:58:48Z</published><updated>2007-01-29T13:58:48Z</updated><content type="html">&lt;p&gt;MVPs sind Experten, die sich in der Microsoft Community engagieren. Erfahren Sie im Gespräch mit 3 MVPs und dem MVP Betreuer von Microsoft, was einen guten MVP ausmacht, wie man MVP wird und Vieles mehr! Erfahren Sie mehr im Interview auf &lt;a href="http://blogs.msdn.com/talk/archive/2007/01/29/MVPs.aspx"&gt;MSDN Talk&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=1491176" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author><category term="Podcast" scheme="http://weblogs.asp.net/pschneider/archive/tags/Podcast/default.aspx" /></entry><entry><title>Powershell Usergroup Talk</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2007/01/18/powershell-usergroup-talk.aspx" /><id>http://weblogs.asp.net/pschneider/archive/2007/01/18/powershell-usergroup-talk.aspx</id><published>2007-01-18T09:59:02Z</published><updated>2007-01-18T09:59:02Z</updated><content type="html">&lt;p&gt;Am Mittwoch dem 31.01.2007 findet ab 18:30 Uhr das nächste Meeting der &lt;a href="http://www.ugwa.net/"&gt;.NET Usergroup West Austria&lt;/a&gt; statt. 
&lt;/p&gt;&lt;p&gt;Thematisch werden wir uns diesmal mit der Microsoft Powershell beschäftigen. 
&lt;/p&gt;&lt;p&gt;Unter anderem:
&lt;/p&gt;&lt;p&gt;• Überblick über die neue Shell
&lt;/p&gt;&lt;p&gt;• Möglichkeiten
&lt;/p&gt;&lt;p&gt;• Programmierung von SnapIns
&lt;/p&gt;&lt;p&gt;• &lt;a href="http://www.codeplex.com/PowerShellCX"&gt;Powershell Community Extensions&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;• Datenvisualisierung mit &lt;a href="http://www.powergadgets.com"&gt;Powergadgets&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;• Praxisnah und anhand von Beispielen
&lt;/p&gt;&lt;p&gt;&lt;br/&gt;Wir würden uns über Euer Kommen freuen, Anmeldung unter &lt;a href="http://register.ugwa.net"&gt;http://register.ugwa.net&lt;/a&gt; erwünscht.
&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=1429874" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author><category term="Powershell; Usergroup" scheme="http://weblogs.asp.net/pschneider/archive/tags/Powershell_3B00_+Usergroup/default.aspx" /></entry><entry><title>Get-DocProps Cmdlet for Powershell</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2006/12/10/get-docprops-cmdlet-for-powershell.aspx" /><id>http://weblogs.asp.net/pschneider/archive/2006/12/10/get-docprops-cmdlet-for-powershell.aspx</id><published>2006-12-10T13:08:00Z</published><updated>2006-12-10T13:08:00Z</updated><content type="html">&lt;p&gt;I&amp;#39;ve written a small and rather simple powershell cmdlet which allows you to list the core and application properties of office documents, so that you can do something like this: &lt;/p&gt;&lt;p&gt;Samples: &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Courier New"&gt;Get-DocProps &amp;ndash;path &amp;quot;*.docx&amp;quot; | where { $_.Creator &amp;ndash;eq &amp;quot;John Doe&amp;quot; } &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Courier New"&gt;Get-ChildItem &amp;quot;*.docx&amp;quot; | get-docprops | where { $_.Lines &amp;ndash;gt 100 } | select Path,Lines &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Courier New"&gt;Get-ChildItem * -include &amp;quot;*.docx&amp;quot;,&amp;quot;*.xlsx&amp;quot; &amp;ndash;recurse | get-docprops | select Path, Creator, Lines, Paragraphs &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Courier New"&gt;Get-ChildItem * -include &amp;quot;*.docx&amp;quot; &amp;ndash;recurse | get-docprops | measure-object Words,Lines,Paragraphs &amp;ndash;sum &amp;ndash;min &amp;ndash;max -ave &lt;/span&gt;&lt;/p&gt;&lt;p&gt;The Cmdlet itself reads the &lt;strong&gt;docProps/app.xml&lt;/strong&gt; and &lt;strong&gt;docProps/core.xml&lt;/strong&gt; files inside Office 2007 documents using the &lt;strong&gt;System.IO.Packaging&lt;/strong&gt; namespace, so therefore install &lt;strong&gt;.NET Framework 3.0 &lt;/strong&gt;to use this cmdlet. &lt;/p&gt;&lt;p&gt;You can download the &lt;a href="http://www.ugwa.net/GetDocPropsCmdlet/GetDocPropsCmdletSetup.msi"&gt;DocProps Cmdlet here&lt;/a&gt;. (No warranty, provided &amp;quot;AS IS&amp;quot;, use at your own risk ;-)) If you are interested in the source code just drop me a mail. &lt;/p&gt;&lt;p&gt;After installation just run &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Courier New"&gt;add-pssnapin DocProps.Snapin&lt;/span&gt; &lt;/p&gt;&lt;p&gt;at your powershell command prompt and enjoy. &lt;/p&gt;&lt;p&gt;&lt;img height="353" src="http://www.ugwa.net/Images/121006_1308_GetDocProps1.png" width="458" /&gt; &lt;/p&gt;&lt;p&gt;Here is a list of the core properties: &lt;/p&gt;&lt;div&gt;&lt;table border="0" style="border-collapse: collapse"&gt;&lt;colgroup span="1"&gt;&lt;col span="1" style="width: 109px"&gt;&lt;/col&gt;&lt;col span="1" style="width: 71px"&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr style="background: black"&gt;&lt;td style="padding-right: 7px; border-top: black 1pt solid; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;span style="color: white"&gt;&lt;strong&gt;Property Name&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: black 1pt solid; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;span style="color: white"&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Created&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;DateTime&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Creator&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Keywords&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Language&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;LastModifiedBy&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;LastPrinted&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;DateTime&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Modified&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;DateTime&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Revision&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Subject&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Title&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Version&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Word Documents additionally have following properties: &lt;/p&gt;&lt;div&gt;&lt;table border="0" style="border-collapse: collapse"&gt;&lt;colgroup span="1"&gt;&lt;col span="1" style="width: 150px"&gt;&lt;/col&gt;&lt;col span="1" style="width: 62px"&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr style="background: black"&gt;&lt;td style="padding-right: 7px; border-top: black 1pt solid; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;span style="color: white"&gt;&lt;strong&gt;Property Name&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: black 1pt solid; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;span style="color: white"&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Template&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;TotalTime&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Pages&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;Int32&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Words&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;Int32&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Characters&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;Int32&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Application&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;DocSecurity&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Lines&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;Int32&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Paragraphs&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;Int32&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;ScaleCrop&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;Company&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;LinksUpToDate&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;Boolean&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;CharactersWithSpaces&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;Int32&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;SharedDoc&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;Boolean&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;HyperlinksChanged&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;Boolean&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: black 1pt solid; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;&lt;strong&gt;AppVersion&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border-right: black 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: black 1pt solid" valign="middle"&gt;&lt;p&gt;String&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;I also run into some implementation, which uses &lt;a href="http://www.codeproject.com/useritems/wdscmdlet.asp"&gt;Windows Search&lt;/a&gt; to filter for properties. &lt;/p&gt;&lt;p&gt;For several more cmdlets visit the &lt;a href="http://www.codeplex.com/PowerShellCX"&gt;Powershell Community Extensions Project&lt;/a&gt; at Codeplex. &lt;/p&gt;&lt;p&gt;Right at the moment there&amp;#39;s just a get-docprop cmdlet included in the setup, the &lt;strong&gt;set-docprop&lt;/strong&gt; will follow in a few days, so come back again ;-)&lt;br /&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=1205669" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author><category term="C#" scheme="http://weblogs.asp.net/pschneider/archive/tags/C_2300_/default.aspx" /><category term="Powershell" scheme="http://weblogs.asp.net/pschneider/archive/tags/Powershell/default.aspx" /><category term="General Software Development" scheme="http://weblogs.asp.net/pschneider/archive/tags/General+Software+Development/default.aspx" /></entry><entry><title>Powershell &amp; Sql Server Usergroup Talk</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/pschneider/archive/2006/12/03/powershell-sql-server-usergroup-talk.aspx" /><id>http://weblogs.asp.net/pschneider/archive/2006/12/03/powershell-sql-server-usergroup-talk.aspx</id><published>2006-12-03T09:50:00Z</published><updated>2006-12-03T09:50:00Z</updated><content type="html">&lt;p&gt;Next week I&amp;#39;m going to have a talk for the Sql Server Usergroup located in Vienna, Austria.&lt;br /&gt;&lt;br /&gt;Following topics will be covered: &lt;/p&gt;&lt;ul style="margin-left: 72pt"&gt;&lt;li&gt;Overview of Powershell &lt;/li&gt;&lt;li&gt;Powershell &amp;amp; .NET Integration &lt;/li&gt;&lt;li&gt;Usage of Sql Management Objects with Powershell &lt;/li&gt;&lt;li&gt;Data Visualization and Graphical Monitoring &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you are interested in this talk for your Usergroup feel free to contact me.&lt;br /&gt;&lt;br /&gt;Registration for the upcoming event is open &lt;a href="http://www.bluebridge.co.at/events/registration.aspx?eventId=9a435bf82ad3470c88448807bba5bb5b"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=1116122" width="1" height="1"&gt;</content><author><name>pschneider</name><uri>http://weblogs.asp.net/members/pschneider.aspx</uri></author><category term="SQL Server" scheme="http://weblogs.asp.net/pschneider/archive/tags/SQL+Server/default.aspx" /><category term="Usergroup" scheme="http://weblogs.asp.net/pschneider/archive/tags/Usergroup/default.aspx" /><category term="Powershell" scheme="http://weblogs.asp.net/pschneider/archive/tags/Powershell/default.aspx" /></entry></feed>