<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1400278338614647416</id><updated>2012-01-30T20:37:19.057-08:00</updated><category term='C#'/><category term='cmdlets'/><category term='PowerShell'/><category term='SCCM'/><category term='documentation'/><category term='poshboard'/><category term='Techdays'/><category term='Podcast'/><category term='Sliverlight'/><category term='MindMap'/><category term='ASP'/><category term='Dynamic Class'/><category term='System Center'/><category term='codeplex'/><category term='PowerShellPlus'/><category term='widget'/><category term='WPF'/><category term='AgDatagrid'/><category term='Multitouch'/><category term='Silverlight'/><category term='ASP.NET'/><category term='Dashboard'/><category term='Datagrid'/><category term='0.4'/><title type='text'>DevInfra-US</title><subtitle type='html'>Microsoft Infrastructure Development solutions with PowerShell, C#, ASP.NET and silverlight... 

Best Effort English translation from Devinfra.blogspot.com :)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-4530019103212643366</id><published>2011-07-22T05:54:00.002-07:00</published><updated>2011-07-22T05:56:22.482-07:00</updated><title type='text'>PowerWPF:  PowerShell WPF project template</title><content type='html'>I've just posted PowerWPF at codeplex: &lt;a href="http://powerwpf.codeplex.com/"&gt;http://PowerWPF.codeplex.com&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-UcxPrMiG2EY/TilzYUMjylI/AAAAAAAAAYw/MlNWJU86Z7E/s1600/PowerWPF.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 169px;" src="http://4.bp.blogspot.com/-UcxPrMiG2EY/TilzYUMjylI/AAAAAAAAAYw/MlNWJU86Z7E/s320/PowerWPF.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5632159670578956882" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: rgb(48, 51, 45); font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; font-size: 13px; "&gt;The goal of this project is to ease the creation of WPF application for PowerShell people, that are &lt;b&gt;absolute beginners in WPF development&lt;/b&gt;. We took care of all the PowerShell management functions (asynchronous calls, pipeline/runspace creation, etc...), leaving only the easiest way to call PowerShell engine and get its output. you just need to create your UI using Visual studio, either by drag n drop or by XAML code, add a few lines of C# code and you're done.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(48, 51, 45); font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; font-size: 13px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;I'll post a tutorial in the coming days.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-4530019103212643366?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/4530019103212643366/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=4530019103212643366' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/4530019103212643366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/4530019103212643366'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2011/07/powerwpf-powershell-wpf-project_22.html' title='PowerWPF:  PowerShell WPF project template'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-UcxPrMiG2EY/TilzYUMjylI/AAAAAAAAAYw/MlNWJU86Z7E/s72-c/PowerWPF.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-149866928593160956</id><published>2011-07-22T05:54:00.001-07:00</published><updated>2011-07-22T05:55:33.047-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PowerWPF:  PowerShell WPF project template</title><content type='html'>I've just posted PowerWPF at codeplex: &lt;a href="http://PowerWPF.codeplex.com"&gt;http://PowerWPF.codeplex.com&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(48, 51, 45); font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; font-size: 13px; "&gt;The goal of this project is to ease the creation of WPF application for PowerShell people, that are &lt;b&gt;absolute beginners in WPF development&lt;/b&gt;. We took care of all the PowerShell management functions (asynchronous calls, pipeline/runspace creation, etc...), leaving only the easiest way to call PowerShell engine and get its output. you just need to create your UI using Visual studio, either by drag n drop or by XAML code, add a few lines of C# code and you're done.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(48, 51, 45); font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; font-size: 13px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   &gt;I'll post a tutorial in the coming days.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-149866928593160956?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/149866928593160956/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=149866928593160956' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/149866928593160956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/149866928593160956'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2011/07/powerwpf-powershell-wpf-project.html' title='PowerWPF:  PowerShell WPF project template'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-3976642557752800975</id><published>2011-07-11T07:34:00.001-07:00</published><updated>2011-07-11T07:35:51.577-07:00</updated><title type='text'>PoshBoard 4 Open Beta</title><content type='html'>PoshBoard 4, our free modular web portal powered by PowerShell is now in Public Beta!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can download it here: &lt;a href="http://www.poshboard.com"&gt;http://www.poshboard.com&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-3976642557752800975?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/3976642557752800975/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=3976642557752800975' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/3976642557752800975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/3976642557752800975'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2011/07/poshboard-4-open-beta_11.html' title='PoshBoard 4 Open Beta'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-4381250292094353595</id><published>2011-02-14T06:18:00.001-08:00</published><updated>2011-02-14T14:14:19.077-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Using PowerShell 2.0 from ASP.NET Part 1</title><content type='html'>&lt;p align="justify"&gt;In this post, you’ll find a step-by-step guide on PowerShell 2.0 integration in an ASP.NET project.&lt;/p&gt;  &lt;p align="justify"&gt;I want to show you here the most basic sample possible, we’ll extend this in the following post on this subject.&lt;/p&gt;  &lt;p align="justify"&gt;This sample targets PowerShell 2.0 with IIS 7.0, but it should work on IIS 6.0. also. You can use an Express version of visual studio.&lt;/p&gt;  &lt;p align="justify"&gt;Ok, let’s get started !&lt;/p&gt;  &lt;h1 align="justify"&gt;&lt;/h1&gt;  &lt;h1 align="justify"&gt;&lt;/h1&gt;  &lt;h3 align="justify"&gt;Project setup&lt;/h3&gt;  &lt;p align="justify"&gt;Open Visual Studio, choose File&amp;gt; New &amp;gt; Project&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/TVk5lSRlFyI/AAAAAAAAATo/izXOygKxL2c/s1600-h/tuto1_thumb1%5B2%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="tuto1_thumb1" border="0" alt="tuto1_thumb1" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVk5nhNHkoI/AAAAAAAAATs/O4M5F48G-Uk/tuto1_thumb1_thumb.png?imgmax=800" width="541" height="221" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Choose Web Project &amp;gt; ASP.NET Web Application.&lt;strong&gt; &lt;/strong&gt;Target any framework from 2.0 to 4.0 (this example was build targeting .NET 4.0)&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVk5oayQF9I/AAAAAAAAATw/ZWzJrGBBdc8/s1600-h/tuto2_thumb3%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="tuto2_thumb3" border="0" alt="tuto2_thumb3" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVk5o0MxEoI/AAAAAAAAAT0/IULA8mue5l4/tuto2_thumb3_thumb.jpg?imgmax=800" width="541" height="406" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Then we’ll add a reference to the PowerShell assembly called “System.Management.Automation”. Right click on References, choose “Add reference..”&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVk5p0KFPSI/AAAAAAAAAT4/2wdtFQEpY_A/s1600-h/tuto3_thumb2%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="tuto3_thumb2" border="0" alt="tuto3_thumb2" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVk5rKDka3I/AAAAAAAAAT8/1v3QGhOiuIY/tuto3_thumb2_thumb.jpg?imgmax=800" width="541" height="362" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Go to :&lt;/p&gt;  &lt;p align="justify"&gt;C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0&lt;/p&gt;  &lt;p align="justify"&gt;or&lt;/p&gt;  &lt;p align="justify"&gt;C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0 &lt;/p&gt;  &lt;p align="justify"&gt;For a x86 OS.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVk5sYO6fmI/AAAAAAAAAUA/ndoPv_9O4fo/s1600-h/tuto4_thumb2%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="tuto4_thumb2" border="0" alt="tuto4_thumb2" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVk5tkDLcrI/AAAAAAAAAUE/KzSLgmBg-XA/tuto4_thumb2_thumb.jpg?imgmax=800" width="479" height="401" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Now we can start building our GUI. &lt;/p&gt;  &lt;h3 align="justify"&gt;&lt;/h3&gt;  &lt;h3 align="justify"&gt;&lt;/h3&gt;  &lt;h3 align="justify"&gt;Create the GUI&lt;/h3&gt;  &lt;p align="justify"&gt;our GUI will be straight-forward : a textbox for PowerShell code, an execute button and a result textbox :&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/TVlMCDayOpI/AAAAAAAAAUI/-cz2uVsRdc4/s1600-h/tuto5%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto5" border="0" alt="tuto5" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMCvXSsXI/AAAAAAAAAUM/TfJrMVpzYVc/tuto5_thumb%5B1%5D.jpg?imgmax=800" width="506" height="433" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Here’s the ASP.NET code for our default.aspx page&lt;/p&gt;  &lt;div align="justify"&gt;   &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;     &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; color: black; " id="codeSnippet"&gt;       &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="background-color: #ffff00"&gt;&amp;lt;%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="PowerShellCall._Default" %&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;  &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: #800000"&gt;DOCTYPE&lt;/span&gt; &lt;span style="color: #ff0000"&gt;html&lt;/span&gt; &lt;span style="color: #ff0000"&gt;PUBLIC&lt;/span&gt; &lt;span style="color: #0000ff"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;  &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;html&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="server"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;  &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;form&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="form1"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="server"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;center&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;PowerShell Test&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;PowerShell Code&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;  &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:TextBox&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="PowerShellCodeBox"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="server"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TextMode&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="MultiLine"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Width&lt;/span&gt;=&lt;span style="color: #ff0000"&gt;700&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Height&lt;/span&gt;=&lt;span style="color: #ff0000"&gt;100&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:TextBox&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;  &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:Button&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="ExecuteCode"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="server"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Execute"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Width&lt;/span&gt;=&lt;span style="color: #ff0000"&gt;200&lt;/span&gt; &lt;span style="color: #ff0000"&gt;onclick&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="ExecuteCode_Click"&lt;/span&gt; &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt;                      &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt;  &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Result&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum28"&gt;  28:&lt;/span&gt;         &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum29"&gt;  29:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum30"&gt;  30:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:TextBox&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="ResultBox"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TextMode&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="MultiLine"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Width&lt;/span&gt;=&lt;span style="color: #ff0000"&gt;700&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Height&lt;/span&gt;=&lt;span style="color: #ff0000"&gt;200&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="server"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:TextBox&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum31"&gt;  31:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum32"&gt;  32:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum33"&gt;  33:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum34"&gt;  34:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;center&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum35"&gt;  35:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;form&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum36"&gt;  36:&lt;/span&gt;  &lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum37"&gt;  37:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum38"&gt;  38:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p align="justify"&gt;Our goal: when the user click on “Execute”, we want to launch the PowerShell code in the upper textbox and display script result on the bottom textbox.&lt;/p&gt;&lt;p align="justify"&gt;Let’s have a look to the code behind of our default.aspx page.&lt;/p&gt;&lt;h3 align="justify"&gt;Calling PowerShell 2.0 from Code-behind&lt;/h3&gt;&lt;p align="justify"&gt;As you can see on the aspx page, we have an “onclick” method on our button. You’ll find an onclick method defined in the .cs file  that will be called when we click on the button (ExecuteCode_Click)&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;div style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; MAX-HEIGHT: 200px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: silver 1px solid; CURSOR: text; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 4px" id="codeSnippetWrapper"&gt; &lt;div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; ExecuteCode_Click(&lt;span style="COLOR: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum2"&gt;   2:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum3"&gt;   3:&lt;/span&gt;             &lt;span style="COLOR: #008000"&gt;// Clean the Result TextBox&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum4"&gt;   4:&lt;/span&gt;             ResultBox.Text = &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;.Empty;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum5"&gt;   5:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum6"&gt;   6:&lt;/span&gt;             &lt;span style="COLOR: #008000"&gt;// Initialize PowerShell engine&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum7"&gt;   7:&lt;/span&gt;             var shell = PowerShell.Create();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum8"&gt;   8:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum9"&gt;   9:&lt;/span&gt;             &lt;span style="COLOR: #008000"&gt;// Add the script to the PowerShell object&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum10"&gt;  10:&lt;/span&gt;             shell.Commands.AddScript(PowerShellCodeBox.Text);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum11"&gt;  11:&lt;/span&gt;             &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum12"&gt;  12:&lt;/span&gt;             &lt;span style="COLOR: #008000"&gt;// Execute the script&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum13"&gt;  13:&lt;/span&gt;             var results = shell.Invoke();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum14"&gt;  14:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum15"&gt;  15:&lt;/span&gt;             &lt;span style="COLOR: #008000"&gt;// display results, with BaseObject converted to string&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum16"&gt;  16:&lt;/span&gt;             &lt;span style="COLOR: #008000"&gt;// Note : use |out-string for console-like output&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum17"&gt;  17:&lt;/span&gt;             &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (results.Count &gt; 0)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum18"&gt;  18:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum19"&gt;  19:&lt;/span&gt;                 &lt;span style="COLOR: #008000"&gt;// We use a string builder ton create our result text&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum20"&gt;  20:&lt;/span&gt;                 var builder = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; StringBuilder();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum21"&gt;  21:&lt;/span&gt;                 &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum22"&gt;  22:&lt;/span&gt;                 &lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt; (var psObject &lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt; results)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum23"&gt;  23:&lt;/span&gt;                 {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum24"&gt;  24:&lt;/span&gt;                     &lt;span style="COLOR: #008000"&gt;// Convert the Base Object to a string and append it to the string builder.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum25"&gt;  25:&lt;/span&gt;                     &lt;span style="COLOR: #008000"&gt;// Add \r\n for line breaks&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum26"&gt;  26:&lt;/span&gt;                     builder.Append(psObject.BaseObject.ToString() + &lt;span style="COLOR: #006080"&gt;"\r\n"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum27"&gt;  27:&lt;/span&gt;                 }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum28"&gt;  28:&lt;/span&gt;                 &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum29"&gt;  29:&lt;/span&gt;                 &lt;span style="COLOR: #008000"&gt;// Encode the string in HTML (prevent security issue with 'dangerous' caracters like &lt; &gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum30"&gt;  30:&lt;/span&gt;                 ResultBox.Text = Server.HtmlEncode(builder.ToString());&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum31"&gt;  31:&lt;/span&gt;             }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum32"&gt;  32:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: white; MARGIN: 0em; BORDER-LEFT-STYLE: none; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', Courier, Monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; BORDER-RIGHT-STYLE: none; FONT-SIZE: 8pt; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum33"&gt;  33:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p align="justify"&gt;Execution of PowerShell code is really simple in C#, we only need to follow these steps :&lt;/p&gt;&lt;p align="justify"&gt;&lt;span class="Apple-style-span" &gt;&lt;b&gt;update : &lt;/b&gt;&lt;i&gt;updated the code, we don't need runspace creation in this scenario, already available. (thanks to &lt;a href="http://www.nivot.ca/"&gt;Oisin&lt;/a&gt;). Added string builder and html encoding to prevent security warning when displaying some characters.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;1) Create a PowerShell Object&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;This object let us create pipeline, collect result /errors and so on.&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;2) Add the script&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;Here we add our script to our PowerShell object&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;3) Execute script&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;At last, we call the Invoke() Method to execute our command in a pipeline. This method returns a collection of PSObject.&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;4) Display result&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;Then, we browse this PSObject collection to display the result. Note that we call the “BaseObject” property of each PSObject, this property hold the original object that was decorated in the PSObject object.&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVlNEju12II/AAAAAAAAAWY/m3fIZiDyyjE/s1600-h/tuto5%5B7%5D.jpg"&gt;&lt;img style="text-align: center;background-image: none; border-bottom-width: 0px; border-bottom-style: initial; border-bottom-color: initial; border-left-width: 0px; border-left-style: initial; border-left-color: initial; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-top-style: initial; border-top-color: initial; border-right-width: 0px; border-right-style: initial; border-right-color: initial; padding-top: 0px; " title="tuto5" border="0" alt="tuto5" src="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVlNFkopnII/AAAAAAAAAWc/ZiM1XcrvKYk/tuto5_thumb%5B3%5D.jpg?imgmax=800" width="530" height="453" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;That’s it ! now if you build this project, you should be able to display the result of your script in the result TextBox.&lt;/p&gt;&lt;p align="justify"&gt;Now we’ll see how to publish this website, and how to specify a specific account for execution.&lt;/p&gt;&lt;h3 align="justify"&gt;Website publication&lt;/h3&gt;&lt;p align="justify"&gt;Now that we have a working sample, we’ll publish this website in IIS and specify a custom identity for code execution.&lt;/p&gt;&lt;p align="justify"&gt;Go to Build &amp;gt; Publish&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMDUec-AI/AAAAAAAAAUQ/AnE9GYDU_yU/s1600-h/tuto6%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto6" border="0" alt="tuto6" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMD81S-jI/AAAAAAAAAUU/VIL-dXT5JdY/tuto6_thumb%5B1%5D.jpg?imgmax=800" width="534" height="348" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Choose a target location (Inetpub/wwwroot is the default repository folder for IIS, but you can publish your website in any directory, as long as you set up access rights properly)&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVlMEQWyE2I/AAAAAAAAAUY/GK3ykpHzvCE/s1600-h/tuto7%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto7" border="0" alt="tuto7" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlME5QiwmI/AAAAAAAAAUc/mEf55rlRsyg/tuto7_thumb%5B2%5D.jpg?imgmax=800" width="390" height="348" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;After that, open IIS management console, right click on the default web site and select “Add Application”&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;Note :&lt;/strong&gt; you can also create a new website on your IIS server or delete the default website to create your own. Creating an application let you access your Website by it’s name like this : &lt;a href="http://localhost/MyApplication"&gt;http://localhost/&lt;strong&gt;MyApplication&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/TVlMFaRhQXI/AAAAAAAAAUg/623vmlUr4zs/s1600-h/tuto8%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto8" border="0" alt="tuto8" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMF6uOJ8I/AAAAAAAAAUk/0Ux_MK-W8UI/tuto8_thumb%5B1%5D.jpg?imgmax=800" width="511" height="334" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Gives a name to your application or website, then click “OK”&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMGQNnOCI/AAAAAAAAAUo/2Byon_dE2w8/s1600-h/tuto9%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto9" border="0" alt="tuto9" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMG0WeltI/AAAAAAAAAUs/RWcV0zm731s/tuto9_thumb%5B1%5D.jpg?imgmax=800" width="337" height="241" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Now your application is ready, we’ll now choose a custom identity for our website. This identity will be used to execute your PowerShell scripts. There are many ways to set identity for a website, we’ll cover in this first post the most basic ones.&lt;/p&gt;&lt;h4 align="justify"&gt;Anonymous authentication&lt;/h4&gt;&lt;p align="justify"&gt;This method is the easiest. We’ll define an anonymous authentication to our website, and choose a custom identity to run our commands. This is easy, but with severe drawbacks :&lt;/p&gt;&lt;p align="justify"&gt;Anyone can access our website and will execute commands with the identity provided (we can mitigate this with specific access rights on the website folder, but this is clearly not the most secured method, you’re warned !)&lt;/p&gt;&lt;p align="justify"&gt;Select your application, then click on the “Authentication” icon&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/TVlMHivADuI/AAAAAAAAAUw/ur0R01XOYqc/s1600-h/tuto10%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto10" border="0" alt="tuto10" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMH3txNRI/AAAAAAAAAU0/rbPX7nBe7BM/tuto10_thumb%5B1%5D.jpg?imgmax=800" width="491" height="321" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Right click on “anonymous authentication” and select “Activate”, then Edit…&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMIls76FI/AAAAAAAAAU4/KqqXplu09Rs/s1600-h/tuto11%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto11" border="0" alt="tuto11" src="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVlMI5xsdZI/AAAAAAAAAU8/iheWV25E7FU/tuto11_thumb%5B1%5D.jpg?imgmax=800" width="499" height="326" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Choose “Specific "User”, click Set&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMJWGgooI/AAAAAAAAAVA/O_GcEO4Khe0/s1600-h/tuto12%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto12" border="0" alt="tuto12" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMJkD_LzI/AAAAAAAAAVE/4s4J3xtfAiI/tuto12_thumb%5B2%5D.jpg?imgmax=800" width="358" height="192" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Then fill your service account identity&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/TVlMKB8SpsI/AAAAAAAAAVI/kHGmRKTRAeg/s1600-h/tuto13%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto13" border="0" alt="tuto13" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMKlrOasI/AAAAAAAAAVM/T1FjB4REhZ4/tuto13_thumb%5B1%5D.jpg?imgmax=800" width="328" height="252" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;That’s it : your code will be executed with this identity, regardless of the identity of the user.&lt;/p&gt;&lt;h4 align="justify"&gt;Application Pool Identity&lt;/h4&gt;&lt;p align="justify"&gt;In more evolved scenarii, we can disable anonymous authentication and still use a custom identity for our website execution. This identity is set in an “Application Pool”.&lt;/p&gt;&lt;p align="justify"&gt;Application Pools can be seen as an execution context for a website/web application (I make it short here), we won’t go in the details, but there’s many interesting features behind the application pool concept. One is to be able to set windows integrated authentication to authenticate user and use the application pool identity to run our code.&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;Note:&lt;/strong&gt; we can set an Application pool and still use anonymous authentication, in the previous screen you have the option to use the application pool identity for your anonymous connection.&lt;/p&gt;&lt;p align="justify"&gt;We’ll now setup our dedicated application pool for our test project.&lt;/p&gt;&lt;p align="justify"&gt;First, double click on “Application Pools” in the IIS console, and select “Add Application Pool”&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVlMLKtv9DI/AAAAAAAAAVQ/J98PDWp_32Y/s1600-h/tuto30%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto30" border="0" alt="tuto30" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMLrHDk2I/AAAAAAAAAVU/9vt0F2v2-4w/tuto30_thumb%5B1%5D.jpg?imgmax=800" width="529" height="212" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Name your application pool, choose the appropriate Framework and click “OK” (you can leave the managed pipeline mode as-is)&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVlMMN6zGNI/AAAAAAAAAVY/oeO3aWkkBBY/s1600-h/tuto31%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto31" border="0" alt="tuto31" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMMRjwXJI/AAAAAAAAAVc/YGq8IyDb0eI/tuto31_thumb.jpg?imgmax=800" width="244" height="220" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Select your application pool, click on the “Advanced Settings” menu&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMNAFp22I/AAAAAAAAAVg/rVeZ4gSwsYI/s1600-h/tuto32%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto32" border="0" alt="tuto32" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMNl6_vaI/AAAAAAAAAVk/bP8Zz8n6vts/tuto32_thumb%5B1%5D.jpg?imgmax=800" width="522" height="315" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Select Identity and click on the “…” button&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMOPQsqzI/AAAAAAAAAVo/IAHa0kbdOGc/s1600-h/tuto21%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto21" border="0" alt="tuto21" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMOgyHK0I/AAAAAAAAAVs/HJLEIIYuu9Q/tuto21_thumb%5B1%5D.jpg?imgmax=800" width="358" height="448" /&gt;&lt;/a&gt;&lt;/p&gt;Choose “Custom Account”, click on “Set…”&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMPK7loWI/AAAAAAAAAVw/7EPoRJnD_sw/s1600-h/tuto22%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto22" border="0" alt="tuto22" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMPfaDEDI/AAAAAAAAAV0/xe8Im3HPElg/tuto22_thumb%5B1%5D.jpg?imgmax=800" width="430" height="256" /&gt;&lt;/a&gt;&lt;p align="justify"&gt;Fill the form with your service account infos, then click ok.&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMP2CB21I/AAAAAAAAAV4/dO1N0Pef17Q/s1600-h/tuto23%5B5%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto23" border="0" alt="tuto23" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMQRIASUI/AAAAAAAAAV8/NtH8xgR5Lys/tuto23_thumb%5B3%5D.jpg?imgmax=800" width="315" height="253" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Click on your website and choose “Basic Settings”&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMRGnQxlI/AAAAAAAAAWA/9YFi50OBUW8/s1600-h/tuto33%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto33" border="0" alt="tuto33" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/TVlMRvimTDI/AAAAAAAAAWE/PunxSBB4SZQ/tuto33_thumb%5B2%5D.jpg?imgmax=800" width="558" height="345" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Click on “Select” and choose your new application pool&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/TVlMSAJa-wI/AAAAAAAAAWI/tNvpq9zvgBI/s1600-h/tuto34%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto34" border="0" alt="tuto34" src="http://lh4.ggpht.com/_Nb_tnJCL_Vw/TVlMSXH1QII/AAAAAAAAAWM/fRP9cq5MO0I/tuto34_thumb%5B1%5D.jpg?imgmax=800" width="430" height="308" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;If everything went fine, you should be able to display the current service account identity :&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/TVlMS8KYN8I/AAAAAAAAAWQ/YTEkKoGQplU/s1600-h/tuto25%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="tuto25" border="0" alt="tuto25" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVlMTZz8WoI/AAAAAAAAAWU/5-qZdjAWIBE/tuto25_thumb%5B1%5D.jpg?imgmax=800" width="500" height="411" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;source can be downloaded here :&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;iframe title="Preview" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:98px;height:115px;padding:0;background-color:#fcfcfc;" src="http://cid-d04381d7f0a60451.office.live.com/embedicon.aspx/DevInfra/PowerShell2AspNetPart1.zip"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;In the next post, we’ll see how to authenticate our website users and use ASP.NET forms data to configure our PowerShell script.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-4381250292094353595?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/4381250292094353595/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=4381250292094353595' title='15 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/4381250292094353595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/4381250292094353595'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2011/02/using-powershell-20-from-aspnet-part-1.html' title='Using PowerShell 2.0 from ASP.NET Part 1'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_Nb_tnJCL_Vw/TVk5nhNHkoI/AAAAAAAAATs/O4M5F48G-Uk/s72-c/tuto1_thumb1_thumb.png?imgmax=800' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-6249965768298442054</id><published>2011-02-01T13:24:00.001-08:00</published><updated>2011-02-01T13:24:54.864-08:00</updated><title type='text'></title><content type='html'>New PoshBoard website &lt;a href="http://www.poshboard.com"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-6249965768298442054?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/6249965768298442054/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=6249965768298442054' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/6249965768298442054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/6249965768298442054'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2011/02/new-poshboard-website-here.html' title=''/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-1078749637379287419</id><published>2010-04-06T13:25:00.001-07:00</published><updated>2010-04-06T13:25:59.645-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><title type='text'>PoshBoard 3.0 Video @TechDays 2010</title><content type='html'>&lt;p&gt;Here's a video with a demo of PoshBoard 3.0, taken durin the French TechDays 2010 :&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.programmez.com/video.php?video=95&amp;amp;titre=Quelques-technologies-presentees-aux-TechDays-2010"&gt;http://www.programmez.com/video.php?video=95&amp;amp;titre=Quelques-technologies-presentees-aux-TechDays-2010&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Thanks to &lt;a href="http://www.programmez.com/" target="_blank"&gt;Programmez!&lt;/a&gt;, &lt;a href="http://www.solutions-logiciels.com/" target="_blank"&gt;solutions logiciels&lt;/a&gt; ans &lt;a href="http://www.supinfo.com/fr/webtv.aspx" target="_blank"&gt;SupInfo Web TV&lt;/a&gt; for this cool presentation !&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-1078749637379287419?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/1078749637379287419/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=1078749637379287419' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/1078749637379287419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/1078749637379287419'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2010/04/poshboard-30-video-techdays-2010.html' title='PoshBoard 3.0 Video @TechDays 2010'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-3347639258750437077</id><published>2010-04-01T03:26:00.001-07:00</published><updated>2010-04-01T03:26:39.569-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><title type='text'>PoshBoard at the WPC 2010 : help wanted !</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana, tahoma, sans-serif; font-size: 13px; color: rgb(104, 101, 103); line-height: 20px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Hi all,&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;I would like to propose PoshBoard for a nomination at the next Windows Partner Conference in July. I'm looking for customer reference to support this proposal. If you like PoshBoard and uses it in production or test environments and got benefits from it, it would be very kind to send me a quick note on your PoshBoard usage and how it helps you improve your system management.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;You can send me a mail at this address : poshboard[at]gmail.com&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Thank you !&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-3347639258750437077?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/3347639258750437077/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=3347639258750437077' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/3347639258750437077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/3347639258750437077'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2010/04/poshboard-at-wpc-2010-help-wanted.html' title='PoshBoard at the WPC 2010 : help wanted !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-5876777762973966517</id><published>2010-01-06T02:34:00.000-08:00</published><updated>2010-01-06T02:35:57.466-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Multitouch'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight 3.0 Multitouch PoshBoard demo !</title><content type='html'>PoshBoard 3.0 will support Silverlight 3.0 multiTouch feature, and you'll be able to try it live at the next French MS TechDays in february.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.poshboard.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=35:poshboard-30-aux-ms-techdays-2010&amp;amp;catid=1:poshboard&amp;amp;Itemid=19&amp;amp;lang=en"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Infos &amp;amp; vidéo here&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-5876777762973966517?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/5876777762973966517/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=5876777762973966517' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/5876777762973966517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/5876777762973966517'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2010/01/silverlight-30-multitouch-poshboard.html' title='Silverlight 3.0 Multitouch PoshBoard demo !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-2116060639796518828</id><published>2009-12-09T13:46:00.000-08:00</published><updated>2009-12-09T13:49:41.996-08:00</updated><title type='text'>PoshBoard 2.5 available</title><content type='html'>New version of PoshBoard available, &lt;a href="http://www.poshboard.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=33:poshboard-25-video-introduction&amp;amp;catid=1:poshboard&amp;amp;Itemid=19&amp;amp;lang=en"&gt;read this&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-2116060639796518828?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/2116060639796518828/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=2116060639796518828' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/2116060639796518828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/2116060639796518828'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/12/poshboard-25-available.html' title='PoshBoard 2.5 available'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-8566373146674243031</id><published>2009-10-15T13:18:00.000-07:00</published><updated>2009-10-15T13:20:37.297-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><title type='text'>PoshBoard in Get-Scripting PodCast</title><content type='html'>I've made an interview with Alan and jonathan from Get-Scripting Podcast. Great guys, great meeting !&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://get-scripting.blogspot.com/2009/10/get-scripting-podcast-episode-13.html"&gt;http://get-scripting.blogspot.com/2009/10/get-scripting-podcast-episode-13.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Exclusive news about PoshBoard and future evolutions. Grab it now :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-8566373146674243031?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/8566373146674243031/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=8566373146674243031' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/8566373146674243031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/8566373146674243031'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/10/poshboard-in-get-scripting-podcast.html' title='PoshBoard in Get-Scripting PodCast'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-1932963992447061631</id><published>2009-10-15T08:29:00.000-07:00</published><updated>2009-10-15T08:38:42.508-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><title type='text'>Events management in PoshBoard 2 Part 1 published</title><content type='html'>I've published an article on events management in PoshBoard 2.0&lt;br /&gt;&lt;br /&gt;you can read it &lt;a href="http://www.poshboard.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=27%3Aworking-with-events&amp;amp;catid=5%3Atutorials&amp;amp;Itemid=8&amp;amp;lang=en"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-1932963992447061631?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/1932963992447061631/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=1932963992447061631' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/1932963992447061631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/1932963992447061631'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/10/events-management-in-poshboard-2-part-1.html' title='Events management in PoshBoard 2 Part 1 published'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-5592968996747472806</id><published>2009-10-12T09:48:00.000-07:00</published><updated>2009-10-12T09:50:01.172-07:00</updated><title type='text'>PoshBoard Out-PBChart and new PBDataGrid parameter</title><content type='html'>A new article on the new PoshBoard 2.0 version is available &lt;a href="http://www.poshboard.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=23:poshboard-201034-out-pbchart-new-datagrid-features-twitter-news&amp;amp;catid=1:poshboard&amp;amp;Itemid=19&amp;amp;lang=en"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Out-PBChart, Out-PBChartSerie and new DataGrid parameter !&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-5592968996747472806?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/5592968996747472806/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=5592968996747472806' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/5592968996747472806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/5592968996747472806'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/10/poshboard-out-pbchart-and-new.html' title='PoshBoard Out-PBChart and new PBDataGrid parameter'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-7000553095380605299</id><published>2009-10-09T06:33:00.000-07:00</published><updated>2009-10-09T06:45:04.049-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><title type='text'>PoshBoard 2.0.1027 available</title><content type='html'>&lt;b&gt;What's new in this version ?&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;Update 2.0.1027 (9th October 2009)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;[ADDED] “Dynamic Update” mode: when writing scripts, if Dynamic mode is set to off, the page isn't refreshed &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;in real time&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;[ADDED] KeyBoard shortcut for Dynamic Update mode: CTRL+U to enabled/disable this feature&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;[MODIFIED] Management layout&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;[ADDED] LiveUpdate settings for users in ConfigFile, you can manage this in the PoshBoard Configuration page&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;[MODIFIED] Default impersonation for SuperAdmins set to False&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;[ADDED] Two new buttons to Move Portals in list (Up/down)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;[ADDED] New embedded Samples&lt;/span&gt;&lt;/div&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif;color:#30332D;"&gt;&lt;span class="Apple-style-span"  style=" font-weight: normal;font-size:-webkit-xxx-large;"&gt;&lt;span class="Apple-style-span"    style="font-family:Georgia, serif;font-size:130%;color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-size:16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;div&gt;&lt;b&gt;Warning :&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;This new release add an attribute to users/groups in the config file. Older config file won't work with this version.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Simply Copy/paste your old script in the new config file, or add this attribute to every user/group :&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;LiveUpdate="True"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Example :&lt;/div&gt;&lt;div&gt;&lt;member name="Everyone" membertype="Group" accesstype="Administrator" default="True" impersonate="True"&gt;LiveUpdate="True"&lt;/b&gt; /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/b&gt;&lt;div&gt;You can use CTRL+U ShortCut to Enable or Disable the fact that PoshBoard send your script to the WCF Service when you stop typing (cool when you doesn't type as fast as you want :) )&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enjoy&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-7000553095380605299?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/7000553095380605299/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=7000553095380605299' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/7000553095380605299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/7000553095380605299'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/10/poshboard-201027-available.html' title='PoshBoard 2.0.1027 available'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-2074125997166900643</id><published>2009-10-02T04:35:00.000-07:00</published><updated>2009-10-04T15:08:45.556-07:00</updated><title type='text'>Now MVP PowerShell  :)</title><content type='html'>&lt;div style="text-align: left;"&gt;I was awarded MVP PowerShell !&lt;/div&gt;&lt;br /&gt;A great news that confort me to continue working on this fabulous language and promote it as much as I can :)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;span class="Apple-style-span" style=""&gt; &lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/SskcxeR79II/AAAAAAAAASI/hp-nVZCLQp4/s200/MVP.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5388870065392972930" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 124px; height: 50px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-2074125997166900643?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/2074125997166900643/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=2074125997166900643' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/2074125997166900643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/2074125997166900643'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/10/now-mvp-powershell.html' title='Now MVP PowerShell  :)'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Nb_tnJCL_Vw/SskcxeR79II/AAAAAAAAASI/hp-nVZCLQp4/s72-c/MVP.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-7285204146437283957</id><published>2009-09-29T05:03:00.001-07:00</published><updated>2009-09-29T05:04:02.749-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><title type='text'>PoshBoard 2.0 available !</title><content type='html'>A major upgrade of PoshBoard is available : &lt;a href="http://www.poshboard.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=19%3Aposhboard-20-available&amp;amp;catid=1%3Aposhboard&amp;amp;Itemid=3&amp;amp;lang=en"&gt;Informations and video preview here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-7285204146437283957?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/7285204146437283957/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=7285204146437283957' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/7285204146437283957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/7285204146437283957'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/09/poshboard-20-available.html' title='PoshBoard 2.0 available !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-8729758094389423345</id><published>2009-06-18T04:27:00.001-07:00</published><updated>2009-06-18T04:44:56.025-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='cmdlets'/><title type='text'>PoshBoard Cmdlets Part 1</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p align="justify"&gt;The first part of the PoshBoard cmdlets tutorial is available &lt;a href="http://www.poshboard.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=14:guide-poshboard-cmdlets-part-1&amp;amp;catid=5:tutorials&amp;amp;Itemid=8&amp;amp;lang=enhttp://www.poshboard.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=14:guide-poshboard-cmdlets-part-1&amp;amp;catid=5:tutorials&amp;amp;Itemid=8&amp;amp;lang=en"&gt;here on poshboard.com&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-8729758094389423345?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/8729758094389423345/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=8729758094389423345' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/8729758094389423345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/8729758094389423345'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/06/poshboard-cmdlets-part-1.html' title='PoshBoard Cmdlets Part 1'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-8937320034791073635</id><published>2009-06-16T16:02:00.001-07:00</published><updated>2009-06-18T03:39:20.551-07:00</updated><title type='text'>Poshboard PowerShell Snapin</title><content type='html'>&lt;h4&gt;&lt;a name="_Toc232878684"&gt;General Snapin and objects Architecture&lt;/a&gt;&lt;/h4&gt;  &lt;p align="justify"&gt;Poshboard comes with a PowerShell Snapin with several cmdlets that generate PowerShell custom objects. These objects are then converted to Silverlight controls in Poshboard. The properties / methods used for these cmdlets are equivalent of Silverlight controls properties.&lt;/p&gt;  &lt;p align="justify"&gt;The logic of Silverlight objects is respected: you’ll find the corresponding properties of Silverlight controls in the PowerShell objects (It ease the learning process as you’ll find Silverlight sample on internet that you can convert to Poshboard PowerShell objects).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjgkWuwr9nI/AAAAAAAAANA/rPl68JV1Q0c/s1600-h/clip_image002%5B9%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image002" border="0" alt="clip_image002" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjgkXTDBRhI/AAAAAAAAANE/meNXXw49gGw/clip_image002_thumb%5B6%5D.jpg?imgmax=800" width="493" height="373" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;b&gt;Note:&lt;/b&gt; not every Silverlight controls properties are available in Poshboard cmdlets, because they are not useful in the context of Poshboard (or due to a lack of time..). But the main idea was to keep the object model simple to understand. In the future, if some properties prove to be really needed, they will be added to the solution easely in future updates.&lt;/p&gt;  &lt;p align="justify"&gt;.NET developer that got previous experience on Silverlight development will also be able to rapidly develop PowerShell controls, as the logic is the same (but with the benefice of the Dynamic and model of PowerShell! )&lt;/p&gt;  &lt;h4&gt;Snapin relationship with PoshBoard and Silverlight&lt;/h4&gt;  &lt;p align="justify"&gt;Poshboard use WCF to enable communicate between Silverlight clients (your web page) and the Poshboard server. PowerShell objects are created by the user scripts, and these objects are then converted to Silverlight control and dynamically added to the Silverlight GUI, along with the results of other PowerShell cmdlets (you can re use any kind of script that you already designed, or downloaded from internet)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjgkX4wZKjI/AAAAAAAAANI/ey1SJ4_ebPo/s1600-h/clip_image002%5B5%5D%5B4%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image002[5]" border="0" alt="clip_image002[5]" src="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjgkYqWCcbI/AAAAAAAAANM/5F8fV_s_uOE/clip_image002%5B5%5D_thumb%5B2%5D.gif?imgmax=800" width="448" height="308" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;i&gt;Sample Architecture of Poshboard Silverlight conversion of Visifire charts&lt;/i&gt;&lt;/p&gt;  &lt;h3&gt;&lt;em&gt;&lt;/em&gt;&lt;/h3&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Snapin Installation&lt;/h3&gt;  &lt;p align="justify"&gt;Installing the snapin is really simple, you don’t even need to have Poshboard installed to use it and to design your future Silverlight objects.&lt;/p&gt;  &lt;p align="justify"&gt;Copy the two Dll from the Snapin zip file in a directory of your server or workstataion (Example : c:\ressources)&lt;/p&gt;  &lt;p align="justify"&gt;Launch the following line in a console (with administrator privilege in Vista / Seven / W2K8) :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;For x86 Systems: &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;c:\Windows\Microsoft.NET\Framework\v2.0.50727\installutil.exe c:\ressources\poshboard.dll&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;For x64 systems: &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;c:\Windows\Microsoft.NET\Framework64\v2.0.50727\installutil.exe c:\ressources\poshboard.dll&lt;/p&gt;  &lt;p&gt;You’re ready to script :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Open a PowerShell console, and type : &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Add-PSSnapin poshboard&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;List all cmdlets &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;get-command *PB* &lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc232878688"&gt;The Cmdlets&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Here’s the list of these cmdlets:    &lt;table border="1" cellspacing="0" cellpadding="0" width="539"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p align="center"&gt;&lt;strong&gt;Cmdlets&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p align="center"&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;           &lt;p align="center"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBAgDataGrid&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td width="359"&gt;           &lt;p&gt;Create a Silverlight DataGrid (based on DevExpress AgDataGrid control) &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjgkY_K0bzI/AAAAAAAAANQ/inRLcI7kRLI/s1600-h/clip_image002%5B10%5D%5B7%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="clip_image002[10]" border="0" alt="clip_image002[10]" src="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjgkZnU-TgI/AAAAAAAAANU/bn5-U5Jb0ls/clip_image002%5B10%5D_thumb%5B5%5D.jpg?imgmax=800" width="41" height="47" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBButton&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Create a Silverlight Button&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjgkZ2tlzWI/AAAAAAAAANY/lOEj_ZXzs3c/s1600-h/clip_image004%5B7%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="clip_image004" border="0" alt="clip_image004" align="left" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjgkaPvh-mI/AAAAAAAAANc/RapLRzkhcJo/clip_image004_thumb%5B2%5D.jpg?imgmax=800" width="72" height="22" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBChart&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Create a Silverlight Chart (based on Visifire Charts control)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/Sjgkav7WFOI/AAAAAAAAANg/qwwtGwJrlaA/s1600-h/clip_image006%5B10%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="clip_image006" border="0" alt="clip_image006" align="left" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjgkaxWmhvI/AAAAAAAAANk/EL-WtOiwjj0/clip_image006_thumb%5B1%5D.jpg?imgmax=800" width="34" height="40" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBComboBox&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Create a Silverlight ComboBox&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjgkbC98_jI/AAAAAAAAANo/Hao1Nz9R2kA/s1600-h/clip_image008%5B5%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="clip_image008" border="0" alt="clip_image008" align="left" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjgkbguYkYI/AAAAAAAAANs/4JMdKsEyUnI/clip_image008_thumb%5B2%5D.jpg?imgmax=800" width="74" height="41" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBContainer&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Create a Silverlight Grid (container for other controls)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjgkcC8BrLI/AAAAAAAAANw/83Uhu-uOWxQ/s1600-h/clip_image010%5B6%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="clip_image010" border="0" alt="clip_image010" align="left" src="http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjgkcY4qyDI/AAAAAAAAAN0/lKDGYIbg2TI/clip_image010_thumb%5B1%5D.jpg?imgmax=800" width="64" height="44" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBDataSerie&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Create a DataSerie (used for Charts)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjgkcjKOdDI/AAAAAAAAAN4/A402rUUtRUE/s1600-h/clip_image006%5B2%5D%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006[2]" border="0" alt="clip_image006[2]" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/Sjgkc1k60TI/AAAAAAAAAN8/egqCl2q14iA/clip_image006%5B2%5D_thumb.jpg?imgmax=800" width="34" height="40" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBElement&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Create a blank Element&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjgkdRiorZI/AAAAAAAAAOA/vVX2ma0ueCM/s1600-h/clip_image011%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image011" border="0" alt="clip_image011" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjgkdxvbIHI/AAAAAAAAAOE/LHFK2-X6sZE/clip_image011_thumb.jpg?imgmax=800" width="48" height="40" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBEvent&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Create an event on a control&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjgkeIU4dDI/AAAAAAAAAOI/2B1gvdSc7dQ/s1600-h/clip_image012%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://lh4.ggpht.com/_Nb_tnJCL_Vw/Sjgkega1GPI/AAAAAAAAAOM/V2pl3LXQs8Y/clip_image012_thumb.jpg?imgmax=800" width="26" height="25" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBFlipBook&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Create a FlipBook (based on SLMitsu Flip book control)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt; &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBGridData&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Create Data object for Datagrid&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/Sjgke3xir4I/AAAAAAAAAOQ/pBRhL0WY2eQ/s1600-h/clip_image013%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image013" border="0" alt="clip_image013" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjgkfpnXlQI/AAAAAAAAAOU/_FywPMybt5k/clip_image013_thumb.jpg?imgmax=800" width="34" height="39" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBTextBlock&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Create a Text Block control &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjgkfwnUEmI/AAAAAAAAAOY/mLEBQ7HeZVg/s1600-h/clip_image015%5B5%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image015" border="0" alt="clip_image015" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjgkgLYpguI/AAAAAAAAAOc/ibXF1ItRfX0/clip_image015_thumb%5B2%5D.jpg?imgmax=800" width="74" height="21" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;New-PBTextBox&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Create a TextBox control &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh6.ggpht.com/_Nb_tnJCL_Vw/SjgkgVdwKFI/AAAAAAAAAOg/ZpeoQfXrlSo/s1600-h/clip_image017%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image017" border="0" alt="clip_image017" src="http://lh4.ggpht.com/_Nb_tnJCL_Vw/Sjgkg6GcQeI/AAAAAAAAAOk/-G0ODBCklCc/clip_image017_thumb%5B1%5D.jpg?imgmax=800" width="89" height="21" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;Add-PBDataSerie&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Add a DataSerie to a Chart object&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjgkhDekSUI/AAAAAAAAAOo/jWq00N-kyTw/s1600-h/clip_image006%5B3%5D%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006[3]" border="0" alt="clip_image006[3]" src="http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjgkhWoC0bI/AAAAAAAAAOs/iuaY7lg0qzY/clip_image006%5B3%5D_thumb.jpg?imgmax=800" width="34" height="40" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;Add-PBElement&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Add an Element to a container&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjgkhplwxDI/AAAAAAAAAOw/-iQple4RsvI/s1600-h/clip_image010%5B1%5D%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image010[1]" border="0" alt="clip_image010[1]" src="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjgkiEOsdyI/AAAAAAAAAO0/uSf-IVXq_kQ/clip_image010%5B1%5D_thumb.jpg?imgmax=800" width="64" height="44" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;Add-PBEvent&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Add an event to a control &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh5.ggpht.com/_Nb_tnJCL_Vw/SjgkiaYjM1I/AAAAAAAAAO4/EQ_h_M2E8B0/s1600-h/clip_image012%5B1%5D%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image012[1]" border="0" alt="clip_image012[1]" src="http://lh4.ggpht.com/_Nb_tnJCL_Vw/SjgkioGtWLI/AAAAAAAAAO8/n_vX8tsqeLc/clip_image012%5B1%5D_thumb.jpg?imgmax=800" width="26" height="25" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="155"&gt;           &lt;p&gt;&lt;strong&gt;Add-PBGridData&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="359"&gt;           &lt;p&gt;Add Grid data to a Datagrid&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="23"&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjgkjIh-kHI/AAAAAAAAAPA/y6q86RxdAPQ/s1600-h/clip_image002%5B11%5D%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[11]" border="0" alt="clip_image002[11]" src="http://lh6.ggpht.com/_Nb_tnJCL_Vw/Sjgkjb7AJgI/AAAAAAAAAPE/nhZ8-bT6erU/clip_image002%5B11%5D_thumb.jpg?imgmax=800" width="41" height="47" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p align="justify"&gt;We will describe all these cmdlets and the corresponding controls in the next post.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-8937320034791073635?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/8937320034791073635/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=8937320034791073635' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/8937320034791073635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/8937320034791073635'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/06/poshboard-powershell-snapin.html' title='Poshboard PowerShell Snapin'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_Nb_tnJCL_Vw/SjgkXTDBRhI/AAAAAAAAANE/meNXXw49gGw/s72-c/clip_image002_thumb%5B6%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-258365201950065274</id><published>2009-06-11T07:49:00.000-07:00</published><updated>2009-06-11T07:50:21.281-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><title type='text'>Poshboard Beta 1 rev 3 available</title><content type='html'>an updated version of the Beta 1 of Poshboard is available on codeplex &lt;a href="http://poshboard.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28457"&gt;here&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Changelog :&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;[CHANGED] default widgets height to 400 px&lt;/div&gt;&lt;div&gt;[CHANGED] Widgets icons and order in add stuff menu&lt;/div&gt;&lt;div&gt;[ADDED] 3 new properties to Chart Widgets : AnimationEnabled and scrollerenabled for PBChart, LineTickness for PBDataSerie&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;AnimationEnabled can be set to true for animation (works only for "shot" update, play update disable this boolean)&lt;/div&gt;&lt;div&gt;ScrollerEnabled enable or disable the scroller in chart (now disable by default): if you disable this property, chart will "fit"&lt;/div&gt;&lt;div&gt;your current control (Datapoint bar/column... size will change dynamically)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;LineTickness : change the tickness of line in charts (1 for smallest line)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[ADDED] 1 new property to Datagrid : ShowGroupPanel (Boolean)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enable or disable the top group panel (for datagrid filtering)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[ADDED] FlipBook Widget&lt;/div&gt;&lt;div&gt;[ADDED] BlackLight Dashboard Widgets&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-258365201950065274?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/258365201950065274/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=258365201950065274' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/258365201950065274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/258365201950065274'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/06/poshboard-beta-1-rev-3-available.html' title='Poshboard Beta 1 rev 3 available'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-2088447631209443657</id><published>2009-06-08T04:43:00.000-07:00</published><updated>2009-06-08T04:45:02.139-07:00</updated><title type='text'>Poshboard V1 Beta 1 Available Today !</title><content type='html'>See presentation article here : &lt;a href="http://www.poshboard.com/"&gt;http://www.poshboard.com/&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.poshboard.com/"&gt;&lt;/a&gt;Download the release here : &lt;a href="http://poshboard.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28457"&gt;http://poshboard.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28457&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Enjoy !&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://www.poshboard.com/"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-2088447631209443657?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/2088447631209443657/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=2088447631209443657' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/2088447631209443657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/2088447631209443657'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/06/poshboard-v1-beta-1-available-today.html' title='Poshboard V1 Beta 1 Available Today !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-2750054215121595684</id><published>2009-04-30T14:42:00.000-07:00</published><updated>2009-04-30T15:40:44.900-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='widget'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Poshboard v1 : Technical preview 1</title><content type='html'>&lt;div style="text-align: justify;"&gt;Poshboard v1 development is going well and the the first release should be available in june. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Several Beta will be available in the meantime, I will also publish "technical preview" videos before this release.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Here is a first video presenting you different topics (go fullscreen for HD) :&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;center&gt;&lt;object width="480" height="270"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4418306&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=4418306&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="480" height="270"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/center&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I'll present the following functionnalities :&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;1) "Live update" with WCF push server mode.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"   style="color: rgb(51, 51, 51);   line-height: 19px; font-family:Verdana;font-size:13px;"&gt;&lt;div class="post-body entry-content"&gt;&lt;p style="text-align: justify; "&gt;Poshboard now use the polling duplex feature of WCF that let us refresh dynamically script results in widgets (string output, charts, datagrids...). &lt;/p&gt;&lt;p style="text-align: justify; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;2) Poshboard Tester widget&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify; "&gt;This widget use this push server mode et let you test your scripts. You'll see different examples and you'll discover a first preview of statistic mode.&lt;/p&gt;&lt;p style="text-align: justify; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;3) Poshboard Powershell Snapin : Chart object&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify; "&gt;Poshboard will provide several PowerShell snapins to enhance the experience. This first series of cmdlets let you design and debug your charts widgets, and permit widget objet creation directly in a standard PowerShell console. Pipeline, objet visualization will ease the development process.&lt;/p&gt;&lt;p style="text-align: justify; "&gt;Feel free to share your feelings and suggestions on &lt;a href="http://www.poshboard.com/"&gt;the Poshboard Forum&lt;/a&gt; ! Your feedback will help me finalize the portal ;)&lt;/p&gt;&lt;p style="text-align: justify; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: center; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear: both; "&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post-footer" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 88%; color: rgb(153, 153, 153); "&gt;&lt;/div&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-2750054215121595684?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/2750054215121595684/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=2750054215121595684' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/2750054215121595684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/2750054215121595684'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/04/poshboard-v1-technical-preview-1.html' title='Poshboard v1 : Technical preview 1'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-3675008907118174812</id><published>2009-03-20T06:37:00.000-07:00</published><updated>2009-03-20T06:38:49.653-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><title type='text'>Poshboard installation guide available for W2K8 - IIS7</title><content type='html'>The installation guide of Poshboard on a Windows 2008 - IIS 7 server is available &lt;a href="http://www.poshboard.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=4:installation-guide-windows-2008&amp;amp;catid=5:tutorials&amp;amp;Itemid=8&amp;amp;lang=en"&gt;here on poshboard.com&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-3675008907118174812?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/3675008907118174812/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=3675008907118174812' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/3675008907118174812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/3675008907118174812'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/03/poshboard-installation-guide-available.html' title='Poshboard installation guide available for W2K8 - IIS7'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-8702058414220099339</id><published>2009-03-12T17:05:00.000-07:00</published><updated>2009-03-13T06:45:28.425-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><title type='text'>PoshBoard Community website is open !</title><content type='html'>&lt;div style="TEXT-ALIGN: center"&gt;After a bit of work and a dive in the CMS Matrix :&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;PoshBoard Website is now Open !&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span class="Apple-style-span"  style="font-size:24;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span class="Apple-style-span"  style="font-size:24;"&gt;&lt;a href="http://www.poshboard.com/"&gt;http://www.poshboard.com/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span class="Apple-style-span"  style="font-size:24;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold;font-size:medium;" &gt;Forum, News, Videos, Tutorials, development survey...&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; Everything related to PoshBoard will be there !&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;Have a visit and share with us !&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;Note : &lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;Site is multilingual English/French&lt;/span&gt;, Click on the proper icon above the main menu to select your favorite language.&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-8702058414220099339?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/8702058414220099339/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=8702058414220099339' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/8702058414220099339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/8702058414220099339'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/03/poshboard-community-website-is-open.html' title='PoshBoard Community website is open !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-5586762322794482106</id><published>2009-03-05T08:29:00.000-08:00</published><updated>2009-03-05T16:37:32.209-08:00</updated><title type='text'>PoshBoard 0.4.2 update (bugfix)</title><content type='html'>I've just updated PoshBoard to 0.4.2 (bugfix release)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Bugs Fixed :&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* modification of visifire.ps1 to handles long xAxis&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Source code lacked proper dll reference to several silverlight librairies&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Source are now properly set up and you can build the project right after download&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Project downsized (delete of unused debug in folders)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In order to use the AgDatagrid project, you need to download the source from &lt;a href="http://www.devexpress.com/Products/NET/Controls/Silverlight/Grid/"&gt;DevExpress website&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Then, simply copy the file "C:\Program Files\Developer Express\Free Controls for Silverlight\Sources\DevExpress.Dll\DevExpress.AgDataGrid.v8.2.dll" to the "&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Components&lt;/span&gt;" folder of the solution&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://poshboard.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24132"&gt;Download it here&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-5586762322794482106?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/5586762322794482106/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=5586762322794482106' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/5586762322794482106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/5586762322794482106'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/03/poshboard-042-update-bugfix.html' title='PoshBoard 0.4.2 update (bugfix)'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-2614756261269618716</id><published>2009-03-03T12:59:00.001-08:00</published><updated>2009-03-03T14:17:08.326-08:00</updated><title type='text'>Some infos on PoshBoard 0.4</title><content type='html'>&lt;p align="justify" style="text-align: center;"&gt;&lt;em&gt;Edit : &lt;a href="http://poshboard.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24132"&gt;release has been updated (0.4.1)&lt;/a&gt; to add correction of Christopher. Thank you ! &lt;/em&gt;&lt;/p&gt;&lt;p align="justify"&gt;After several discussions with early poshboarders, here is some infos.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How to install the PoshBoard website&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://poshboard.codeplex.com/Thread/View.aspx?ThreadId=49074" target="_blank"&gt;a Thread is open&lt;/a&gt; on this subject with usefull info on installation. The user guide will be updated soon, you can take the previous version &lt;a href="http://poshboard.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=21218" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Refreshers&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;The two refreshers (the one on the Header and the widget) don’t have the same behavior.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Header Refresher&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_Nb_tnJCL_Vw/Sa2aOjWXL3I/AAAAAAAAAM4/9H7FlS3H4e0/s1600-h/header%5B6%5D.jpg"&gt;&lt;img title="header" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="21" alt="header" src="http://lh5.ggpht.com/_Nb_tnJCL_Vw/Sa2aPIiL0TI/AAAAAAAAAM8/HsVgGbNr4bg/header_thumb%5B2%5D.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The Header refresher adds an URL parameter : /Default.aspx?Refresh=true &lt;/p&gt;  &lt;p align="justify"&gt;This parameter is checked in each widgets at Postback. If Refresh is true, scripts are launched. The “refresh enabled” button activate this parameter, the other button changes it to false.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;edit : a bug is identified when you switch pages, this will be corrected soon.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Refresher widget&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Like a pack of beer, this widget is a simple thing, but it do it's job. This will be much improved in the V1. For now, it takes a small strings in CSV format :&lt;/p&gt;  &lt;p&gt;SourceArg;TargetArg&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;This one create a session variable. As for the header, this session variable is checked when the widgets are reloaded on postback.&lt;/p&gt;  &lt;p style="text-align: justify;"&gt;if the variable contains something, the widget try to change the the first arg with the second (yes, a basic replace). If nothing is found, nothing changes.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Put this script in the PowerShellOutput widget :&lt;/p&gt;  &lt;p&gt;gwmi Win32_logicalDisk –Filter “DriveType = 3” -ComputerName @MachineName@&lt;/p&gt;  &lt;p&gt;In the Refresher widget, put :&lt;/p&gt;  &lt;p&gt;@MachineName@;MYSERVER001&lt;/p&gt;  &lt;p align="justify"&gt;Important point : the original script (saved in the widget) isn’t modified. This permit to keep the original script and update the page with other parameters without changing sourceArg.&lt;/p&gt;  &lt;p align="justify"&gt;After the Page load, the Session variable is discarded brutally.&lt;/p&gt;  &lt;p align="justify"&gt;The final version of the Refresher will let you define more advanced refresher webforms / silverlight forms, more infos in the near future.&lt;/p&gt;  &lt;p align="justify"&gt; &lt;/p&gt;  &lt;p align="justify"&gt;This conclude the first post about PoshBoard 0.4, more to come !&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;(like the fun story behind these strange variables generated for BlackLight/Flip book widget, filled with £,µ, ¤ or even §…)&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-2614756261269618716?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/2614756261269618716/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=2614756261269618716' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/2614756261269618716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/2614756261269618716'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/03/some-infos-on-poshboard-04.html' title='Some infos on PoshBoard 0.4'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_Nb_tnJCL_Vw/Sa2aPIiL0TI/AAAAAAAAAM8/HsVgGbNr4bg/s72-c/header_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-1792795599532594501</id><published>2009-03-02T16:49:00.000-08:00</published><updated>2009-03-03T06:01:08.239-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='0.4'/><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><title type='text'>PoshBoard 0.4 is out !</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;I'm pleased to tell you that you can now download the last version of PoshBoard 0.4&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://poshboard.codeplex.com/"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Here on codeplex&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Another good news : this is the last 0.x version of PoshBoard. &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Now we target the V1 !&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now that things are clear, there'll be a massive refactoring of the code to meet the objectives. A lot of things will be simplified/optimized in order to gives you an enjoyable experience.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;But let's talk about this released version :&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In this "0.4", you'll be able to test the new widgets based on &lt;a href="http://blacklight.codeplex.com/"&gt;Blacklight&lt;/a&gt; and &lt;a href="http://www.codeplex.com/wpfbookcontrol"&gt;Silverlight book control&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It reintroduce the refresher widgets, and a new refresh feature in the header, to refresh (or not) all your script with a single click.&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/SayHkpkJxKI/AAAAAAAAAMo/RwdcaCEdFU8/s1600-h/poshboard5.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 256px;" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/SayHkpkJxKI/AAAAAAAAAMo/RwdcaCEdFU8/s400/poshboard5.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5308767124465501346" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;This is of course still beta and a lot of things aren't as smart as they could be, but you'll be able to see what V1 will be like and the way things are getting together.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I'll post several tutorial on this version and how to use it. You have sample scripts available on codeplex.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Enjoy !&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;fell free to comment this new release&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-1792795599532594501?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/1792795599532594501/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=1792795599532594501' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/1792795599532594501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/1792795599532594501'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/03/poshboard-04-is-out.html' title='PoshBoard 0.4 is out !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Nb_tnJCL_Vw/SayHkpkJxKI/AAAAAAAAAMo/RwdcaCEdFU8/s72-c/poshboard5.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-5560978168475105282</id><published>2009-02-20T01:25:00.001-08:00</published><updated>2009-02-23T01:52:27.449-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='0.4'/><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Techdays'/><title type='text'>PoshBoard 0.4 : webcast on the Techdays 2009 version</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Version française disponible &lt;a href="http://devinfra.blogspot.com/2009/02/webcast-poshboard-v04.html"&gt;ici&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Here is the webcast of the PoshBoard 0.4 edition presented at the french Techdays 2009&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;center&gt;&lt;object width="500" height="281"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3286076&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=3286076&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="281"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/3286076"&gt;PoshBoard 0.4 Techdays 2009 edition&lt;/a&gt; from &lt;a href="http://vimeo.com/user301430"&gt;Antoine Habert&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;/center&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Important : Go FULLSCREEN and choose HD mode for a good experience !&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Agenda :&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" font-weight: bold;font-size:48px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(62, 62, 62);  white-space: pre-wrap;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;1) a presentation of the basis of PoshBoard (01:23)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(62, 62, 62);  white-space: pre-wrap;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;2) Demo on the classic controls (08:12)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(62, 62, 62);  white-space: pre-wrap;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;3) PowerShell web service with WCF (12:59)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(62, 62, 62);  white-space: pre-wrap;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;4) new widgets : blacklight, mitsu flipbook control (16:03)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(62, 62, 62);  white-space: pre-wrap;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;5) the features envisionned for PoshBoard V1 (27:24)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style=" font-weight: bold;font-size:18px;"&gt;&lt;span class="Apple-style-span"  style="color: rgb(62, 62, 62);  font-weight: normal; white-space: pre-wrap;font-family:Verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Have fun !&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: center; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Credits :&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Dropthings : &lt;a href="http://www.codeplex.com/dropthings"&gt;http://www.codeplex.com/dropthings&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Visifire : &lt;a href="http://www.visifire.com/"&gt;http://www.visifire.com&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;BlackLight : &lt;a href="http://www.codeplex.com/blacklight"&gt;http://www.codeplex.com/blacklight&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Mitsu Flipbook control : &lt;a href="http://www.codeplex.com/wpfbookcontrol"&gt;http://www.codeplex.com/wpfbookcontrol&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Silverlight 3D flip animation  : &lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;a href="http://joel.neubeck.net/2008/04/silverlight-3d-flip-animation/"&gt;http://joel.neubeck.net/2008/04/silverlight-3d-flip-animation/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;DevExpress AgDatagrid :&lt;/span&gt; &lt;a href="http://devexpress.com/Products/NET/Controls/Silverlight/Grid/"&gt;http://devexpress.com/Products/NET/Controls/Silverlight/Grid/&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-5560978168475105282?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/5560978168475105282/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=5560978168475105282' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/5560978168475105282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/5560978168475105282'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/02/poshboard-04-webcast-on-techdays-2009.html' title='PoshBoard 0.4 : webcast on the Techdays 2009 version'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-5343739745059054918</id><published>2009-02-19T03:55:00.000-08:00</published><updated>2009-02-20T05:06:41.368-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Techdays'/><title type='text'>Poshboard 0.4 video available today</title><content type='html'>Just a short notice to tell you that the webcast on the Techdays poshboard version is done !&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some video processing and upload on Vimeo is required, so this video should be available today.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;edit : &lt;/span&gt;The webcast is available &lt;a href="http://devinfra-us.blogspot.com/2009/02/poshboard-04-webcast-on-techdays-2009.html"&gt;here&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-5343739745059054918?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/5343739745059054918/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=5343739745059054918' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/5343739745059054918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/5343739745059054918'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/02/poshboard-04-video-available-today.html' title='Poshboard 0.4 video available today'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-2327981752983627730</id><published>2009-02-13T02:22:00.000-08:00</published><updated>2009-02-13T03:25:20.438-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Techdays'/><title type='text'>Back From Techdays 2009</title><content type='html'>It was a real pleasure to present PoshBoard yesterday : Great room, great public, and nearly none "Demo Effect" bugs :)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;You missed this event ?&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;You want to understand what was said without learning French ?&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Don't want to wait for the Techdays webcast ?&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;You're definitevely Lucky !&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I'll post next week an English webcast that present the last version of poshboard with the widgets presented at this Techdays Session. You'll see brand new silverlight widgets in action, learn what "PoshBoard V1" will be like, benefits of PowerShell webservices for Poshboard...&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Don't miss this webcast and stay tuned to Devinfra-us !&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-2327981752983627730?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/2327981752983627730/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=2327981752983627730' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/2327981752983627730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/2327981752983627730'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/02/back-from-techdays-2009.html' title='Back From Techdays 2009'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-4422709109764498941</id><published>2009-02-03T15:58:00.001-08:00</published><updated>2009-02-03T16:11:18.752-08:00</updated><title type='text'>Dashboard in Dashboard : Techdays, Blacklight, new PoshBoard version</title><content type='html'>&lt;p&gt;I’ll present next week a session on Powershell adn PoshBoard at the French Techdays 2009. I’ll talk about the last development of PoshBoard and new features.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://galilee.microsoft.fr/TechDays2009/Session.aspx?CellID=c378439d-4978-4225-be03-f1b73e607ed8" target="_blank"&gt;More info here&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;What is scheduled ?&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;Creation from scratch of a dashboard page on Active Directory, Exchange and Windows 2008, in 10 minutes&lt;/p&gt;  &lt;p&gt;PowerShell and webservices : how to use powershell directly from within Silverlight control in PoshBoard ?&lt;/p&gt;  &lt;p align="center"&gt;New widgets based on the great &lt;a href="http://www.codeplex.com/blacklight" target="_blank"&gt;Blacklight controls&lt;/a&gt; :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://img3.imageshack.us/img3/8194/blacklightvw0.jpg"&gt;&lt;img title="BlackLight" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="283" alt="BlackLight" src="http://lh3.ggpht.com/_Nb_tnJCL_Vw/SYjaHWjtxaI/AAAAAAAAAMY/UOHqk70d7yw/BlackLight%5B4%5D.jpg?imgmax=800" width="499" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="center"&gt;Yes, this is dashboard in dashboard :)&lt;/p&gt;  &lt;p align="center"&gt;We’ll discover how to build the widget above &lt;strong&gt;in only 4 lines of PowerShell code.&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;This new version of poshboard will be available just after at codeplex, and several videos in english will be published on how to use, build and share widgets/pages with the coming PoshBoard 1.0 !&lt;/p&gt;  &lt;p align="center"&gt;More news after the Techdays ;)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-4422709109764498941?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/4422709109764498941/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=4422709109764498941' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/4422709109764498941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/4422709109764498941'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/02/dashboard-in-dashboard-techdays.html' title='Dashboard in Dashboard : Techdays, Blacklight, new PoshBoard version'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_Nb_tnJCL_Vw/SYjaHWjtxaI/AAAAAAAAAMY/UOHqk70d7yw/s72-c/BlackLight%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-8307429255101620963</id><published>2009-01-05T03:10:00.001-08:00</published><updated>2009-01-05T08:16:32.327-08:00</updated><title type='text'>PoshBoard quick installation</title><content type='html'>You'll find below the steps required to build and test Poshboard on a fresh OS (XP/Vista/2003/2008...) :&lt;span class="Apple-style-span"   style="color: rgb(48, 51, 45);   font-family:'Segoe UI';font-size:13px;"&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="color: rgb(48, 51, 45);  font-family:'Segoe UI';font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="color: rgb(48, 51, 45);   font-family:'Segoe UI';font-size:13px;"&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;1) Install PowerShell &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx" class="externalLink" style="text-decoration: underline; color: rgb(62, 98, 166); "&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;2) Install Silverlight 2 Client &lt;a href="http://www.silverlight.net/" class="externalLink" style="text-decoration: underline; color: rgb(62, 98, 166); "&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;3) Install Web developper Express 2008 SP1 with SQL EXPRESS 2008 options &lt;a href="http://www.microsoft.com/eXPress/download/#webInstall" class="externalLink" style="text-decoration: underline; color: rgb(62, 98, 166); "&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;4) Install Silverlight tools &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=c22d6a7b-546f-4407-8ef6-d60c8ee221ed" class="externalLink" style="text-decoration: underline; color: rgb(62, 98, 166); "&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;5) Download and install AgDatagrid &lt;a href="http://www.devexpress.com/Products/NET/Controls/Silverlight/Grid/" class="externalLink" style="text-decoration: underline; color: rgb(62, 98, 166); "&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;6) Download poshboard 0.3.5 or above &lt;a href="http://www.codeplex.com/poshboard" class="externalLink" style="text-decoration: underline; color: rgb(62, 98, 166); "&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;7) Download visifire 2.05 or above, copy "SLVisifire.Charts.dll" and "visifire2.js" in the dropthings/xapfiles folder of poshboard &lt;a href="http://www.visifire.com/" class="externalLink" style="text-decoration: underline; color: rgb(62, 98, 166); "&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 0px; margin-bottom: 0.3em; margin-top: 0.3em; vertical-align: middle; "&gt;&lt;b&gt;8) Open the project in web developper express (poshboard/dropthings.sln), build and test !&lt;/b&gt;&lt;/li&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-8307429255101620963?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/8307429255101620963/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=8307429255101620963' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/8307429255101620963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/8307429255101620963'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2009/01/poshboard-quick-installation.html' title='PoshBoard quick installation'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-9173435851149136262</id><published>2008-12-30T06:12:00.000-08:00</published><updated>2008-12-30T06:37:49.208-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PoshBoard v0.3.5 Released ! Compatible with Silverlight 2.0 Final</title><content type='html'>Hi,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Here is my first good resolution for 2009 : &lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Releasing a new version of PoshBoard !&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PoshBoard v0.3.5 is now available at codeplex &lt;a href="http://www.codeplex.com/Poshboard"&gt;just here&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;What's New ?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;-PoshBoard is &lt;span class="Apple-style-span" style="font-weight: bold; "&gt;now fully compatible with silverlight 2.0 Final&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;-Updated to last version of AgDatagrid (December 2008 release) and visifire (2.0.5 Beta) &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;-BugFix in datagrid generation&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;-New edit feature for visifire charts : you can now select the type of charts and define Charts name in the Edit Section. &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;important : to draw a chart, you now need to pass one or several hashtables to the built-in "out-visifire" function &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;out-visifire($myHashTable)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;or&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;out-visifire($myHashTable1,$MyHashTable2)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;-The user guide is updated with last information to ease your installation : read it carefully&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-weight: bold; font-size:medium;"&gt;Another good news : great support for poshboard !&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Jeffrey Snover (Creator of PowerShell) has posted two really cool articles about PoshBoard and HashTable generation on the PowerShell Team Blog : you can read them &lt;a href="http://blogs.msdn.com/powershell/archive/2008/11/23/poshboard-and-convertto-hashtable.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/powershell/archive/2008/11/23/convertto-hashtable-ps1-part-2.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Thank you Jeffrey for your support on this project !&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Happy new Year to all of you !&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-9173435851149136262?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/9173435851149136262/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=9173435851149136262' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/9173435851149136262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/9173435851149136262'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/12/poshboard-v035-released-compatible-with.html' title='PoshBoard v0.3.5 Released ! Compatible with Silverlight 2.0 Final'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-7956780810634334063</id><published>2008-11-19T07:45:00.001-08:00</published><updated>2008-11-19T07:49:57.172-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>New version of PoshBoard coming soon !</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Verdana; font-size: 13px; line-height: 19px; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;div&gt;Some news about PoshBaord :&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;Development is ongoing of course ! :), a bit delayed by professionnal constraints.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;With the release of Silverlight 2.0 and upcoming Dropthings 1.8.0, a new version of PoshBoard will be available shortly :&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;So, what's coming ?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Update with Silverlight 2.0 and Dropthings 1.8.0, with addional features :&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;You'll be able to create dynamic widgets based on ironPyhon ! on the fly customisation with ironpython code or with a little gadget designer !&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;You'll be able to import and export custom widgets ! We'll be able to share widgets with the community&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;New widgets based on Silverlight control toolkits&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Your inputs, suggestions are as always very usefull, please give me your feedback !&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;News coming soon, stay tuned.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-7956780810634334063?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/7956780810634334063/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=7956780810634334063' title='4 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/7956780810634334063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/7956780810634334063'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/11/new-version-of-poshboard-coming-soon.html' title='New version of PoshBoard coming soon !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-5964789585491812327</id><published>2008-09-10T02:24:00.000-07:00</published><updated>2008-09-10T02:28:26.966-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Podcast'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShellPlus'/><title type='text'>PowerShellPlus Profesionnal for free ? listen to PowerScripting Podcast !</title><content type='html'>&lt;div style="text-align: justify;"&gt;There's always great news and tips in the PowerScripting Podcast, this time there's a great deal : if you follow the link provided in the 40th edition, you'll be able to get a FREE licence of PowerShellPlus !&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Just on thing to do : &lt;a href="http://powerscripting.wordpress.com/2008/09/07/episode-40-poshboard-part-duex/"&gt;go to PowerScripting Podcast site&lt;/a&gt;, listen to this great talk-show on PowerShell, and follow the link to PowerShellPlus Beta : once it's available, you'll get your free licence !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-5964789585491812327?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/5964789585491812327/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=5964789585491812327' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/5964789585491812327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/5964789585491812327'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/09/powershellplus-profesionnal-for-free.html' title='PowerShellPlus Profesionnal for free ? listen to PowerScripting Podcast !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-2488645504274678615</id><published>2008-08-26T15:55:00.001-07:00</published><updated>2008-08-27T06:27:52.670-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><title type='text'>PoshBoard installation guide available</title><content type='html'>A quick note to tell you that the Installation Guide for PoshBoard is now &lt;a href="http://www.codeplex.com/Poshboard/Release/ProjectReleases.aspx?ReleaseId=16648"&gt;available here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You'll learn step by step how to use the source with visual studio/web express and how to publish it on your server/workstation.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update : now the user guide explains how to use every widgets !&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-2488645504274678615?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/2488645504274678615/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=2488645504274678615' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/2488645504274678615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/2488645504274678615'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/08/poshboard-installation-guide-available.html' title='PoshBoard installation guide available'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-9029171864914297790</id><published>2008-08-25T15:58:00.000-07:00</published><updated>2008-08-27T06:29:17.654-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Dashboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PoshBoard 0.3 is out !</title><content type='html'>&lt;div style="TEXT-ALIGN: justify"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Update : sources are now available at codeplex, user guide to follow...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Coding can be really, really fun ! all is getting nicely and I'm pleased to present you the version 0.3.0 of PoshBoard on Codeplex.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold;font-size:180%;" &gt;&lt;a href="http://www.codeplex.com/Poshboard"&gt;Download it here!&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img209.imageshack.us/img209/6205/poshboard3xz6.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://img209.imageshack.us/img209/6205/poshboard3xz6.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;What's New ?&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Based on Dropthings 1.7.0 : database is now included in the project, using SQL 2005 Express is now easy ! &lt;/li&gt;&lt;li&gt;Added a Silverlight Datagrid widget&lt;/li&gt;&lt;li&gt;Added a DevExpress AgDatagrid widget (great open source silverlight control)&lt;/li&gt;&lt;li&gt;Added PowerShell standard output&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;What's missing ?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Well, a lot of things are coming ! first the source code.. but others widgets are ready to strike. I'm now working on cleaning up the code, making more error handling in PowerShell, Transform the Visifire PowerShell code...&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;...there's some nice surprises coming soon, stay tuned to my blog for more info !&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How to use it ?&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;(Updated) now a user guide is available at codeplex ! Read it to learn how tu install/configure the website or Visual studio project (with visual and visual express), and how to use the widgets !&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/add&gt;&lt;/add&gt;&lt;/add&gt;&lt;/add&gt;&lt;/add&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-9029171864914297790?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/9029171864914297790/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=9029171864914297790' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/9029171864914297790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/9029171864914297790'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/08/poshboard-03-is-out.html' title='PoshBoard 0.3 is out !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-666450925671338274</id><published>2008-07-30T08:11:00.000-07:00</published><updated>2008-07-30T14:13:52.774-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='codeplex'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PoshBoard second video : Adding DataGrid to the mix !</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://devinfra.blogspot.com/2008/07/poshboard-seconde-vido-des-datagrids-au.html"&gt;&lt;span style="font-weight: bold;"&gt;French version here&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is a second video on PoshBoard, my open source IT web portal project. In this one you'll find some news on the upcoming 0.3 version of Poshboard  (&lt;a href="http://www.codeplex.com/poshboard"&gt;available here soon at codeplex&lt;/a&gt;) :&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Launch and click on the HD icon, then go full screen (or &lt;a href="http://www.vimeo.com/1436395?pg=embed&amp;amp;sec=1436395&amp;amp;hd=1"&gt;click here&lt;/a&gt; where you can download it), I strongly recommend it cause my recording did some strange rescaling this time ! :)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;object width="500" height="281"&gt; &lt;param name="allowfullscreen" value="true"&gt; &lt;param name="allowscriptaccess" value="always"&gt; &lt;param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1436395&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1"&gt; &lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1436395&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="281"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.vimeo.com/1436395?pg=embed&amp;amp;sec=1436395"&gt;PoshBoard 2nd video : new widgets, new Dropthings GUI...&lt;/a&gt; from &lt;a href="http://www.vimeo.com/user301430?pg=embed&amp;amp;sec=1436395"&gt;pilosite&lt;/a&gt; on &lt;a href="http://vimeo.com/?pg=embed&amp;amp;sec=1436395"&gt;Vimeo&lt;/a&gt;.&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;What's up ?&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;New widgets&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Silverlight DataGrid&lt;/span&gt; : a direct path from Powershell to Silverlight 2 Datagrid&lt;br /&gt;&lt;a href="http://www.devexpress.com/Products/NET/Controls/Silverlight/Grid/"&gt;- &lt;span style="font-weight: bold;"&gt;AgDatagrid from Developper Express&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;: see how good a pro Silverlight Datagrid can be (Oh, it's free and open source... Great !)&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;PowerShell standard Output&lt;/span&gt; : launch PowerShell script and get console output.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;New front-end :&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Discover the brand &lt;a href="http://www.codeplex.com/dropthings"&gt;new dropthings version&lt;/a&gt; used in PoshBoard : custom columns layouts in action, new GUI... Dropthings is definitely an impressive Ajax/ASP.NET project !&lt;br /&gt;&lt;br /&gt;A tutorial is coming explaining everything about PoshBoard (how to install It ? prerequisite for publishing ? Visual Studio configuration ? )&lt;br /&gt;&lt;br /&gt;Feel free to ask questions in the comments, and please don't hesitate to use Issue tracker / discussion in Codeplex to help me improve PoshBoard !&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Hope you like this new one ;)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-666450925671338274?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/666450925671338274/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=666450925671338274' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/666450925671338274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/666450925671338274'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/07/poshboard-2nd-presentation-adding.html' title='PoshBoard second video : Adding DataGrid to the mix !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-3245265272165043081</id><published>2008-07-25T03:45:00.001-07:00</published><updated>2008-07-25T05:14:08.819-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AgDatagrid'/><category scheme='http://www.blogger.com/atom/ns#' term='Sliverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic Class'/><category scheme='http://www.blogger.com/atom/ns#' term='Datagrid'/><title type='text'>AgDatagrid and Silverlight Datagrid : how to build a dynamic datasource ?</title><content type='html'>&lt;p align="justify"&gt;&lt;strong&gt;French version available &lt;a href="http://devinfra.blogspot.com/2008/07/agdatagrid-et-silverlight-datagrid.html"&gt;HERE&lt;/a&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;Sample project is &lt;a href="http://www.fileden.com/files/2008/5/19/1920192/AgDatagridDynamicData.zip"&gt;available just here&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;strong&gt;Live Sample Below !&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;iframe src="http://silverlight.services.live.com/invoke/14606/AgDatagridDynamicData/iframe.html" style="width: 400px; height: 400px;" scrolling="no" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;I'm working on AgDatagrid, a really cool open source and free silverlight control from DevExpress (&lt;a href="http://www.devexpress.com/Products/NET/Controls/Silverlight/Grid/"&gt;see it in action here&lt;/a&gt;). Of course, my goal is  to implement a Widget version for &lt;a href="http://www.codeplex.com/Poshboard"&gt;PowerShell Dashboard&lt;/a&gt; ;-)&lt;/p&gt;  &lt;p align="justify"&gt;I came across a little problem, and we got the same with standard silverlight Datagrid :&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;How to dynamically build the datagrid ?&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;AgDatagrid and Silverlight Datagrid use IList type to build the control Datasource. When using managed code (C# or VB.NET in silverlight development), you need to build a Class representing your data to build the IList :&lt;/p&gt;  &lt;div   style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;   &lt;div   style="border-style: none; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;     &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; Person {   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; Name {   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;                      get;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   4:&lt;/span&gt;                      set;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;                 }   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;     &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; City {   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;                      get;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;                      set;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: rgb(0, 0, 0); line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;                 }   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;     &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; State {   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;                      get;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: rgb(0, 0, 0); line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;                      set;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;                 }   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;            }   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;     &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Person() {   &lt;/span&gt;&lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt; me = &lt;span style="color: rgb(0, 96, 128);"&gt;"Michael Jordan"&lt;/span&gt;, City=&lt;span style="color: rgb(0, 96, 128);"&gt;"Chicago"&lt;/span&gt;, State=&lt;span style="color: rgb(0, 96, 128);"&gt;"IL"&lt;/span&gt; },   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: rgb(0, 0, 0); line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Person() {   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt; me = &lt;span style="color: rgb(0, 96, 128);"&gt;"Kobe Bryant"&lt;/span&gt;, City=&lt;span style="color: rgb(0, 96, 128);"&gt;"Los Angeles"&lt;/span&gt;, State=&lt;span style="color: rgb(0, 96, 128);"&gt;"CA"&lt;/span&gt; },   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: rgb(0, 0, 0); line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Person() {   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt; me = &lt;span style="color: rgb(0, 96, 128);"&gt;"Shaquille O'Neil"&lt;/span&gt;, City=&lt;span style="color: rgb(0, 96, 128);"&gt;"Miami"&lt;/span&gt;, State=&lt;span style="color: rgb(0, 96, 128);"&gt;"FL"&lt;/span&gt; },   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: rgb(0, 0, 0); line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Person() {   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt; me = &lt;span style="color: rgb(0, 96, 128);"&gt;"Patrick Ewing"&lt;/span&gt;, City=&lt;span style="color: rgb(0, 96, 128);"&gt;"New York"&lt;/span&gt;, State=&lt;span style="color: rgb(0, 96, 128);"&gt;"NY"&lt;/span&gt; }    &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: rgb(0, 0, 0); line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  26:&lt;/span&gt;  &lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;That's ok when you know what kind of data will be bound to the grid, but how to do this when you have dynamic content ?&lt;br /&gt;&lt;p align="justify"&gt;I plan to use this grid to represent data coming from PowerShell... So I don't know how many column and type of Data I'll have to implement.&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;here is the point :&lt;/strong&gt; &lt;strong&gt;I can't use a static class to define my Data in the Silverlight Control.&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 align="center"&gt;Game Over ? &lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 align="center"&gt;Not Yet!&lt;/h1&gt;&lt;p align="left"&gt; &lt;/p&gt;We could follow two path to achieve this :&lt;br /&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;Use Dynamic Language programming with Silverlight (ironPython,ironRuby, Managed JScript...) that let us build dynamically the control ?&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dynamically build the class in managed code ?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Using Dynamic language will be an elegant (and for me the best) way to do it. However, we're dealing with Beta version here, and it's not so easy to use external control and SL2B2 controls in this context (yet), so I won't explain it for now (waiting for the MS Silverlight Team to publish some samples on it ;) )&lt;br /&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;strong&gt;So, could we dynamically build the Class in our managed code ?&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="center"&gt;my answer is : YES !&lt;br /&gt;&lt;/p&gt;&lt;h4&gt;How to generate typed objects dynamically&lt;br /&gt;&lt;/h4&gt;&lt;p align="justify"&gt;After some search (HEAVY search should I say), I just found this marvelous thread from Vladimir Bodurov on "how to generated dynamically typed objects in .NET :&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a title="http://www.simple-talk.com/dotnet/.net-framework/dynamically-generating--typed-objects-in-.net/" href="http://www.simple-talk.com/dotnet/.net-framework/dynamically-generating--typed-objects-in-.net/"&gt;http://www.simple-talk.com/dotnet/.net-framework/dynamically-generating--typed-objects-in-.net/&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;this is it ! Vladimir gives the magic code to build our objects that we could simply implement as a DataSource, without using static Class !&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Ok, fine. Let's see now how I used it with AgDataGrid (You can very easily convert this to the standard Silverlight 2 Datagrid, but it's not as cool as DevExpress excellent grid :) )&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Ok guys and girls, let's go into the code !&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;my sample projects is a very basic implementation of this solution in order to let you understand the where abouts.&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;my Page.Xaml is pretty simple :&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/pilosite/SImu2_ZT-5I/AAAAAAAAAI8/s2htaRkhQEM/s1600-h/agdynamic2%5B3%5D.jpg"&gt;&lt;img style="border: 0px none ;" alt="agdynamic2" src="http://lh6.ggpht.com/pilosite/SImu3ZPPbwI/AAAAAAAAAJA/sdcf-mWSCMY/agdynamic2_thumb%5B1%5D.jpg?imgmax=800" width="393" border="0" height="339" /&gt;&lt;/a&gt; &lt;/p&gt;I put 2 textbox (1 for Columns name, 1 for Datas), a button to build the grid, and the AgDatagrid. We could get Datas from outside, but it's another subject. let's keep it simple.&lt;br /&gt;&lt;p align="justify"&gt;here is the code of the page.xaml :&lt;br /&gt;&lt;/p&gt;&lt;div   style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;div   style="border-style: none; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;UserControl&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;x:Class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="AgDatagridDynamicData.Page"&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt;     &lt;span style="color: rgb(255, 0, 0);"&gt;xmlns&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;    &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;     &lt;span style="color: rgb(255, 0, 0);"&gt;xmlns:x&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;    &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;     &lt;span style="color: rgb(255, 0, 0);"&gt;xmlns:ag&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="clr-namespace:DevExpress.Windows.Controls;assembly=DevExpress.AgDataGrid.v8.2"&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;     &lt;span style="color: rgb(255, 0, 0);"&gt;xmlns:local&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="clr-namespace:AgDatagridDynamicData"&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;     &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="800"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="600"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;x:Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="LayoutRoot"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Background&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="black"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;TextBlock&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="0"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Column&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="0"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Text&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Columns (Parse with ';'):"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;                   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;TextBox&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;x:Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="ColumnsData"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Background&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="blackSmoke"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="500"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="0"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Column&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="1"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Text&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Column1;Column2;Column3"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;TextBox&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;TextBlock&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Auto"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="1"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Column&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="0"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Text&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Data (Parse Row with '*', cells with ';' :"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;TextBox&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;x:Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="CellsData"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Background&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="blackSmoke"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="500"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="1"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Column&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="1"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Text&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="DataA1;DataA2;DataA3*DataB1;DataB2;DataB3"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;TextBox&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;     &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Button&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Click&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Button_Click"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="2"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;ColumnSpan&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="2"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Content&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Generate AgDataGrid"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Button&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;ag:AgDataGrid&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="800"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="400"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;Row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="3"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Grid&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;ColumnSpan&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="2"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;AutoGenerateColumns&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="True"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;x:Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="mygrid"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;ag:AgDataGrid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  26:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;           &lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  27:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Grid&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  28:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;UserControl&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;All is in the page.xaml.cs, let's study it.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I only use data from the Textbox in the silverlight Control (you can pass data from another source, but we'll see that later in my PowerShell AGDatagrid widget for example).&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I use simple text parsing to build the grid :&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;column are parsed with ";"&lt;/li&gt;&lt;li&gt;Datas are parsed with "*" for each row, and in each row I parsed the cell with ";" &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Of course, using XML definition would be more powerfull, but I keep it simple for this example. For example :&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;Column :&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Column1;Column2;Column3&lt;/p&gt;Data :&lt;br /&gt;&lt;p align="left"&gt;DataA1;DataA2;DataA3*DataB1;DataB2;DataB3*DataC1;DataC2;DataC3&lt;/p&gt;&lt;div style="text-align: justify;"&gt;First, I put directly the DataSourceCreator Class of Vladimir in the Namespace of my control, without touching anything (this is what a call Magic Code)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/pilosite/SImu4PjeecI/AAAAAAAAAJE/2s5yr3curUA/s1600-h/agdynamic1%5B3%5D.jpg"&gt;&lt;img style="border: 0px none ;" alt="agdynamic1" src="http://lh3.ggpht.com/pilosite/SImu5BjdqLI/AAAAAAAAAJI/0u34IuhjMS0/agdynamic1_thumb%5B1%5D.jpg?imgmax=800" width="454" border="0" height="392" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;After inserting the code to call the library used by Vladimir's class (using System.Reflection;, etc...), let's defined our main code :&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;Let's have a look at our main class (UserControl ) :&lt;br /&gt;&lt;/p&gt;&lt;div   style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;div   style="border-style: none; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;partial&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; Page : UserControl   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt;     {   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; Columns;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; Data;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; Page()   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;         {   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;             InitializeComponent();               &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;         }   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;     &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;         {   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;     &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;             mygrid.Columns.Clear();   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;             &lt;span style="color: rgb(0, 128, 0);"&gt;// Adding Columns to the AgDatagrid&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;             &lt;span style="color: rgb(0, 128, 0);"&gt;// With Column type added in the Columns string &lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;             &lt;span style="color: rgb(0, 128, 0);"&gt;// we could use a Type checker and setting Column Type&lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;             &lt;span style="color: rgb(0, 128, 0);"&gt;// from code behind : &lt;/span&gt;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt;             &lt;span style="color: rgb(0, 128, 0);"&gt;// mygrid.Columns.Add(new AgDataGridTextColumn() { FieldName = SingleColumn});  &lt;/span&gt;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt;             Columns = ColumnsData.Text;   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt;             Data = CellsData.Text;   &lt;/pre&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; SingleColumn &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; Columns.Split(&lt;span style="color: rgb(0, 96, 128);"&gt;';'&lt;/span&gt;))   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt;             {              &lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt;                 mygrid.AddColumn(SingleColumn);&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt;             }&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt;  &lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  26:&lt;/span&gt;             &lt;span style="color: rgb(0, 128, 0);"&gt;// Here we set the DataSource with a direct call to the function of&lt;/span&gt;&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  27:&lt;/span&gt;             &lt;span style="color: rgb(0, 128, 0);"&gt;// Vladimir            &lt;/span&gt;&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  28:&lt;/span&gt;             mygrid.DataSource = GenerateData().ToDataSource();        &lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  29:&lt;/span&gt;         }&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;What is done here ?&lt;br /&gt;&lt;p style="text-align: justify;"&gt;Nothing special in the public Page() function : We only Initialize the component.&lt;/p&gt;all is in my "Button_Click" function :&lt;br /&gt;&lt;br /&gt;&lt;div   style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;div   style="border-style: none; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)   &lt;/pre&gt;&lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;  &lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;     mygrid.Columns.Clear();&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;// Adding Columns to the AgDatagrid&lt;/span&gt;&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;// With Column type added in the Columns string &lt;/span&gt;&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;// we could use a Type checker and setting Column Type&lt;/span&gt;&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;// from code behind : &lt;/span&gt;&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;// mygrid.Columns.Add(new AgDataGridTextColumn() { FieldName = SingleColumn});  &lt;/span&gt;&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;     Columns = ColumnsData.Text;&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;     Data = CellsData.Text;&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; SingleColumn &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; Columns.Split(&lt;span style="color: rgb(0, 96, 128);"&gt;';'&lt;/span&gt;))&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;     {                &lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;         mygrid.AddColumn(SingleColumn);&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;     }&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;  &lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;// Here we set the DataSource with a direct call to the function of&lt;/span&gt;&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;// Vladimir            &lt;/span&gt;&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt;     mygrid.DataSource = GenerateData().ToDataSource();        &lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;first I clear the grid (without It, my function will be an "Add to the grid", not a "build the grid from scratch")&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;Then We get the value of Columns and Data from the 2 textbox.&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;After this, we build the column :&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;div   style="border-style: none; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; SingleColumn &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; Columns.Split(&lt;span style="color: rgb(0, 96, 128);"&gt;';'&lt;/span&gt;))&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;     mygrid.Columns.Add(&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; AgDataGridTextColumn() { FieldName = SingleColumn });&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I generate only TextColumn type. We could define the column Type in the string and generate appropriate column type in the foreach, but I keep it simple here.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Then we set the Datasource:&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;div   style="border-style: none; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; mygrid.DataSource = GenerateData().ToDataSource(); &lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;We call the GenerateData function in the class (I got it from Vladimir Code) :&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div   style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;div   style="border-style: none; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; IEnumerable&amp;lt;IDictionary&amp;gt; GenerateData()&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;[] dataSplit = Data.Split(&lt;span style="color: rgb(0, 96, 128);"&gt;'*'&lt;/span&gt;);&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; RowNumber = dataSplit.Count();&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;[] ColumnSplit = Columns.Split(&lt;span style="color: rgb(0, 96, 128);"&gt;';'&lt;/span&gt;);&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; ColumnNumber = ColumnSplit.Count();&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; (var i = 0; i &amp;lt; RowNumber; i++)&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;     {&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;[] cellData = dataSplit[i].Split(&lt;span style="color: rgb(0, 96, 128);"&gt;';'&lt;/span&gt;);&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;         var dict = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;&amp;gt;();&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; (var j = 0; j &amp;lt; ColumnNumber; j++)&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;         {&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;             dict[ColumnSplit[j]] = cellData[j];&lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;         }&lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;yield&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; dict;                &lt;/pre&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;     }             &lt;/pre&gt;   &lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; line-height: 12pt;font-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The main things here is this :&lt;br /&gt;&lt;br /&gt;&lt;p align="justify"&gt;We declare a new Dictionnary and build it with Key and value :&lt;/p&gt;&lt;div style="text-align: justify;"&gt;key is the column name, value is the cell value. Here I dynamically set the column : I just parse the Column strings and use each element as Dictionnary key (dict[ColumnSplit[j]].&lt;br /&gt;&lt;/div&gt;&lt;h4 align="center"&gt;that's all !&lt;/h4&gt;&lt;div style="text-align: justify;"&gt;As you see, it's pretty easy to build my AgDatagrid dynamically.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;To go further, you can use XML strings instead of CSV-like format, put the column type in the Column Strings... possibilities are Endless !&lt;/p&gt;&lt;br /&gt;Thanks to Azret and the support Team from DevExpress for their help, and thanks to Vladimir Bodurov for this really cool Code snippet !&lt;br /&gt;&lt;br /&gt;&lt;p style="text-align: center;"&gt;questions ? Feel free to put comments on this post.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;strong&gt;HAVE FUN with Silverlight !&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-3245265272165043081?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/3245265272165043081/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=3245265272165043081' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/3245265272165043081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/3245265272165043081'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/07/agdatagrid-and-silverlight-datagrid-how.html' title='AgDatagrid and Silverlight Datagrid : how to build a dynamic datasource ?'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/pilosite/SImu3ZPPbwI/AAAAAAAAAJA/sdcf-mWSCMY/s72-c/agdynamic2_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-547827968935641528</id><published>2008-07-18T01:59:00.001-07:00</published><updated>2008-07-18T02:03:33.741-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Podcast'/><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PoshBoard and DevInfra in the Last PowerShell Podcast (33)</title><content type='html'>&lt;div style="text-align: justify;"&gt;I'm pleased to tell you that Jonathan Walz &amp;amp; Hal Rottenberg from &lt;a href="http://powerscripting.wordpress.com/"&gt;PowerScripting&lt;/a&gt; speak about PoshBoard and ASP.NET samples of my blog in the last PowerShell Podcast:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="text-align: center;"&gt;&lt;a href="http://powerscripting.wordpress.com/2008/07/13/episode-33-cage-match-powerscripting-vs-quest/" rel="bookmark" title="Read Episode 33 – Cage Match: PowerScripting vs. Quest"&gt;Episode 33 – Cage Match: PowerScripting vs. Quest&lt;/a&gt;&lt;/h2&gt;&lt;div style="text-align: justify;"&gt;I'm really glad they like it, and I invite you to listen to &lt;a href="http://powerscripting.wordpress.com/2008/07/13/episode-33-cage-match-powerscripting-vs-quest/"&gt;this PodCast&lt;/a&gt;, It really worth it for many other reasons than poshboard ! :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-547827968935641528?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/547827968935641528/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=547827968935641528' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/547827968935641528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/547827968935641528'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/07/poshboard-and-devinfra-in-last.html' title='PoshBoard and DevInfra in the Last PowerShell Podcast (33)'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-6527778597415747188</id><published>2008-07-10T10:56:00.000-07:00</published><updated>2008-07-10T11:02:38.299-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Dashboard'/><category scheme='http://www.blogger.com/atom/ns#' term='codeplex'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Poshboard preview available !</title><content type='html'>People asked me a preview of Poshboard to play with it : so be it ! A preview is now available on codeplex &lt;a href="http://www.codeplex.com/poshboard"&gt;here&lt;/a&gt;, or follow this link : http://www.codeplex.com/poshboard&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-6527778597415747188?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/6527778597415747188/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=6527778597415747188' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/6527778597415747188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/6527778597415747188'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/07/poshboard-dispo-en-preview.html' title='Poshboard preview available !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-6321257204839205087</id><published>2008-07-07T05:06:00.000-07:00</published><updated>2008-07-10T11:03:38.372-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poshboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Dashboard'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PowerShell Dashboard : ASP.NET, Silverlight and PowerShell in a shaker !</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;Update : People asked me a preview of Poshboard to play with it : so be it ! A preview is now available on codeplex &lt;/span&gt;&lt;a style="color: rgb(0, 102, 0); font-weight: bold;" href="http://www.codeplex.com/poshboard"&gt;here&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;, or follow this link : http://www.codeplex.com/poshboard&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here's a little video of my "coming soon" open source project called "&lt;span style="font-weight: bold;"&gt;PowerShell Dashboard&lt;/span&gt;" (PoshBoard for friends). This project will be available soon on the &lt;a href="http://forge.octo.com/"&gt;open source forge&lt;/a&gt; of my company &lt;a href="http://www.octo.com/"&gt;Octo Technology&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;The goal of this project is to deliver modular web portal based on PowerShell. The idea is to use Web GUI like &lt;a href="http://www.google.fr/ig?source=fhig"&gt;igoogle&lt;/a&gt;, &lt;a href="http://www.pageflakes.com/"&gt;PageFlakes&lt;/a&gt; or &lt;a href="http://www.netvibes.com/"&gt;Netvibes&lt;/a&gt;, for IT Admin and infrastructure management.&lt;br /&gt;&lt;br /&gt;This will let you easely build infrastructure dashboards without the need to code in ASP.NET / AJAX / C# or other compiled language :&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;All you need to know is scripting&lt;br /&gt;All you need to have is imagination.&lt;br /&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;This project is based on &lt;a href="http://www.codeplex.com/dropthings"&gt;Dropthings&lt;/a&gt;, a great ASP.NET/AJAX open source project by Omar Al Zabir, turned to an intranet project.&lt;br /&gt;&lt;br /&gt;For this first teaser, I show you a first widget to generate Silverlight charts directly fom PowerShell scripts. I've used Chart generation (Column, pie...) with the great Silverlight charting library &lt;a href="http://www.visifire.com/"&gt;VISIFIRE&lt;/a&gt;  (free and open source too)&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;This first demonstation presents the general concept of the web portal. It'll be freely available in the coming weeks. Then I'll propose several componants and innovations that will let you have much fun with PowerShell development ! :)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Here is the vidéo :&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;center&gt;&lt;object width="400" height="300"&gt; &lt;param name="allowfullscreen" value="true"&gt; &lt;param name="allowscriptaccess" value="always"&gt; &lt;param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1295215&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt; &lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1295215&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.vimeo.com/1295215?pg=embed&amp;amp;sec=1295215"&gt;PowerShell Dashboard Web Portal Presentation&lt;/a&gt; from &lt;a href="http://www.vimeo.com/user301430?pg=embed&amp;amp;sec=1295215"&gt;pilosite&lt;/a&gt; on &lt;a href="http://vimeo.com/?pg=embed&amp;amp;sec=1295215"&gt;Vimeo&lt;/a&gt;.&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;This video is in the HD Ready Format (1280x720), &lt;span style="font-weight: bold;"&gt;I strongly recommand you to click on the HD icon after launching the video to see it in full resolution&lt;/span&gt; (you can then go to full screen).&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;You can also&lt;a href="http://www.vimeo.com/1280433?pg=embed&amp;amp;sec=1280433&amp;amp;hd=1"&gt; click here&lt;/a&gt; and select full screen. Last but not least, you can also directly download it from this link !&lt;br /&gt;&lt;br /&gt;Oh, by the way, forgive my exotic english, hope you'll understand everything, I try to do my best ! :)&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Questions ? Ideas ? you can contact me by mail by &lt;a href="mailto:devinfra@gmail.com"&gt;clicking here&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-6321257204839205087?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/6321257204839205087/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=6321257204839205087' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/6321257204839205087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/6321257204839205087'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/07/powershell-dashboard-aspnet-silverlight.html' title='PowerShell Dashboard : ASP.NET, Silverlight and PowerShell in a shaker !'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-44639887557489304</id><published>2008-05-26T04:01:00.000-07:00</published><updated>2008-05-26T04:23:20.852-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PowerShell and ASP.NET Part 3</title><content type='html'>&lt;p align="justify"&gt;This is the third and last part of this little Tutorial on PowerShell and ASP.NET.&lt;/p&gt;&lt;p align="justify"&gt;We will discuss about managing script from a webform and how to deploy this website on a IIS server.&lt;/p&gt;&lt;h3&gt;&lt;span style="font-size:100%;"&gt;Manage script&lt;/span&gt;&lt;/h3&gt;&lt;p align="justify"&gt;We saw previously how to execute PowerShell code from a Textbox. We will now learn how to manage on-the-fly changes on a prebuild PowerShell script.&lt;/p&gt;&lt;p align="justify"&gt;This is a good method when you want, for example, create à provisioning or audit web portal. User won't write directly PowerShell code, but will fill a form that will then call a script with arguments.&lt;/p&gt;&lt;p align="justify"&gt;To illustrate this, here is another example with a WMI request engine that takes a machine name as parameter. I slightly modified our former example : I added a Textbox to put a machine Name :&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/pilosite/SDbEVHHd_WI/AAAAAAAAAG0/ybvIjdbkZfs/powerASP4%5B6%5D.jpg"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="357" alt="powerASP4" src="http://lh4.ggpht.com/pilosite/SDbEWHHd_XI/AAAAAAAAAG8/eAYNibFF1Ys/powerASP4_thumb%5B4%5D.jpg" width="501" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p align="justify"&gt;Let's see what changed in our code. Ny the way, not much things : We will now read a embbeded Script and modify is content before execution.&lt;/p&gt;&lt;p align="justify"&gt;Here's the script added to the project : &lt;/p&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;$strComputer = &lt;span style="color:#006080;"&gt;"*ComputerName*"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;get-wmiobject -&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#006080;"&gt;"Win32_LogicalDisk"&lt;/span&gt; -&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; &lt;span style="color:#006080;"&gt;"root\cimv2"&lt;/span&gt; -computername $strComputer &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt;{$_.DriveType –eq 3}&lt;span style="color:#0000ff;"&gt;out&lt;/span&gt;-&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;A classic PowerShell WMI request. As you can see, I put the Machine name as an argument on the first line. I gives an arbitrary name "*ComputerName*" that will let us replace it with the content of the Textbox. &lt;/p&gt;&lt;p&gt;Below is the modified code :&lt;/p&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;        &lt;span style="color:#008000;"&gt;// On the fly script modification before execution&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;        StreamReader objReader = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StreamReader(Server.MapPath(&lt;span style="color:#006080;"&gt;"~/scripts/WmiAsset.ps1"&lt;/span&gt;));&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;        &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; strContent = objReader.ReadToEnd();&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;        strContent = strContent.Replace(&lt;span style="color:#006080;"&gt;"*ComputerName*"&lt;/span&gt;, TxtComputerName.Text);&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;        &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.executePowerShellCode(strContent);&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;First thing, we will read the PowerShell script file. I put it in a subfolder called "Scripts". We use the SYSTEM.IO library to do this.&lt;/p&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;StreamReader objReader = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StreamReader(Server.MapPath(&lt;span style="color:#006080;"&gt;"~/scripts/WmiAsset.ps1"&lt;/span&gt;));&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Then we put this script in a string variable and close the StreamReader object:&lt;/div&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; strContent = objReader.ReadToEnd();&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;Now, we call the replace method on this string. Our goal is to replace "*computername*" with the content of the Textbox.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;strContent = strContent.Replace(&lt;span style="color:#006080;"&gt;"*ComputerName*"&lt;/span&gt;, TxtComputerName.Text);&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;The important thing here is to have unique name in the script when you want to do this change (here *computername* is used only once). This is easy to achieve, because you're the Writer of the POwerShell Code ;)&lt;/p&gt;&lt;p align="justify"&gt;That's the deal, now we execute the PowerShell code as before :&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.executePowerShellCode(strContent);&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;Nothing really tricky here. If you need to modifiy your request engine, you only need to edit the .PS1 file, no C#/ASP.NET is required (this can be delegate to every administrator that got skills on PowerShell)&lt;/p&gt;&lt;p align="justify"&gt;You can of course put several parameters in your web form. The limit is your imagination (and business needs, by the way). There's many little things to implement in order to have a "Profesionnal" powershell website (Error handler, better output support...), but you now have the bases to achieve this. Hope you got a better view of PowerShell/ASP.NET interaction.&lt;/p&gt;&lt;p&gt;To finish this tutorial, let's see how to publish the website on IIS.&lt;/p&gt;&lt;h3&gt;WebSite deployment&lt;/h3&gt;&lt;p align="justify"&gt;Our main goal is to use a Service Account to execute tasks (here, our scripts). This simplify the rights management process and delegation, cause it's not necessary to gives administrator rights to every user of the website. &lt;/p&gt;&lt;p align="justify"&gt;We only need to know the identity of the end user and filter website access.&lt;/p&gt;&lt;p align="justify"&gt;The deployment strategy on IIS is :&lt;/p&gt;&lt;p align="justify"&gt;First, Filter the website access. Just put appropriate rights on the website folder (put a user group on the folder with read access only).&lt;/p&gt;&lt;p align="justify"&gt;On your IIS server, desactivate the anonymous access, and select "Integrated Windows Authentication"&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/pilosite/SDbEW3Hd_YI/AAAAAAAAAHE/y1oILjGPvhM/powerASP5%5B3%5D.jpg"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="403" alt="powerASP5" src="http://lh3.ggpht.com/pilosite/SDbEX3Hd_ZI/AAAAAAAAAHM/ppJSZoGLrls/powerASP5_thumb%5B1%5D.jpg" width="322" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p align="justify"&gt;Then create an application pool to delegate the server side code to a service Account. To do this, create a new application pool open it's properties and define "Identity" as shown below :&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/pilosite/SDbEY3Hd_aI/AAAAAAAAAHU/coSeXNK0aGI/powerASP6%5B3%5D.jpg"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="311" alt="powerASP6" src="http://lh5.ggpht.com/pilosite/SDbEZXHd_bI/AAAAAAAAAHc/QGpEWUcNKA4/powerASP6_thumb%5B1%5D.jpg" width="331" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p align="justify"&gt;Finally, open your website properties and select the good application pool for it:&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/pilosite/SDbEaHHd_cI/AAAAAAAAAHk/kKVuxUCBR6o/PowerASP7%5B3%5D.jpg"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/pilosite/SDbEbHHd_dI/AAAAAAAAAHs/82dKXkX7RrI/PowerASP7%5B6%5D.jpg"&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/pilosite/SDbEcXHd_eI/AAAAAAAAAH0/NHYdh3UAd1M/PowerASP7%5B10%5D.jpg"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="314" alt="PowerASP7" src="http://lh5.ggpht.com/pilosite/SDbEdXHd_fI/AAAAAAAAAH8/pPnuHSs4GWk/PowerASP7_thumb%5B4%5D.jpg" width="363" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p align="justify"&gt;Modify your web.config to use impersonation. Go to the "Authentication mode" line of this file and add the following code :&lt;/p&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;authentication&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;mode&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Windows"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"   &gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;identity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;impersonate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="true"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here you go : your website now use impersonation and access is filtered by NTFS rights.&lt;/p&gt;&lt;p&gt;I hope this little tutorial gives you ideas and inspiration. I well come back soon with another concept  with ASP.NET / PowerShell / AJAX and Silverlight !&lt;/p&gt;&lt;p align="justify"&gt;Here is the source code : &lt;a href="http://www.fileden.com/files/2008/5/19/1920192/PowerShellASP-2.zip"&gt;PowerShellASP2&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-44639887557489304?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/44639887557489304/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=44639887557489304' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/44639887557489304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/44639887557489304'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/05/powershell-and-aspnet-part-3.html' title='PowerShell and ASP.NET Part 3'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/pilosite/SDbEWHHd_XI/AAAAAAAAAG8/eAYNibFF1Ys/s72-c/powerASP4_thumb%5B4%5D.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-5046364656941938009</id><published>2008-05-26T01:47:00.000-07:00</published><updated>2008-05-26T03:58:44.030-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PowerShell and ASP.NET Part 2</title><content type='html'>&lt;p&gt;Reminder : Source code of this sample is &lt;a href="http://www.fileden.com/files/2008/5/19/1920192/PowerShellASP.zip"&gt;available here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;You need the following tools to use it :&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/express/vwd/"&gt;WebDevelopper Express Edition&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.asp.net/AJAX/downloads/"&gt;Ajax controls toolkit and library&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;We will now study this web site topology and codes. &lt;/p&gt;&lt;h3&gt;WEB.CONFIG&lt;/h3&gt;&lt;p align="justify"&gt;We start with the easiest thing : our web.config&lt;/p&gt;&lt;p align="justify"&gt;there's very few modifications : our first objective is to add assemblies references in our project, in order to create runspace and pipeline in the code-behind.&lt;/p&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;assemblies&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;add&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;assembly&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;add&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;assembly&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;add&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;assembly&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;add&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;assembly&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;add&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;assembly&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;add&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;assembly&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;assemblies&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;That's a cool start, now we will study the user interface !&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;DEFAULT.ASPX&lt;/h3&gt;&lt;div style="TEXT-ALIGN: justify"&gt;You can do your design with simple drag and drop of controls (Textbox, Combox, etc...). This is pretty simple. There is a good &lt;a href="http://www.w3schools.com/aspnet/default.asp"&gt;ASP.NET tutorial here&lt;/a&gt; if you want to know more about it.&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Let see what are the particularities of this example &lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;b&gt;UpdatePanel&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In the first part of this tutorial, I told you that I used AJAX to :&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;· Manage a Timer&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;· Manage refresh of the Output Textbox.&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;In order to use AJAX extensions in our website project, you need to put a ScriptManager in the .aspx document (this will let you use other AJAX controls)&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;br /&gt;I put it at the beginning of the form :&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;body&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;form&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;id&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="form1"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:ScriptManager&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="ScriptManager1"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:ScriptManager&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;br /&gt;Next, here is the core interface (I bypass the top informations, not really needed):&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:TextBox&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="TxtPowerShellScript"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;TextMode&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="MultiLine"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Width&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="597px"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;            &lt;span style="COLOR: rgb(255,0,0)"&gt;Height&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="194px"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;BackColor&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="#012456"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ForeColor&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="#EEEDF0"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Wrap&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="False"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:TextBox&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;br&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;        &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:UpdatePanel&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="UpdatePanel1"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;ContentTemplate&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;                &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:Button&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="BtnExecuteScript"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Text&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="Launch Script"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;OnClick&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="BtnExecuteScript_Click"&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;                &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;br&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;                Output :&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;                &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;br&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;                &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:TextBox&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="TxtResult"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Height&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="199px"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;TextMode&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="MultiLine"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Width&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="600px"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;                    &lt;span style="COLOR: rgb(255,0,0)"&gt;Wrap&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="False"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;BackColor&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="#012456"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ForeColor&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="#EEEDF0"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:TextBox&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;                &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;br&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;                &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:Timer&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="Timer1"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Enabled&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="False"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Interval&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="100"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;OnTick&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="Timer1_Tick"&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;            &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;ContentTemplate&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:UpdatePanel&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;First element is our Input Textbox to write scripts :&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:TextBox&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="TxtPowerShellScript"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;TextMode&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="MultiLine"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Width&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="597px"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;          &lt;span style="COLOR: rgb(255,0,0)"&gt;Height&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="194px"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;BackColor&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="#012456"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ForeColor&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="#EEEDF0"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Wrap&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="False"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:TextBox&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Nothing special here, I just put some parameters like multiline suspport and colors to match PowerShell console.&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Then there is the Execute button and the output Textbox. They are embbeded in a UpdatePanel Control. This control let us refresh only this elements without refreshing the whole page when we'll update content. You can see our Timer too :&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:Timer&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;ID&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="Timer1"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Enabled&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="False"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;Interval&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="100"&lt;/span&gt; &lt;span style="COLOR: rgb(255,0,0)"&gt;OnTick&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="Timer1_Tick"&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;The Interval parameter (Interval="100") define the refresh rate (milliseconds), the OnTick (OnTick="Timer1_Tick") specify the function called in the code-behind when the Timer refresh. The Timer is desactivated by default (Enabled="False") in order to avoid useless charge on the serve. It's activated only when the Button is clicked.&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;That's all for the user interface. Except the UpdatePanel (which is only another control from the designer point of view), we are really on a classic webForm design. We will no study the Code-Behind part of the website.&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;DEFAULT.ASPX.CS&lt;/h3&gt;&lt;div style="TEXT-ALIGN: justify"&gt;This is the C# Code that will manage our PowerShell execution and the update of the output Textbox.&lt;/div&gt;&lt;p&gt;Let's go from the beginning : At the very top of the code, I just add 3 more instances (all the others are generated by default when you create an asp.NET project website) :&lt;/p&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"&gt;using&lt;/span&gt;&lt;span lang="EN-US"&gt; System.Management.Automation;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"&gt;using&lt;/span&gt;&lt;span lang="EN-US"&gt; System.Management.Automation.Runspaces;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="LINE-HEIGHT: 115%"&gt;using&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%"&gt; System.IO;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;b&gt;System.Management.Automation&lt;/b&gt; and &lt;b&gt;.Runspaces&lt;/b&gt; are required to create the PowerShell runspace and the Pipeline. &lt;b&gt;System.IO&lt;/b&gt; will be use to convert the Input Textbox content as you'll see later.&lt;/div&gt;&lt;p&gt;We'll then first create Runspace and Pipeline object at the beginning of the main class to expose them in all functions.&lt;/p&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;Runspace runspace = RunspaceFactory.CreateRunspace();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;Pipeline pipe;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;We will now study the code, beginning from the user interaction : the Click on the Button. The function (line 85) is :&lt;/p&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;void&lt;/span&gt; BtnExecuteScript_Click(&lt;span style="COLOR: rgb(0,0,255)"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt; strCurrentId = System.Security.Principal.WindowsIdentity.GetCurrent().Name;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;    &lt;span style="COLOR: rgb(0,128,0)"&gt;// Enable timer and disable button, clear TxtResult textbox&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.Timer1.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.BtnExecuteScript.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonecolor:black;" &gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.TxtResult.Text = &lt;span style="COLOR: rgb(0,96,128)"&gt;""&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: rgb(0,128,0)"&gt;// put the username at the beginning of the output (optional)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonecolor:black;" &gt;    Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] = &lt;span style="COLOR: rgb(0,96,128)"&gt;"Initiateur de la demande : "&lt;/span&gt; + strCurrentID + &lt;span style="COLOR: rgb(0,96,128)"&gt;"\r\n"&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonecolor:black;" &gt;     &lt;span style="COLOR: rgb(0,128,0)"&gt;// Gather script from the TxtPowerShellScript and convert it from html to clean text&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: rgb(0,128,0)"&gt;// then call executePowerShellCode function with the result&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonecolor:black;" &gt;      &lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt; strContent = TxtPowerShellScript.Text;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;    StringWriter writer = &lt;span style="COLOR: rgb(0,0,255)"&gt;new&lt;/span&gt; StringWriter();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;     Server.HtmlDecode(strContent, writer);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.executePowerShellCode(writer.ToString());&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Let's see what happen. First, I create the strCurrentID string that will hold the current user name. This is not mandatory for our example, but this information is interesting to monitor our website activities. &lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;When we'll deploy our site, it's a Service Account that will handle all the code execution. as we want (if it's not the case, you should!) monitor the Site Activities, it's important to know the name of the user who fired an action, in order to know who to blame if something goes wrong :)&lt;/div&gt;&lt;p&gt;System.Security.Principal.WindowsIdentity.GetCurrent().Name gives us this info.&lt;/p&gt;&lt;p&gt;Then we activate the Timer:&lt;/p&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.Timer1.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;We desactivate the button (to avoid unwanted launch of script while another is running):&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.BtnExecuteScript.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;And we reset the Output Textbox : &lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.TxtResult.Text = &lt;span style="COLOR: rgb(0,96,128)"&gt;""&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Then we will create our Session Variable that I called "PowerTrace". We feed it first with the name of the user :&lt;br /&gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] = &lt;span style="COLOR: rgb(0,96,128)"&gt;"Initiateur de la demande : "&lt;/span&gt; + strCurrentID + &lt;span style="COLOR: rgb(0,96,128)"&gt;"\r\n"&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Let's go deeper on this point. All our problem here is to pass data from our code behind to the aspx controls (output textbox) when we refresh the page. As these 2 elements are isolated (each has its context : WebForm on the client side, codebehind on the server side), we need a way to put the output of our script in the Output Textbox.&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;There is several solutions, more or less smart (Create temporary textfile, add output as an URL element...). The Session VAriable is in our context the best and simple way to do this. This let you present datas to the user-side of the website that lives until the user session ends. Without this, when we refresh the page, every informations that are on the server side (variables from the codebehind) will be reset.&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;As the script output won't takes a lot of Memory and our website is targeted to be an intranet solution for administrators, this is a good choice, easy to setup.&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;The content of this variable will be exposed until the end of the user session. Now we'll gather the content of the Input Textbox :&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt; strContent = TxtPowerShellScript.Text;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;Problem here : We are in an HTML Context, the content of the Textbox is in HTML format. This won't let us execute the code as is, cause unwanted informations are added ("\r\n" for carraige return...). We can't use this code with PowerShell like this.&lt;/p&gt;&lt;p align="justify"&gt;We are lucky : there is a method that let us do just that : convert HTML string to standard text string. It's name is HTMLDECODE&lt;br /&gt;&lt;br /&gt;This is this method that I use here : I create a StringWriter object (to build string), and use the HTMLDECODE method :&lt;/p&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;StringWriter writer = &lt;span style="COLOR: rgb(0,0,255)"&gt;new&lt;/span&gt; StringWriter()&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;Server.HtmlDecode(strContent, writer);&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Then I call the ExecutePowerShellCode function to execute this code. &lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.executePowerShellCode(writer.ToString());&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Let's see what's inside this ExecutePowerShellCode function:&lt;/p&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;void&lt;/span&gt; executePowerShellCode(&lt;span style="COLOR: rgb(0,0,255)"&gt;string&lt;/span&gt; code)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none" color="black"&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)" size="8pt"&gt;    runspace.Open();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none" color="black"&gt;    pipe = runspace.CreatePipeline(code);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)" size="8pt"&gt;    pipe.Input.Close();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;    &lt;span style="COLOR: rgb(0,128,0)"&gt;// Call output_DataReady when data arrived in the pipe&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)" size="8pt"&gt;    pipe.Output.DataReady += &lt;span style="COLOR: rgb(0,0,255)"&gt;new&lt;/span&gt; EventHandler(Output_DataReady);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;    &lt;span style="COLOR: rgb(0,128,0)"&gt;// Call pipe_StateChanged &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)" size="8pt"&gt;    pipe.StateChanged += &lt;span style="COLOR: rgb(0,0,255)"&gt;new&lt;/span&gt; EventHandler&amp;lt;PipelineStateEventArgs&amp;gt;(pipe_StateChanged);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;    pipe.InvokeAsync();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)" size="8pt"&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Nothing special, I use a really classic way to execute Powershell code async. You'll find many sample on internet that do just that.&lt;br /&gt;&lt;br /&gt;We open a new runspace&lt;/div&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" color="black"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;runspace.Open();&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Then we create a piepline in this runspace, with the code from the Input Textbox&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonecolor:black;" &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;pipe = runspace.CreatePipeline(code);&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;We close the Pipeline Input&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" color="black"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;pipe.Input.Close();&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;We then create a Event manager. It calls the "Output_Dataready" function when something appears in the pipeline output.&lt;br /&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;pipe.Output.DataReady += &lt;span style="COLOR: rgb(0,0,255)"&gt;new&lt;/span&gt; EventHandler(Output_DataReady);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="TEXT-ALIGN: justify"&gt;We create another Event manager. It calls the "pipe_StateChanged" function when the state of the pipeline Changed. Here, we test if the pipeline state is "Terminated", wich told us that the script ends. Then we will do some things, like activate the button again (we'll speak of that later)&lt;br /&gt;&lt;/div&gt;Finally, we call the "InvokeAsync" method that will execute the pipeline asynchronously.&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" color="black"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;pipe.InvokeAsync();&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Ok, now our code is waiting for activities from the pipeline. We'll now look at the functions "Output_Dataready" when data arrived at the pipeline output .&lt;/p&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" color="black"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;void&lt;/span&gt; Output_DataReady(&lt;span style="COLOR: rgb(0,0,255)"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)" size="8pt"&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;    PipelineReader&amp;lt;PSObject&amp;gt; reader = (PipelineReader&amp;lt;PSObject&amp;gt;)sender;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)" size="8pt"&gt;    String strPowershellTrace = reader.Read().ToString();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;    Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] += strPowershellTrace + &lt;span style="COLOR: rgb(0,96,128)"&gt;"\r\n"&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)" size="8pt"&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;We first read the objects in the pipeline output and put it in a reader object :&lt;br /&gt;&lt;/p&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" color="black"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;PipelineReader&amp;lt;PSObject&amp;gt; reader = (PipelineReader&amp;lt;PSObject&amp;gt;)sender;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Then, we create a string variable wich get the output from the pipeline (script output)&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;String strPowershellTrace = reader.Read().ToString();&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Finally, we add this variable in our Session Variable&lt;/p&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none"&gt;Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] += strPowershellTrace + &lt;span style="COLOR: rgb(0,96,128)"&gt;"\r\n"&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;As you can see, I add "\r\n" at the end to handle carriage return in HTML (this output will be in a HTML Textbox). To conclude this part on PowerShell code exectution, let's have a look on the last function when the pipeline state changes.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Here, we put a condition on the pipeline state : if the status is completed, we do some actions, else we do nothing (we only need for the example to test if our script execution is completed)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;" &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;if&lt;/span&gt; (pipe.PipelineStateInfo.State == PipelineState.Completed)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace"&gt;…&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;So, what we do here ? First we close the runspace &lt;/p&gt;&lt;p&gt;Runspace.close();&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Thens, while our Session Variable isn't null AND there's something in it (Number of caracters greater than zero), we don't do anything. We do this to let time for our Timer to write the Session Variable data in the Output Textbox. We'll see after how and why&lt;/div&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM-: 4pxcolor:gray;" &gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;" &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;while&lt;/span&gt; ((Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] != &lt;span style="COLOR: rgb(0,0,255)"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;].ToString().Length &amp;gt; 0))&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none" size="8pt" face="consolas,'Courier New',courier,monospace"&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); 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; BORDER-BOTTOM-STYLE: none"&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: rgb(0,0,0); BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" size="8pt" color="black" face="consolas,'Courier New',courier,monospace"&gt;runspace.Close();&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Our last task is to remove our Session variable and wait for another script :&lt;br /&gt;&lt;/div&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none"&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;Session.Remove(&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Let's study the Timer Function :&lt;br /&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM-: 4px" color="gray"&gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none"&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="COLOR: rgb(0,0,255)"&gt;void&lt;/span&gt; Timer1_Tick(&lt;span style="COLOR: rgb(0,0,255)"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" size="8pt" color="black"&gt;    {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)" size="8pt"&gt;        &lt;span style="COLOR: rgb(0,0,255)"&gt;if&lt;/span&gt; (Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] == &lt;span style="COLOR: rgb(0,0,255)"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" size="8pt" color="black"&gt;        {&lt;br /&gt;&lt;/pre&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; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)"&gt;            &lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.BtnExecuteScript.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" size="8pt" color="black"&gt;            Timer1.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/pre&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; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)"&gt;            &lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.TxtResult.Text += &lt;span style="COLOR: rgb(0,96,128)"&gt;"Fin du script"&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"   &gt;        }&lt;br /&gt;&lt;/pre&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; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)"&gt;        &lt;span style="COLOR: rgb(0,0,255)"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: nonefont-family:consolas,'Courier New',courier,monospace;font-size:8pt;color:black;"   &gt;        {&lt;br /&gt;&lt;/pre&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; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)"&gt;            String strPoshTrace = Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;].ToString();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" size="8pt" color="black" face="consolas,'Courier New',courier,monospace"&gt;              &lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.TxtResult.Text += strPoshTrace;&lt;br /&gt;&lt;/pre&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; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)"&gt;            Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] = &lt;span style="COLOR: rgb(0,96,128)"&gt;""&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" size="8pt" color="black" face="consolas,'Courier New',courier,monospace"&gt;        }&lt;br /&gt;&lt;/pre&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: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;This function is called every 100 ms in our case, regardless of the pipeline Events. Here is what we do :&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;If our Session Variable is null (this happens only after the "remove" in the "Pipe_StateChanged" function), we :&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;· Activate the button&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;· Deactivate the Timer&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;· Write "End of script" in the Output Textbox&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.BtnExecuteScript.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;Timer1.Enabled = &lt;span style="COLOR: rgb(0,0,255)"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.TxtResult.Text += &lt;span style="COLOR: rgb(0,96,128)"&gt;"Fin du script"&lt;/span&gt;;&lt;/pre&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: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"&gt;&lt;/pre&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" size="8pt" color="black" face="consolas,'Courier New',courier,monospace"&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Else we gather the Session variable content in a string&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: nonefont-size:8pt;color:black;"  &gt;String strPoshTrace = Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;].ToString();&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;br /&gt;We add it to the Output Textbox&lt;br /&gt;&lt;/div&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" size="8pt" color="black"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;this&lt;/span&gt;.TxtResult.Text += strPoshTrace;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;And we empty the Session Variable&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;br /&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; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none"&gt;Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] = &lt;span style="COLOR: rgb(0,96,128)"&gt;""&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;br /&gt;Note that we don't remove the Session variable, this will valid the condition in our Pipe_StateChange :&lt;/p&gt;&lt;div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; BORDER-BOTTOM-WIDTH: 1px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM-: 4pxcolor:gray"&gt;&lt;br /&gt;&lt;div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244)font-size:8pt;" &gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none" size="8pt" color="black" face="consolas,'Courier New',courier,monospace"&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;while&lt;/span&gt; ((Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;] != &lt;span style="COLOR: rgb(0,0,255)"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (Session[&lt;span style="COLOR: rgb(0,96,128)"&gt;"PowerTrace"&lt;/span&gt;].ToString().Length &amp;gt; 0))&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;This is it, we've finished reviewing the sample code. We will talk in the third and last part of this tutorial about :&lt;/p&gt;&lt;p&gt;· How to manage PowerShell script from a Web Form&lt;/p&gt;&lt;p&gt;· How to deploy this site on a IIS server with appropriate security&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-5046364656941938009?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/5046364656941938009/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=5046364656941938009' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/5046364656941938009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/5046364656941938009'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/05/powershell-and-aspnet-part-2.html' title='PowerShell and ASP.NET Part 2'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-4858937686384778683</id><published>2008-05-20T02:54:00.000-07:00</published><updated>2009-02-27T17:35:42.287-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PowerShell and ASP.NET Part 1</title><content type='html'>&lt;div align="justify"&gt;Original French version available &lt;a href="http://devinfra.blogspot.com/2008/05/powershell-et-aspnet-part-1.html"&gt;here&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;As you know, PowerShell let us create graphical interfaces with the .NET winforms. With it, we can build front end to manage our scripts. It's a really nice feature, and tools like &lt;a href="http://www.adminscripteditor.com/"&gt;AdminScriptEditor&lt;/a&gt; make it pretty easy.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;I've been oftenly asked this question :&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;How could we integrate easely PowerShell scripting to a web site ?&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;This is really a good point, cause using a web portal instead of winforms brings many benefits :&lt;br /&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;ul&gt;&lt;li&gt;No needs to install PowerShell and Snapins on every admin workstations in order to use scripts (I think about Active Directory provisioning, Support dashboard, virtual machines manager and so on...)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;... in order to centralize and delegate administration easely&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Filter acces and use of powershell in the company (everything is launched from the server and not from the workstation)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tracability : from a single point, we know who did what (with appropriate logging), and could do a life-saving CTRL+Z on a innapropriate action&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Can be embbeded in any entreprise web portal (Sharepoint/WSS for example)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p align="justify"&gt;This is a great story, however there's some drawbacks at first look for people who didn't put an hand on ASP.NET :&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Developping with ASP.NET and C# is radically different from scripting&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Samples of invocation method of PowerShell from C# seems difficult for Infrastructure people&lt;/li&gt;&lt;br /&gt;&lt;li&gt;We can do C# developpement to achieve result but ...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;... we need to be lucky enough to have a "real" .NET developper at hand.&lt;/li&gt;&lt;/ul&gt;&lt;div align="justify"&gt;That's why I suggest you this first example of PowerShell/ASP.NET interaction that takes things from a different point of view, more "Infra-People compliant". To make it easier to understand, we will separate things :&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;ASP.NET and C# to manage only the user interface&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Call PowerShell scripts directly (no C# block)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Establish a communication between PowerShell output and the web site to follow the progress&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;This let us use PowerShell as our process engine as usual (regular scripting)&lt;/p&gt;&lt;p align="justify"&gt;As we'll see in this tutorial, the code is rather simple and the web site really light, but we will do pretty complex tasks by calling PowerShell. I won't make a ASP.NET tutorial, cause I'm not the best guy around to do this, and we'll only use basics to achieve our result.&lt;br /&gt;&lt;br /&gt;However there's some unavoidable things to understand before going deeper in the code&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-size:130%;"&gt;Some bases on ASP.NET (for Infrastructure people)&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;To summarize intensely, you can look at a ASP.NET site as a HTML page that can call .NET code from a server, and not just the Browser/workstation.&lt;/p&gt;&lt;div align="justify"&gt;Here's a example that will be our first project from this tutorial. Note that we can (and will do!) use the free version of Visual Studio for Web development: &lt;a href="http://www.microsoft.com/express/vwd/"&gt;Visual Studio Web developper Express Edition&lt;/a&gt;, please download it. This version is really good for our needs and will let us do everything required for the entire development, so we won't hesitate.&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/SC2aprj_oPI/AAAAAAAAAFw/GGqIEwVVmLI/s1600-h/PowerShellASP2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5200983185541800178" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/SC2aprj_oPI/AAAAAAAAAFw/GGqIEwVVmLI/s400/PowerShellASP2.jpg" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;The smallest possible ASP.NET site is composed of the following elements :&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;An ASP.NET page (Here : default.aspx)&lt;/strong&gt; : Here we will find all the user interface definition of our project (Buttons, Dropdown list, Textboxes...). This is merely HTML / ASP.NET code. You can find javascript in other projects, but we won't use it for now.&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;A .CS file bind to the ASPX document (here : default.aspx.cs)&lt;/strong&gt; : This file contains what is called the "Code-Behind". This is the server side code invoked by the asp.net site. This code is in a .NET language (C# or VB.NET). I'll use C# here cause it's easier to read and pretty close to PowerShell syntax.&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;web.config&lt;/strong&gt; : This is the website configuration file. To makes things simple, we find in it the website config : Authentication Method, DLL invokation (like the ones used to call PowerShell), and so on...&lt;/p&gt;&lt;p align="justify"&gt;Of course, Web developper express ease the process, everything is pre-build when you create a project. Before going deeper in the creation of the project, let me brief you with the strategy used to call scripts from our webform :&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;PowerShell interaction strategy&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The following diagram presents the strategy used in this first example of PowerShell calling from ASP.NET. This is what we'll discuss in the second part of this tutorial :&lt;/p&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/SDLJIrj_oTI/AAAAAAAAAGM/ClAPnpYyd0I/s1600-h/POWERASPUS1.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5202441670536175922" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/SDLJIrj_oTI/AAAAAAAAAGM/ClAPnpYyd0I/s400/POWERASPUS1.png" border="0" /&gt;&lt;/a&gt;Our first website is composed of 2 Textbox (one for script input, one for script output) and an "Execute" Button. That's all, as you can see, my first user interface is pretty basic.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The mecanism isn't too diffifcult to understand. We will go in the details in the Part 2 of this tutorial, but here's the resume :&lt;/p&gt;&lt;p align="justify"&gt;When we fire "Launch Script", let's talk about what happen :&lt;/p&gt;&lt;p align="justify"&gt;We activate the Timer &lt;strong&gt;(1),&lt;/strong&gt; we'll come back on this after, but let say for the moment that this control execute some code at a certain rate (for example every second).&lt;/p&gt;&lt;p align="justify"&gt;In the meantime, the code-Behind launch a PowerShell runspace and initialize a pipeline asyncrhonously. It read the first textbox, and execute it in the pipeline &lt;strong&gt;(2)&lt;/strong&gt;.&lt;/p&gt;&lt;p align="justify"&gt;Every seconds, our Timer check the pipeline output &lt;strong&gt;(3)&lt;/strong&gt;, and write what it found in a special variable called "Session variable" &lt;strong&gt;(4)&lt;/strong&gt; (we'll see why in the second part of the tutorial)&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;We refresh the output Textbox with the content of the Session Variable &lt;strong&gt;(5)&lt;/strong&gt;. The timer is activated until the end of the script in the pipeline &lt;strong&gt;(6)&lt;/strong&gt;.&lt;/p&gt;&lt;p align="justify"&gt;Using a Timer let us have a near-realtime view of the script output (every seconds). Please note that a script used in this context isn't forced to have output : As every PowerShell script, many things can happen without any console output, so please be carefull with what you code here ;)&lt;/p&gt;&lt;p&gt;I keep all the code really simple to let you identify every functions more easely. We will improve it later.&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;We use some AJAX functionnality in this example. The Timer is a ASP.NET ajax control, we use an UpdatePanel too that let us refresh the output textbox without refreshing the entire document. Using this kind of Ajax control in ASP.NET with web developper Express is really easy (as simple as using every classic control like Textbox). We don't need to do any Javascript and XML here, you'll see that in the 2nd part of this tutorial.&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;For the moment, you can test this site. Open the attached project in Web developper Express. Launch it and you'll have this page :&lt;/p&gt;&lt;p align="justify"&gt;&lt;a href="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/SDHjVrj_oRI/AAAAAAAAAGA/V_41o9osveA/s1600-h/powerASP3.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5202189006200086802" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/SDHjVrj_oRI/AAAAAAAAAGA/V_41o9osveA/s400/powerASP3.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;Enter your script in the upper Textbox, launch it with the button, you'll see the result in the bottom Textbox.&lt;br /&gt;&lt;p align="justify"&gt;&lt;strong&gt;Note &lt;/strong&gt;: The script is run from the server side (if you test locally, your workstation will do the job). Note that we retrieve the "object" output of PowerShell : that's why I use in this example the "out-string" cmdlet to grab an output similar to what you see in the standard PowerShell console. Do some test, you'll see that you get objects in the output Textbox.&lt;/p&gt;&lt;p align="justify"&gt;You can of course launche every kind of PowerShell commands and scripts, so be carefull ! :). This site is really lite to let you understand the code : I didn't put any error control or script management, nor advanced user interface.&lt;/p&gt;&lt;p align="justify"&gt;We'll see in the second part the details of every element and code of this website, we'll see how to manage a script from Form controls, and advice regarding security.&lt;/p&gt;Here is the source : &lt;a href="http://www.fileden.com/files/2008/5/19/1920192/PowerShellASP-2.zip"&gt;PowerShellASP.zip&lt;/a&gt; , feel free to ask questions in the comments below !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-4858937686384778683?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/4858937686384778683/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=4858937686384778683' title='9 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/4858937686384778683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/4858937686384778683'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/05/powershell-and-aspnet.html' title='PowerShell and ASP.NET Part 1'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Nb_tnJCL_Vw/SC2aprj_oPI/AAAAAAAAAFw/GGqIEwVVmLI/s72-c/PowerShellASP2.jpg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-8662584218970609037</id><published>2008-04-08T04:00:00.000-07:00</published><updated>2008-04-09T02:23:49.075-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MindMap'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PowerShell mindmap with Silverlight</title><content type='html'>&lt;div align="justify"&gt;Michael S. Scherotter gives us on his &lt;a href="http://blogs.msdn.com/synergist/default.aspx"&gt;synergist&lt;/a&gt; blog an &lt;a href="http://blogs.msdn.com/synergist/default.aspx"&gt;application that convert MindManager mindmap to Silverlight&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is really fun to play with, and it gives inspiration on how to bind Silverlight to our day to day work with Infrastructure developpement ! :)&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;To illustrate this, I've inserted below a Silverlight Control with my personnal bookmarks about PowerShell. Blogger main frame isn't really wide, so please use the "Full screen" button to have a better look at this control. Notes are in French, I'll translate them soon. Links are all operational. &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Have fun with Silverlight !&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe style="WIDTH: 440px; HEIGHT: 400px" src="http://silverlight.services.live.com/invoke/14606/PoshLiens/iframe.html" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-8662584218970609037?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/8662584218970609037/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=8662584218970609037' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/8662584218970609037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/8662584218970609037'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/04/powershell-mindmap-with-silverlight.html' title='PowerShell mindmap with Silverlight'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-660488089766099269</id><published>2008-04-08T01:46:00.001-07:00</published><updated>2008-04-08T02:22:19.410-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='System Center'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><title type='text'>SCCM and PowerShell Part 2</title><content type='html'>&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;SCCM and PowerShell Part 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Add Computer to a specific collection&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;Ok, our computer is in SCCM, let see how to add it in a specific collection. What told the SDK ? the VBScript sample is :&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;&lt;span style="color:#006600;"&gt;' Add the computer to the all systems collection.&lt;/span&gt;&lt;br /&gt;set collection = connection.Get("SMS_Collection.CollectionID='SMS00001'")&lt;br /&gt;set collectionRule=connection.Get("SMS_CollectionRuleDirect").SpawnInstance_&lt;br /&gt;collectionRule.ResourceClassName="SMS_R_System"&lt;br /&gt;collectionRule.ResourceID= outParams.ResourceID&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;collection.AddMembershipRule collectionRule&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;We can reorganize the code as shown below to ease our understanding of the process :&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#000099;"&gt;set collectionRule=connection.Get("SMS_CollectionRuleDirect").SpawnInstance_ collectionRule.ResourceClassName="SMS_R_System" collectionRule.ResourceID= outParams.ResourceID&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;color:#000099;"&gt;set collection = connection.Get("SMS_Collection.CollectionID='SMS00001'")&lt;br /&gt;collection.AddMembershipRule collectionRule&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;This sample is about "All Systems" Collection, however this collection isn't really usefull because, as we saw in the previous part of this tutorial, when you add a computer in SCCM, it is added by default in this collection. But this example shows us usefull elements: we know that we need to create an "&lt;strong&gt;SMS_CollectionRuleDirect&lt;/strong&gt;", fills some parameters, then invoke the Method "AddMemberShipRule" with this object as a parameter.&lt;/p&gt;&lt;p&gt;Let's go slowy, step by step...&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Create an object from the SMS_CollectionRuleDirect class&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="color:#000000;"&gt;With PowerShell, we can initialise an instance of a WMI like this :&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size:85%;color:#000066;"&gt;$objColRuledirect = [WmiClass]"\\$Computer\ROOT\SMS\site_001:SMS_CollectionRuleDirect"&lt;/span&gt; &lt;/p&gt;&lt;p align="left"&gt;You can see the properties of this object with the psbase.properties :&lt;/p&gt;&lt;p align="left"&gt;&lt;a href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_qTSuvz9rI/AAAAAAAAAFE/POlmKdPMkVI/s1600-h/SCCM16.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5186619870866044594" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_qTSuvz9rI/AAAAAAAAAFE/POlmKdPMkVI/s400/SCCM16.jpg" border="0" /&gt;&lt;/a&gt;In the SDK, we learned that 2 properties has to be filled : &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;ResourceClassName with value "SMS_R_System"&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;ResourceID with the ResourceID property of the computer object that we build in Part 1&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="left"&gt;So with PowerShell :&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000066;"&gt;&lt;span style="font-size:85%;"&gt;$objColRuleDirect.psbase.properties["ResourceClassName"].value = "SMS_R_System"&lt;br /&gt;$objColRuleDirect.psbase.properties["ResourceID"].value = $objCMComputer.resourceID&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;As you can see below, the CollectionRuleDirect is now properly set with the ResourceID of the $objCMComputer (same as sample of Part 1) :&lt;/p&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_qVzuvz9sI/AAAAAAAAAFM/KglQQvdIOqo/s1600-h/SCCM17.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5186622636824983234" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_qVzuvz9sI/AAAAAAAAAFM/KglQQvdIOqo/s400/SCCM17.jpg" border="0" /&gt;&lt;/a&gt; We need now to use this object with the &lt;strong&gt;AddMemberShipRule &lt;/strong&gt;method&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#000000;"&gt;&lt;strong&gt;How to use the AddMemberShipRule Method of the SMS_Collection class&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;When we say "WMI Method", we call WmiExplorer in order to have à "pre-build" script sample :&lt;/span&gt;&lt;a href="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_qXwOvz9tI/AAAAAAAAAFU/kbnCG5ZtC6w/s1600-h/SCCM18.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5186624775718696658" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_qXwOvz9tI/AAAAAAAAAFU/kbnCG5ZtC6w/s400/SCCM18.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;What we see here is that we need the ID of the target collection. We have 2 options : &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Using Hard-Coded Collection ID found in the SCCM console (smart)&lt;/li&gt;&lt;li&gt;Determine this ID with, for example, a collection Name (Smarter)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We are smart people, we will determine this ID with PowerShell!&lt;/p&gt;&lt;p&gt;It's really easy, just create a "classic" connexion to the &lt;strong&gt;SMS_Collection class, &lt;/strong&gt;and filter it with our target collection name (in my example : "PowerShell Collection")&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#000066;"&gt;$Collection = gwmi -computer $computer -namespace "root\sms\site_001" -class "SMS_Collection" $PoshCollec = $collectionwhere{$_.Name -eq "&lt;strong&gt;PowerShell Collection&lt;/strong&gt;"}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/R_qZAevz9uI/AAAAAAAAAFc/A-2AXK-1_4k/s1600-h/SCCM15.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5186626154403198690" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/R_qZAevz9uI/AAAAAAAAAFc/A-2AXK-1_4k/s400/SCCM15.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;No difficult at all ! the last thing to do is adapt the WmiExplorer sample with the collectionID of this object, and use our previously build CollectionRuleDirect object :&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#000066;"&gt;$Class = "SMS_Collection"&lt;br /&gt;$Method = "AddMembershipRule"&lt;br /&gt;$CollectionID = &lt;strong&gt;$PoshCollec.CollectionID&lt;/strong&gt;&lt;br /&gt;$filter="CollectionID = '$CollectionID'"&lt;br /&gt;$MC = Get-WmiObject $class -computer $Computer -Namespace "ROOT\SMS\site_001" -filter $filter&lt;br /&gt;$InParams = $mc.psbase.GetMethodParameters($Method)&lt;br /&gt;$InParams.collectionRule = &lt;strong&gt;$MCCollectionRuledirect &lt;/strong&gt;&lt;br /&gt;$inparams.PSBase.properties select name,Value Format-Table&lt;br /&gt;$R = $mc.PSBase.InvokeMethod($Method, $inParams, $Null)&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;Work done : our computer is now in the "PowerShell Collection" collection.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;With some R&amp;amp;D, and with a good understanding of these different examples, you are now able to create many kinds of PowerShell scripts with SCCM. &lt;strong&gt;Note that nearly all this samples can be used with SMS too !&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Hope this helps you SCCM people, have a Ctrl+C below for a complete PowerShell sample script :&lt;/p&gt;&lt;p&gt;**************************************************************************&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#006600;"&gt;## Name : Add Computer to Collection SCCM PowerShell script&lt;br /&gt;## Author : Antoine Habert &lt;/span&gt;&lt;a href="mailto:devinfra@gmail.com"&gt;&lt;span style="font-size:85%;color:#006600;"&gt;devinfra@gmail.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#006600;"&gt;##&lt;/span&gt;&lt;span style="font-size:85%;color:#000066;"&gt;&lt;span style="color:#006600;"&gt;# Variables&lt;/span&gt;&lt;br /&gt;$strTargetMac = "0A:0B:0C:0D:0E:0F"&lt;br /&gt;$strTargetComputerAccount = "NomDeMachine"&lt;br /&gt;$computer = "."&lt;br /&gt;$strTargetCollection = "La collection cible"&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#000066;"&gt;&lt;span style="color:#003300;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#000066;"&gt;&lt;span style="color:#003300;"&gt;# Create computer in SCCM&lt;br /&gt;&lt;/span&gt;$Class = "SMS_Site"&lt;br /&gt;$Method = "ImportMachineEntry"&lt;br /&gt;$MC = [WmiClass]"\\$Computer\ROOT\SMS\site_001:$Class"&lt;br /&gt;$InParams = $mc.psbase.GetMethodParameters($Method)&lt;br /&gt;$InParams.MACAddress = $strTargetMac&lt;br /&gt;$InParams.NetbiosName = $strTargetComputerAccount&lt;br /&gt;$InParams.OverwriteExistingRecord = $true&lt;br /&gt;$inparams.PSBase.properties select name,Value Format-Table&lt;br /&gt;$objCMComputer = $mc.PSBase.InvokeMethod($Method, $inParams, $Null)&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#000066;"&gt;&lt;span style="color:#003300;"&gt;# Create Collection Rule Direct&lt;/span&gt;&lt;br /&gt;$objColRuledirect = [WmiClass]"\\$Computer\ROOT\SMS\site_001:SMS_CollectionRuleDirect"&lt;br /&gt;$objColRuleDirect.psbase.properties["ResourceClassName"].value = "SMS_R_System"&lt;br /&gt;$objColRuleDirect.psbase.properties["ResourceID"].value = $objCMComputer.resourceID&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#000066;"&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="color:#006600;"&gt;# Target Collection connection&lt;/span&gt;&lt;br /&gt;$Collection = gwmi -computer $computer -namespace "root\sms\site_001" -class "SMS_Collection"&lt;br /&gt;$PoshCollec = $collectionwhere{$_.Name -eq $strTargetCollection}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#006600;"&gt;# Add Computer to Target Collection&lt;/span&gt;&lt;br /&gt;$Class = "SMS_Collection"&lt;br /&gt;$Method = "AddMembershipRule"&lt;br /&gt;$CollectionID = $PoshCollec.CollectionID&lt;br /&gt;$filter="CollectionID = '$CollectionID'"&lt;br /&gt;$MC = Get-WmiObject $class -computer $Computer -Namespace "ROOT\SMS\site_001" -filter $filter&lt;br /&gt;$InParams = $mc.psbase.GetMethodParameters($Method)&lt;br /&gt;$InParams.collectionRule = $MCCollectionRuledirect&lt;br /&gt;$inparams.PSBase.properties select name,Value Format-Table&lt;br /&gt;$R = $mc.PSBase.InvokeMethod($Method, $inParams, $Null)&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;color:#000000;"&gt;**************************************************************************&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-660488089766099269?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/660488089766099269/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=660488089766099269' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/660488089766099269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/660488089766099269'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/04/sccm-and-powershell-part-2.html' title='SCCM and PowerShell Part 2'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_qTSuvz9rI/AAAAAAAAAFE/POlmKdPMkVI/s72-c/SCCM16.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-4820981423012391232</id><published>2008-04-04T07:25:00.000-07:00</published><updated>2008-04-05T07:18:54.689-07:00</updated><title type='text'>SCCM and PowerShell Part 1</title><content type='html'>&lt;div class="Section1"&gt;&lt;span style="font-size:180%;"&gt;SCCM and PowerShell (Part 1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;SCVMM and Exchange 2007 provide native cmdlets. SCCM doesn't, but does provide (nearly) everything with WMI. Let see how to use classes, methods and properties of SCCM with PowerShell.&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;&lt;span style="font-size:130%;"&gt;Before we begin&lt;/span&gt;&lt;/h2&gt;To ease your life, 2 downloads are required :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="MsoNormal"&gt;First, Download SCCM SDK &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=064A995F-EF13-4200-81AD-E3AF6218EDCC&amp;amp;displaylang=en"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Download &lt;a href="http://thepowershellguy.com/blogs/posh/archive/2007/03/22/powershell-wmi-explorer-part-1.aspx"&gt;MoW WMi Explorer&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt; that will help you buil SCCM Powershell code&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;Our First Script&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;There's some subtleties to know in order to use WMI methods exposed by SCCM with PowerShell.&lt;br /&gt;&lt;br /&gt;Let first discover SCCM namespaces. Launch wmiexplorer.ps1 on your SCCM server :&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/R_eKAOvz9qI/AAAAAAAAAEs/qkxIZFSDbD0/s1600-h/sccm1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_Nb_tnJCL_Vw/R_eKAOvz9qI/AAAAAAAAAEs/qkxIZFSDbD0/s400/sccm1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5185765232503682722" /&gt;&lt;/a&gt;The "ROOT\SMS" namespace is available, under it you'll see "ROOT\SMS\inv_schema" that we bypass for now, and another namespace called "ROOT\SMS\Site_&lt;span style="font-style: italic;"&gt;NameOfSite"&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: left;" class="MsoNormal"&gt;DoubleClick on a Site namespace to list the classes&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yoyuvz9eI/AAAAAAAAADI/tAV8Fv6QX_k/s1600-h/SCCM2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yoyuvz9eI/AAAAAAAAADI/tAV8Fv6QX_k/s400/SCCM2.jpg" alt="" id="BLOGGER_PHOTO_ID_5185376872970843618" border="0" /&gt;&lt;/a&gt; 570 (!) classes will appear in the bottom left listbox. Yes, that's quite a lot, but take it cool because we will filter our search pretty easely as our needs arise.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;For our first example, we will build a script that add a computer in a collection. Our first step is to look at the SDK chm file to find the proper class to do this task.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YpVOvz9fI/AAAAAAAAADQ/p7aukEUlbcs/s1600-h/SCCM3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YpVOvz9fI/AAAAAAAAADQ/p7aukEUlbcs/s400/SCCM3.jpg" alt="" id="BLOGGER_PHOTO_ID_5185377465676330482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Here we see on the right side that, in order to add a computer, we should use the &lt;span style="font-weight: bold;"&gt;ImportMachineEntry &lt;/span&gt;classe of "SMS_Site" namespace. The SDK usually shows  VB/C#/VBScript samples. The PowerShell syntax differs from this langage, but this doesn't really matters for our PowerShelled mind : we use the SDK only to know wich Methods/properties we need yo use.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;In the VBscript sample of this SDK tip, we see that we need to use a "Connection.get" function to instance the class, then a SpawnInstance of the method, to finally add the required parameters (Mac Address, NetBiosName...). At last, we use ExecMethod to launch the process.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;' Connect&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set siteClass = connection.Get("SMS_Site")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set inParams = siteClass.Methods_("ImportMachineEntry"). _&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParameters.SpawnInstance_()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;' Add the input parameters.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("MACAddress") = macAddress&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("NetbiosName") = netBiosName&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("OverwriteExistingRecord") = False&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("SMBIOSGUID") = smBiosGuid&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;' Add the computer &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set outParams = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;connection.ExecMethod("SMS_Site", "ImportMachineEntry", &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Here comes the real deal&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;How to do the same with PowerShell ?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Let use MoW's WmiExplorer to get our answer :&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yqf-vz9gI/AAAAAAAAADY/oTxSPEL0mU4/s1600-h/SCCM4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yqf-vz9gI/AAAAAAAAADY/oTxSPEL0mU4/s400/SCCM4.jpg" alt="" id="BLOGGER_PHOTO_ID_5185378749871552002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Double Click on the SMS_Site Class to list all properties and methods of the class. You'll see on the right panel that there's a Method called "ImportMachineEntry"&lt;br /&gt;&lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Now Double Click on this Method. Mow's WmiExplorer is a smart tool : it buil dynamically PowerShell sample to use the method as shown below :&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yqyuvz9hI/AAAAAAAAADg/99TQWPkAZ2k/s1600-h/SCCM5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yqyuvz9hI/AAAAAAAAADg/99TQWPkAZ2k/s400/SCCM5.jpg" alt="" id="BLOGGER_PHOTO_ID_5185379071994099218" border="0" /&gt;&lt;/a&gt;Last but not least, it enumerate the different parameters of the script and the variable type (String, Boolean...)... Our remaining job is to populate these variables with appropriate values :&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;MacAddress (MAC Address of the target computer)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;NetbiosName&lt;/li&gt;&lt;li&gt;...&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Let's get more in details in this script to understand the invocation process in PowerShell :&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yx9Ovz9kI/AAAAAAAAAD4/bdcmwlVU_gs/s1600-h/sccm6.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yx9Ovz9kI/AAAAAAAAAD4/bdcmwlVU_gs/s400/sccm6.jpg" alt="" id="BLOGGER_PHOTO_ID_5185386948964120130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;When we create a connection to the SMS_Site class and we display as shown above the $mc object, we only got "SMS_Site" in the console&lt;br /&gt;&lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;If we use get-membere, we see that there isn't any "ImportMachineEntry" method here. This is due to the specific object output formatting of PowerShell. In order to access properties and methods of this class, we need to use the PSBASE method to have a "RAW" access on this object (more information on PSBASE &lt;a href="http://blogs.msdn.com/powershell/archive/2006/11/24/what-s-up-with-psbase-psextended-psadapted-and-psobject.aspx"&gt;here&lt;/a&gt; ) :&lt;br /&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_YyNuvz9lI/AAAAAAAAAEA/WA0wX1TH_to/s1600-h/SCCM7.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_YyNuvz9lI/AAAAAAAAAEA/WA0wX1TH_to/s400/SCCM7.jpg" alt="" id="BLOGGER_PHOTO_ID_5185387232431961682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As we can see, $mc.psbase brings Methods and Properties. Now list methods :&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YycOvz9mI/AAAAAAAAAEI/cxURrSFbId4/s1600-h/SCCM8.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YycOvz9mI/AAAAAAAAAEI/cxURrSFbId4/s400/SCCM8.jpg" alt="" id="BLOGGER_PHOTO_ID_5185387481540064866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;We got here our "ImportMachineEntry" method. In the VBSCript sample in the SDK, they told us to use SpawnInstance to define parameters for this method :&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set inParams = siteClass.Methods_("ImportMachineEntry"). _&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParameters.SpawnInstance_()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("MACAddress") = macAddress&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("NetbiosName") = netBiosName&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("OverwriteExistingRecord") = False&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;inParams.Properties_.Item("SMBIOSGUID") = smBiosGuid&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To do the same thing in PowerShell, have a look at the Mow generated script :&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;" align="left"&gt;&lt;span style=";font-family:'Lucida Console';font-size:8;color:black;"   lang="EN-US" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$InParams = $mc.psbase.GetMethodParameters(“ImportMachineEntry”)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$InParams.MACAddress = [string]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$InParams.NetbiosName = [string]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$InParams.OverwriteExistingRecord = [boolean]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$InParams.SMBIOSGUID = [string]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you can see, the code is rather simple : this example just do the same thing.&lt;div style="text-align: justify;"&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;Have a more indepth look at the $inParams members :&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YylOvz9nI/AAAAAAAAAEQ/jF8z3pIig2o/s1600-h/SCCM9.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YylOvz9nI/AAAAAAAAAEQ/jF8z3pIig2o/s400/SCCM9.jpg" alt="" id="BLOGGER_PHOTO_ID_5185387636158887538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style=""&gt;We see here our 4 properties : MacAddress, NetbiosName, OverwriteExistingRecord and SMBIOSGUID, all empty. Notice that each properties Types are exposed in the definition column, and that they are all Read/Write (get;Set)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style=""&gt;Great ! know let's write values for 3 of our properties (we don't need MSBIOSGUID if MacAddress is filled... XP is the key to discover this kind of funny details :) )&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yyuuvz9oI/AAAAAAAAAEY/1V6J7WgaVCM/s1600-h/SCCM10.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Nb_tnJCL_Vw/R_Yyuuvz9oI/AAAAAAAAAEY/1V6J7WgaVCM/s400/SCCM10.jpg" alt="" id="BLOGGER_PHOTO_ID_5185387799367644802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Sorting the Output of $Inparams, we see that our object's properties aren't empty anymore.&lt;span style=""&gt;&lt;br /&gt;&lt;br /&gt;Now we need to execute our Method with the parameters. The VBScript sample said :&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set outParams = connection.ExecMethod("SMS_Site", "ImportMachineEntry", inParams)&lt;/span&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;" align="left"&gt;&lt;span style="color: rgb(0, 0, 102);font-family:'Courier New';font-size:9;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;With Powershell, Execution is handled as shown in the MoW Example :&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$mc.PSBase.InvokeMethod($Method, $inParams, $Null)&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YzMOvz9pI/AAAAAAAAAEg/Fd6ZXymKElg/s1600-h/SCCM11.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_Nb_tnJCL_Vw/R_YzMOvz9pI/AAAAAAAAAEg/Fd6ZXymKElg/s400/SCCM11.jpg" alt="" id="BLOGGER_PHOTO_ID_5185388306173785746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here we are ! Our Computer is properly import in SCCM. For now, only in the "All Systems" collection.&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://imageshack.us/"&gt;&lt;img src="http://img137.imageshack.us/img137/4646/sccm12pr7.jpg" alt="Image Hosted by ImageShack.us" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The next step in the SDK is to  add this machine to a specific collection. We will explain this in the Part 2 of this discussion.&lt;br /&gt;&lt;br /&gt;You know now how to identify the class, method and properties to accomplish SCCM task in the SDK, and convert them in PowerShell. Have Fun !&lt;br /&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-4820981423012391232?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/4820981423012391232/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=4820981423012391232' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/4820981423012391232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/4820981423012391232'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/04/sccm-and-powershell-part-1.html' title='SCCM and PowerShell Part 1'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Nb_tnJCL_Vw/R_eKAOvz9qI/AAAAAAAAAEs/qkxIZFSDbD0/s72-c/sccm1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1400278338614647416.post-7862779485813785275</id><published>2008-04-04T07:21:00.000-07:00</published><updated>2008-04-04T07:24:03.590-07:00</updated><title type='text'>Introduction</title><content type='html'>Hi !&lt;br /&gt;&lt;br /&gt;I'll post here the translation of my french posts on devinfra.blogger.com. We will talk here about PowerShell, .NET, Silverlight development.&lt;br /&gt;&lt;br /&gt;Have a nice reading :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1400278338614647416-7862779485813785275?l=devinfra-us.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devinfra-us.blogspot.com/feeds/7862779485813785275/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1400278338614647416&amp;postID=7862779485813785275' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/7862779485813785275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1400278338614647416/posts/default/7862779485813785275'/><link rel='alternate' type='text/html' href='http://devinfra-us.blogspot.com/2008/04/introduction.html' title='Introduction'/><author><name>Antoine Habert</name><uri>http://www.blogger.com/profile/03426367508787117862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-EpTPWlw_oAo/TwSzWtn5kLI/AAAAAAAAAbU/n-WpPMFQuEI/s220/moi.jpg'/></author><thr:total>0</thr:total></entry></feed>
