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

<channel>
	<title>Poshoholic</title>
	<atom:link href="https://poshoholic.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://poshoholic.com</link>
	<description>Totally addicted to PowerShell</description>
	<lastBuildDate>Sat, 08 Oct 2016 13:02:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='poshoholic.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>https://secure.gravatar.com/blavatar/fb0041a3fe76bf9d229b3c940d4110b6cc294b6a8d8b913dde2b754c6700f520?s=96&#038;d=https%3A%2F%2Fs0.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Poshoholic</title>
		<link>https://poshoholic.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="https://poshoholic.com/osd.xml" title="Poshoholic" />
	<atom:link rel='hub' href='https://poshoholic.com/?pushpress=hub'/>
	<item>
		<title>Get your PowerShell game on for the Hacktoberfest challenge!</title>
		<link>https://poshoholic.com/2016/09/30/get-your-powershell-game-on-for-the-hacktoberfest-challenge/</link>
					<comments>https://poshoholic.com/2016/09/30/get-your-powershell-game-on-for-the-hacktoberfest-challenge/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Fri, 30 Sep 2016 20:55:17 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PowerShell Challenge]]></category>
		<guid isPermaLink="false">http://poshoholic.com/?p=1564</guid>

					<description><![CDATA[Every year the folks at DigitalOcean partner up with GitHub and create a Hacktoberfest challenge during the month of October (henceforth known as #Hacktober). The challenge is always about open source, trying to encourage people to participate more in open source projects. On the Hacktoberfest site, they list projects you can participate in, focusing on projects&#8230; <a class="more-link" href="https://poshoholic.com/2016/09/30/get-your-powershell-game-on-for-the-hacktoberfest-challenge/">Continue reading <span class="screen-reader-text">Get your PowerShell game on for the Hacktoberfest&#160;challenge!</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Every year the folks at <a href="https://www.digitalocean.com/" target="_blank">DigitalOcean</a> partner up with <a href="https://github.com/" target="_blank">GitHub</a> and create a <a href="https://hacktoberfest.digitalocean.com/" target="_blank">Hacktoberfest</a> challenge during the month of October (henceforth known as #Hacktober). The challenge is always about open source, trying to encourage people to participate more in open source projects. On the <a href="https://hacktoberfest.digitalocean.com/" target="_blank">Hacktoberfest site</a>, they list projects you can participate in, focusing on projects in Javascript, Bash, C++, Python, Ruby, etc., with project owners tagging issues on their project with #Hacktoberfest so that people participating in the challenge can find things to contribute to.</p>
<p>During the Hacktoberfest challenge over the past few years, if you wanted to do this with PowerShell-based projects it was more difficult. You would have had to find someone who had open source PowerShell modules or scripts that you could participate in, or you could even use your own projects when the Hacktoberfest challenge was just about commits to open source repositories, but it has evolved since then and now it&#8217;s all about submitting pull requests to other repositories so you need to start playing nice with other people&#8217;s projects. It&#8217;s much easier now though, because <a href="https://github.com/PowerShell/PowerShell" target="_blank">PowerShell Core is open source</a>, the <a href="https://blogs.msdn.microsoft.com/powershell/2016/09/29/powershellget-and-packagemanagement-in-powershell-gallery-and-github/" target="_blank">PowerShellGet and Package Management modules just went open source</a>, <a href="https://github.com/PowerShell/PowerShell-Docs" target="_blank">much of the documentation is open source</a>, there are <a href="https://github.com/PowerShell/PSScriptAnalyzer" target="_blank">other</a> <a href="https://github.com/PowerShell/Microsoft.PowerShell.Archive" target="_blank">PowerShell</a> <a href="https://github.com/PowerShell/Plaster" target="_blank">modules</a> that are already open source, and more modules are going open source every day. There&#8217;s even an <a href="https://github.com/KirkMunro/DoPx">open source PowerShell module for DigitalOcean automation</a> (ok, shameless plug, I wrote that one). Also, it doesn&#8217;t matter if you&#8217;re a developer, a devops engineer, a module author, a casual scripter, a PowerShell user who wants to improve documentation, or a PowerShell community member who has an idea for an RFC that would help improve the language &#8212; all of these roles have opportunities for pull requests to be submitted to help make PowerShell better for everyone. Do you know how easy it is to submit a pull request for a PowerShell docs change? Brain. Dead. Simple.</p>
<p>Since PowerShell has so much open source goodness now, this year lets make some noise by raising the visibility of PowerShell open source projects, and show the DigitalOcean Hacktoberfest challenge what the PowerShell community can do! According to the <a href="https://octoverse.github.com/" target="_blank">Octoverse</a>, Microsoft has already demonstrated themselves as the organization with the most contributors to open source projects. Let&#8217;s take that a step further, and raise the bar by submitting a ton of pull requests against PowerShell projects this month! If you&#8217;re up for the challenge, aside from <a href="https://twitter.com/derekstavis/status/685649570597105664/photo/1?ref_src=twsrc%5Etfw" target="_blank">a really cool t-shirt and great stickers for your laptop</a>, you&#8217;ll also get the pride of having contributed to something truly great!</p>
<p>Want to get started?  Head on over to the <a href="https://hacktoberfest.digitalocean.com/" target="_blank">Hacktoberfest site</a> and click on the Start Hacking link to sign up. There are also a lot of great resources on that site if you haven&#8217;t done open source pull requests before &#8212; just scroll down to the bottom of the page. Then, throughout the month of #Hacktober, spend some time contributing to one of the many great open source PowerShell projects. Note that this isn&#8217;t limited to specific pull requests for issues tagged with #Hacktoberfest &#8212; any pull request will do.</p>
<p>Then, if you happen to be attending the <a href="http://www.itdevconnections.com/dc16/Public/Enter.aspx" target="_blank">IT/Dev Connections 2016 conference</a>, consider coming to my <a href="http://www.itdevconnections.com/dc16/Public/SessionDetails.aspx?FromPage=Sessions.aspx&amp;SessionID=1016321&amp;SessionDateID=1000993" target="_blank">Anatomy of a PowerShell Pull Request</a> session where I&#8217;ll be talking a lot more about a lot of this kind of thing. And at any time, if your stuck, tap myself or any of the other members of the PowerShell community that are plugged into this open source movement via <a href="https://twitter.com/poshoholic" target="_blank">Twitter</a>, or on the <a href="https://powershell.slack.com/" target="_blank">PowerShell Slack channel</a> (you can sign up for that <a href="http://slack.poshcode.org/" target="_blank">here</a>) and ask for help! Lastly, if you&#8217;re a PowerShell open source project owner, consider tagging issues you really want people to look at in #Hacktober with the #Hacktoberfest tag so that they get more attention during this challenge (this isn&#8217;t a requirement &#8212; it is merely a facility to help community members discover issues they could submit a pull request for).</p>
<p>To keep visibility high and encourage others to participate, as you submit pull requests consider sending out a tweet about them with the #PowerShell and #Hacktober hashtags along with a link to this post so that others can discover the challenge as well!</p>
<p>Are you with me? Let&#8217;s make #Hacktober a milestone month for PowerShell open source project pull requests!</p>
<p>Kirk out.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2016/09/30/get-your-powershell-game-on-for-the-hacktoberfest-challenge/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>PowerShell Script Analyzer</title>
		<link>https://poshoholic.com/2015/05/21/powershell-script-analyzer/</link>
					<comments>https://poshoholic.com/2015/05/21/powershell-script-analyzer/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Thu, 21 May 2015 21:47:42 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PoSh]]></category>
		<category><![CDATA[Poshoholic]]></category>
		<category><![CDATA[PowerShell Script Analyzer]]></category>
		<category><![CDATA[PSScriptAnalyzer]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=1443</guid>

					<description><![CDATA[If you write PowerShell scripts or modules, you need to pay attention to this! As part of the many improvements and updates that Microsoft has been working on for Windows 10 and PowerShell 5, they created a new module that is very important for the PowerShell ecosystem to take note of.&#160; It’s so important, that&#8230; <a class="more-link" href="https://poshoholic.com/2015/05/21/powershell-script-analyzer/">Continue reading <span class="screen-reader-text">PowerShell Script Analyzer</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><strong>If you write PowerShell scripts or modules, you need to pay attention to this!</strong></p>
<p>As part of the many improvements and updates that Microsoft has been working on for Windows 10 and PowerShell 5, they created a new module that is very important for the PowerShell ecosystem to take note of.&#160; It’s so important, that you need to pay attention to it even if you’re not using PowerShell 5 much yet.</p>
<p>PowerShell Script Analyzer (PSScriptAnalyzer) is a module whose intent is to provide a detailed analysis of PowerShell script and module files.&#160; This includes ps1, psm1, and psd1 files.&#160; In computer programming, this is referred to as a <a title="Lint (software)" href="http://en.wikipedia.org/wiki/Lint_%28software%29" target="_blank">linting tool</a>.&#160; A linting tool is simply a piece of software that identifies and flags suspicious usage of the software that is identified through static analysis of the source code.&#160; PowerShell Script Analyzer performs this task by analyzing whatever ps1, psm1, and psd1 files you tell it to and using a set of built-in and user-defined rules that each identify specific undesirable or suspicious usage of the PowerShell language in those files.</p>
<p><strong>This module is very important because any module that is published to the PowerShell Gallery in the future will automatically be analyzed with this module.</strong></p>
<p>When PowerShell Script Analyzer was originally exposed to the community, it was as a built-in module that ships with PowerShell 5.0.&#160; That was useful, however the PowerShell Script Analyzer team wanted to get more community involvement with this module.&#160; To achieve that goal, they <a title="ScriptAnalyzer in GitHub and availability on PowerShell Gallery" href="http://blogs.msdn.com/b/powershell/archive/2015/04/29/scriptanalyzer-in-github-and-availability-on-powershell-gallery.aspx" target="_blank">pulled the module from the April preview of PowerShell 5.0 and made it available as open source on GitHub instead</a> (hooray for open source!).&#160; That was a step in the right direction, but it still required PowerShell 5.0 to function, and if you’re anything like me, you still spend most of your time in PowerShell 3.0 or 4.0.&#160; Since it’s open source though, that opens up some new possibilities, so recently I forked the project on GitHub and added downlevel support for PowerShell 3.0 or later.&#160; I have a pull request to have this integrated into the main project that is currently being reviewed, so hopefully in a little while this PowerShell 3.0 support will be integrated into the main project and available on the PowerShell Gallery.&#160; In the meantime you can find my fork <a title="PowerShell Script Analyzer fork with support for PowerShell 3.0 and later" href="https://github.com/KirkMunro/PSScriptAnalyzer" target="_blank">here</a>, and you can download the module built from that fork here: <a title="PowerShell Script Analyzer module for PowerShell 3.0 and later" href="http://1drv.ms/1Anu2TI" target="_blank">PSScriptAnalyzer for PowerShell 3.0 and later</a>.&#160; Now that this module includes support for PowerShell 3.0 or later, more community members can participate and provide feedback on this important module.</p>
<p><strong>You should immediately start using the PSScriptAnalyzer module to perform static analysis of anything that you share with the community so that what you publish is clean.</strong></p>
<p>Once you have this module on your system, you probably want to know how to use it.&#160; This module currently includes two PowerShell cmdlets: Get-ScriptAnalyzerRule and Invoke-ScriptAnalyzer.&#160; Get-ScriptAnalyzerRule will return a list of the rules that are in use by Script Analyzer to perform its analysis of your script files.&#160; At this time there are 7 informational rules, 26 warning rules, and 4 error rules.&#160; Invoke-ScriptAnalyzer will analyze one or more files that you identify using the rules that are in use by Script Analyzer, notifying you of any infractions to those rules so that you may correct them.</p>
<p>The final list of rules that are used in the RTM release of PSScriptAnalyzer will be decided upon based on community feedback.&#160; Additionally, how those rules function is dependent on community feedback, and the list of rules that will ultimately block a module from being published to the PowerShell Gallery will also be chosen based on community feedback.</p>
<p><strong>You should provide feedback to the PSScriptAnalyzer team about the rules that it uses, identifying bugs of course, but also identifying rules that shouldn’t be rules, rules that are missing, rules that have an incorrect severity, and any other changes that should be considered regarding the rules that are used.</strong></p>
<p>If you have feedback to share, you should do so on the <a title="PowerShell Script Analyzer Issues and Discussions page" href="https://github.com/PowerShell/PSScriptAnalyzer/issues" target="_blank">Issues and Discussions page</a> of the PowerShell Script Analyzer project.&#160; If you haven’t clicked on that link already, do so now.&#160; You’ll see that there are a lot of discussions that are currently ongoing, and issues that are already being raised.&#160; Given the importance of this module for the PowerShell community, if you have feedback to share, share it!&#160; The PowerShell Script Analyzer team needs it.</p>
<p>The PowerShell Script Analyzer team is so eager to engage with the community that they have even started hosting live update meetings to the public.&#160; These are currently planned for every three weeks, but that schedule may change as required.&#160; The next meeting is currently scheduled for Tuesday, May 26th at 2PM EDT (<a title="PowerShell Script Analyzer Community Meeting - 26-May-2015" href="http://1drv.ms/1IRPgdP" target="_blank">link to calendar invite</a>).&#160; It would also be worthwhile to keep an eye on the Twitter accounts of PowerShell MVPs (you can find me here: <a title="Kirk Poshoholic Munro on Twitter" href="https://twitter.com/poshoholic" target="_blank">@poshoholic</a>) as well as on the <a title="PowerShell Team Blog" href="http://blogs.msdn.com/b/powershell/" target="_blank">PowerShell Team Blog</a> and the <a title="PowerShell Slack Channel" href="https://powershell.slack.com/" target="_blank">PowerShell Slack channel</a> (more on that in another post) for further announcements about these meetings.</p>
<p>With all of those details out of the way, you may be wondering how you can use this module.&#160; That’s a good question, because documentation hasn’t been published for this module yet.&#160; The module is very easy to use, but at first the information it provides can be very overwhelming so you should take small steps when you’re just getting started.&#160; I’m going to use the remainder of this blog post to walk through what it is like using this module.&#160; Don’t be intimidated.&#160; This module is still under development, and the details you uncover when you start using it can be a little daunting.&#160; If you’re having a hard time, reach out to the rest of the community for feedback and someone should be able to help you through it.</p>
<p><em>Remember, this module will be analyzing files that have not previously been analyzed, ever, identifying places where you might want to improve those scripts, so at first it may seem very noisy.&#160; Also keep in mind that some of the things it identifies are completely benign – this is where community feedback comes in, so that we can help steer the team towards a final set of rules that really makes sense.</em></p>
<p>As an example, I’m going to use PSScriptAnalyzer to analyze my <a title="HistoryPx - Extended History Information and Last Output Support in PowerShell" href="https://github.com/KirkMunro/HistoryPx" target="_blank">HistoryPx</a> module.&#160; First, I’ll change the current location to the root of my HistoryPx module (On my system I simply cd into Modules:\HistoryPx).&#160; Then once I’ve done that, I’ll run an analysis on the psm1 file, by invoking the following command:</p>
<p>Invoke-ScriptAnalyzer -Path .\HistoryPx.psm1</p>
<p>Here’s what the results of that command look like:</p>
<p><a href="https://poshoholic.com/wp-content/uploads/2015/05/image.png" target="_blank"><img title="image" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;border-left:0;display:inline;padding-right:0;" border="0" alt="image" src="https://poshoholic.com/wp-content/uploads/2015/05/image_thumb.png?w=594&#038;h=341" width="594" height="341" /></a></p>
<p>This shows me that according to PSScriptAnalyzer, I have 8 rules that are being broken, and each of these rules has a severity of warning.&#160; Now that I have some output, I need to review what it is telling me to see if I have anything that I actually need to change.&#160; Here’s a breakdown of what these rules are trying to tell me:</p>
<p>The first two warnings are based on a rule that is called PSAvoidGlobalVars.&#160; That rule simply indicates that you shouldn’t use global variables.&#160; In HistoryPx, I refer to the $Error variable, and I use $global:Error to do so.&#160; In this case, the warnings are benign, because the rule is too strict.&#160; It should actually check to see if I am using non-builtin global variables, not global variables in general.&#160; That is my opinion at least, and since it doesn’t do that right now, I’m going to open an issue with the PSScriptAnalyzer team on GitHub using the link I provided earlier (copied <a title="PowerShell Script Analyzer Issues Page" href="https://github.com/PowerShell/PSScriptAnalyzer/issues" target="_blank">here</a>).&#160; A quick search revealed no open issues related to PSAvoidGlobalVars, so I opened one (<a title="PSScriptAnalyzer issue: PSAvoidGlobalVars should not warn when you are referencing built-in global variables" href="https://github.com/PowerShell/PSScriptAnalyzer/issues/187" target="_blank">here</a>).</p>
<p><em>While typing the rest of this blog post, the PSScriptAnalyzer saw the issue I logged and responded thanking me for reporting it and indicating they would fix it soon.&#160; This type of responsiveness makes supporting them and contributing to this module an absolute pleasure!</em></p>
<p>The third warning comes from a rule called PSAvoidUsingPositionalParameters.&#160; When you share scripts, using positional parameters is discouraged because the person reading your script may not know what parameter is being used.&#160; To address this problem, you should always use named parameters in your scripts.&#160; PSScriptAnalyzer did its job by identifying where I had left out a positional parameter, so I need to fix that.&#160; The warning indicates which file and what line number were being analyzed when the warning was found, so I simply open up HistoryPx.psm1, make the change by adding the missing “-Message” named parameter, and then move on to the next warning.</p>
<p>Warning number 4 indicates that I shouldn’t use the trap statement.&#160; I use the trap statement in script modules I write because it ensures that terminating errors are properly treated as terminating errors if they are raised while the module is loading, which ensures that the module does not load in a semi-functional or broken state.&#160; Therefore, this warning is benign for me and another issue I need to open with the PSScriptAnalyzer project (which I did, <a title="PSScriptAnalyzer Issue: PSAvoidTrapStatement" href="https://github.com/PowerShell/PSScriptAnalyzer/issues/188" target="_blank">here</a>).</p>
<p><em>Note: if you do come across something where you feel you need to open an issue, search the Issue page using the Filter box for the rule name and see if the issue has already been posted first.&#160; If so, contribute by adding any comments you want to share to that issue rather than opening a new issue.&#160; That will help the PSScriptAnalyzer team decide what to do with these issues once they are opened.</em></p>
<p>Moving along, warnings 5 through 7 all come from the PSAvoidUninitializedVariable rule, which identifies that I haven’t initialized a few variables before using them in my psm1 file.&#160; However, that rule only identifies when variables are initialized in the same file – it does not identify when variables are initialized elsewhere, and in this case, as with all of my modules, I initialize these variables in a snippet that this module uses, so the warning is benign.&#160; For these warnings, I can open another issue about the rule, but I’m a bit of an exception in this case.&#160; Alternatively I can suppress the warnings if they are truly benign and not considered a bug by adding a System.Diagnostics.CodeAnalysis.SuppressMessageAttribute to my script module file.&#160; For example, if I add this to the top of my psm1 file, warnings 5 through 7 go away:</p>
<p>[Diagnostics.CodeAnalysis.SuppressMessageAttribute(&#8216;PSAvoidUninitializedVariable&#8217;, &#8221;)]   <br />param()</p>
<p>This suppresses that rule in the current file for all variables.&#160; I can suppress it for a single variable by replacing the empty single quotes with a variable name in single quotes, but that only suppresses the rule for one variable.&#160; From what I can tell there is no way for me to suppress the rule for multiple variables (wildcards are not supported, and if I use multiple attributes, the last one I use wins).&#160; There are some obvious bugs/design issues with this right now, but the point is, you should be able to suppress rules that you know you can safely ignore.</p>
<p><em>Be careful when you suppress rules.&#160; If you suppress a rule, you want to suppress it in a minimalistic fashion, so that you still get the benefit of that rule in other places.</em></p>
<p>In this case, I’m not sure what the right action is, but the rule itself has issues, so I decided to open up an issue as a discussion topic on GitHub (<a title="PSScriptAnalyzer Issue: PSAvoidUninitializedVariable rule has very questionable usefulness" href="https://github.com/PowerShell/PSScriptAnalyzer/issues/189" target="_blank">here</a>).</p>
<p><em>If you feel something is wrong but you don’t have a bug to log, opening a discussion on the Issue page is a great approach to take.</em></p>
<p>With that out of the way, I’m on to the last warning that was raised for my HistoryPx module: PSUseDeclaredVarsMoreThanAssignments.&#160; This warning is nothing but confusing for me.&#160; It is being raised because PowerShell Script Analyzer thinks I’m doing something wrong when I assign a script block to a property on a variable that it thinks is not initialized.&#160; That would be wrong if the variable was actually not initialized, but the warning in this case seems simply like a bug, so I’m logging it (<a title="PSScriptAnalyzer Issue: Incorrect warning generated by PSScriptAnalyzer" href="https://github.com/PowerShell/PSScriptAnalyzer/issues/190" target="_blank">here</a>).</p>
<p>At this point, I have passed through all the warnings generated by the analysis, made one change to correct one of them, and started logging some issues to deal with the others.&#160; As development continues on PSScriptAnalyzer, this scale should tip dramatically to the point where you have more correctible warnings/errors for your scripts and much fewer issues to log.&#160; For now though, it is a work in progress, but I suspect that over the next little while you’ll see a lot of improvements to address the issues that are being identified in the community.</p>
<p>With one file done, I can now check another file, or run analysis recursively over my entire module.&#160; To perform recursive analysis, you would run this command from your module root folder:</p>
<p>Invoke-ScriptAnalyzer -Path . -Recurse</p>
<p>That will recursively analyze all files in your module so that you can get a high level view of everything that needs to be corrected.&#160; The goal here is simple: continually fix the issues over time so that when you run this command recursively, you only see new issues that pop up (or ideally, no issues at all).&#160; That will be the best way for you to maintain a high quality for any modules and scripts that you want to share with the community.</p>
<p>There are more things you can do with this module (such as create your own rules), but for now I just wanted to give you a taste of what it is like, and how the feedback process works so that you can start giving it a try and participating in the community effort to steer this in the right direction.</p>
<p>I hope to see you at the PowerShell Script Analyzer Community Meeting next Tuesday!</p>
<p>Kirk out.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2015/05/21/powershell-script-analyzer/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>

		<media:content url="https://poshoholic.com/wp-content/uploads/2015/05/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>A better approach to formatting in PowerShell</title>
		<link>https://poshoholic.com/2014/12/12/a-better-approach-to-formatting-in-powershell/</link>
					<comments>https://poshoholic.com/2014/12/12/a-better-approach-to-formatting-in-powershell/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Fri, 12 Dec 2014 05:02:39 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[FormatPx]]></category>
		<category><![CDATA[module]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=1413</guid>

					<description><![CDATA[Even without a traditional user interface, it is important to separate the presentation layer from the data processing layer. For all of its strengths, Windows PowerShell is not without its fair share of weaknesses.&#160; One of the weaknesses in PowerShell that has been with the scripting language since version 1.0 is how it handles formatting.&#160;&#8230; <a class="more-link" href="https://poshoholic.com/2014/12/12/a-better-approach-to-formatting-in-powershell/">Continue reading <span class="screen-reader-text">A better approach to formatting in&#160;PowerShell</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Even without a traditional user interface, it is important to separate the presentation layer from the data processing layer.</p>
<p>For all of its strengths, Windows PowerShell is not without its fair share of weaknesses.&#160; One of the weaknesses in PowerShell that has been with the scripting language since version 1.0 is how it handles formatting.&#160; When it comes to formatting data, you have two options: use one of the core Format-* cmdlets (Format-Table, Format-List, Format-Wide, or Format-Custom), or create a format ps1xml file that defines one or more formats for a specific type in an XML document.&#160; The former only works for the script consumer, because the core Format-* cmdlets actually convert rich object data into format data, not bearing any resemblance to the original objects with properties and methods that you started with.&#160; The latter works for the script author as well as the script consumer, however it is significantly more complicated to implement, and it has its share of limitations as well (for example, once a default format is defined for a type, a script author will not be able to have the results of their script rendered in another format by default without taking some extra steps that shouldn’t be necessary).&#160; The end result of these limitations and complications is a formatting system that is not fully leveraged in the majority of PowerShell scripts that are shared among the community.</p>
<p>I recently found myself looking at this problem and asking myself one more time if I could do better (it is a problem that I had looked at in the past).&#160; The variety of formats that are available is encouraging, and you can generate some pretty useful report-like output when you take the time to leverage the formatting system.&#160; But something would have to be done to fix the user experience.&#160; The end goal I was envisioning was quite clear: a distinct separation of the presentation layer from the data processing layer such that formatting information would never get in the way of data processing.</p>
<p>Fortunately, PowerShell is quite well set up for this type of change.&#160; Every command that you run has its results sent through the Out-Default cmdlet.&#160; Out-Default internally knows what to do with whatever you throw at it, whether that be object data or format data (which really is object data as well, but I’m making a distinction here).&#160; When you return an object from a command to the console, if that object is not format data, Out-Default internally will look at the object type, identify the default format for that type, convert the object into format data and then output that format data to the console.&#160; If Out-Default does receive format data instead because the object was already converted into format data, it simply renders that format data in the console.&#160; Given that is the case, it should be possible to modify the core Format-* cmdlets so that they attach format data to the objects that they format instead of converting object data into format data, and it should also be possible to modify the core Out-Default cmdlet so that it detects format data when it is attached to an object and renders that format data directly to the console instead of looking at the object type to decide what format to use.&#160; That, my friends, is exactly what I did.</p>
<p><a title="FormatPx - Better Formatting in PowerShell" href="https://github.com/KirkMunro/FormatPx" target="_blank">FormatPx</a> is a module made up of a nested binary module that defines five proxy cmdlets (Format-Table, Format-List, Format-Wide, Format-Custom, and Out-Default) plus one new cmdlet (Format-Default) and a script module that automatically applies the Force parameter whenever Format-Table, Format-List, or Format-Wide are used.&#160; It changes how the core Format-* cmdlets work as described above, and it also makes it easier to get format information from types that include a custom format as their default.&#160; Here’s a short screencast showing FormatPx in action:</p>
<p>(Note, do not adjust your computer, there is no audio in this screencast.)</p>
<div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:deaeddc4-bc91-41cf-9a13-1145b9559239" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div><div class="jetpack-video-wrapper"><iframe class="youtube-player" width="581" height="326" src="https://www.youtube.com/embed/OpXNeg_2cfM?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en&#038;autohide=2&#038;hd=1&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></div></div>
<div style="width:581px;clear:both;font-size:.8em;">Better PowerShell formatting with FormatPx</div>
</div>
<p>That’s a decent overview of what you get with the FormatPx module – a separation of the formatting layer from the data processing layer, giving you much more control over the presentation of your script results without ps1xml file complexity while still allowing script consumers to view the results in whatever format they like.&#160; What do you think?</p>
<p>Kirk out.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2014/12/12/a-better-approach-to-formatting-in-powershell/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>My favorite PowerShell one-liner</title>
		<link>https://poshoholic.com/2014/11/03/my-favorite-powershell-one-liner/</link>
					<comments>https://poshoholic.com/2014/11/03/my-favorite-powershell-one-liner/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Mon, 03 Nov 2014 15:00:00 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[one-liner]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=1387</guid>

					<description><![CDATA[Happy Monday everyone!&#160; I thought it might be a fun way to start the week by sharing my favorite PowerShell one-liner.&#160; One-liners are nostalgic for me, because I learned a lot of cool programming tricks from one-liners in issues of Compute magazine a long time ago.&#160; The PowerShell one-liners that grab my interest the most&#8230; <a class="more-link" href="https://poshoholic.com/2014/11/03/my-favorite-powershell-one-liner/">Continue reading <span class="screen-reader-text">My favorite PowerShell&#160;one-liner</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Happy Monday everyone!&#160; I thought it might be a fun way to start the week by sharing my favorite PowerShell one-liner.&#160; One-liners are nostalgic for me, because I learned a lot of cool programming tricks from one-liners in issues of Compute magazine a long time ago.&#160; The PowerShell one-liners that grab my interest the most are those that can do many different things in the simplest pipeline possible.</p>
<p>So far, eight years into using PowerShell, this is my favorite PowerShell one-liner:</p>
<p><a href="https://poshoholic.com/wp-content/uploads/2014/11/image.png"><img title="image" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="image" src="https://poshoholic.com/wp-content/uploads/2014/11/image_thumb.png?w=600&#038;h=146" width="600" height="146" /></a></p>
<p>At first glance, can you tell what this does?&#160; Take a minute to think about it, I’ll wait.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>Ok, now that you’ve thought about it a bit, you might have realized that it is not that easy to figure out everything that this does, so let me break it down into parts.</p>
<p><font face="Courier New">gci –r -force</font></p>
<p>If your familiar with PowerShell, this part is pretty straightforward.&#160; <em>gci</em> is an alias for <em>Get-ChildItem</em>, and this command tells PowerShell to get a recursive (<em>-r</em>) directory listing of all files and folders, including any hidden files or folders (<em>-force</em>), starting from the current location.</p>
<p><font face="Courier New">measure -sum PSIsContainer,Length -ea 0</font></p>
<p><em>measure</em> is an alias for <em>Measure-Object</em>, a cmdlet that can perform calculations on a collection of objects that it is passed from a pipeline.&#160; In this case, we’re going to aggregate (<em>-sum</em>) two values from properties in this collection: <em>PSIsContainer</em> and <em>Length</em>. We’re also going to hide any errors we get from trying to access folders that we don’t have access to (<em>-ea 0</em>).&#160; How <em>Measure-Object</em> measures the objects it receives is the most interesting part of this pipeline.</p>
<p>You can probably guess why we would want to calculate the sum of the <em>Length</em> property, but why would you want to calculate the sum of the <em>PSIsContainer</em> property?&#160; PSContainer is a boolean value that indicates whether or not an item returned from <em>Get-ChildItem</em> is a container.&#160; A value of <em>$true</em> indicates it is a folder, and a value of <em>$false</em> indicates it is a file.&#160; When you calculate the sum of a bunch of boolean values in PowerShell, PowerShell first converts those boolean values into their integer equivalent.&#160; <em>$false</em> implictly converts into a value of 0, and <em>$true</em> implicitly converts into a value of 1.&#160; Given this is the case, by aggregating the <em>PSIsContainer</em> property, you’re effectively calculating a sum of the number of containers in the result set.</p>
<p><font face="Courier New">$di,$fi =</font></p>
<p>PowerShell allows you to assign a multi-valued result set to different variables by separating the variables with a comma.&#160; In such an assignment, the first object returned will be assigned to the first variable, the second assigned to the second variable, and so on until the last variable which will contain all remaining objects.&#160; In this case, we’re assigning two variables, and each will contain a single value.&#160; Since we’re aggregating two properties (<em>PSIsContainer</em> and <em>Length</em>), Measure-Object will return two objects containing measurement information: one for <em>PSIsContainer</em> and one for <em>Length</em>.&#160; The measurement information for <em>PSIsContainer</em> will be assigned to <em>$di</em> and the measurement information for <em>Length </em>will be assigned to <em>$fi</em>.</p>
<p>Also, in addition to calculating the aggregate for the two properties, <em>Measure-Object</em> also counts the number of objects that it processes to perform that calculation and includes that count in the result as well.&#160; In cases where an object does not have a property that is being measured, that object will not be included in the count, so folders, which do not have a Length property, will not influence the values returned in the second measurement information object that is assigned to <em>$fi</em>.</p>
<p><strong>Putting it all together</strong></p>
<p>When I run the aforementioned one-liner on my PowerShell folder, here are the values I get from <em>$di</em> and <em>$fi</em>, respectively:</p>
<p><font face="Courier New">Count&#160;&#160;&#160; : 6516      <br />Average&#160; :       <br />Sum&#160;&#160;&#160;&#160;&#160; : 2012       <br />Maximum&#160; :       <br />Minimum&#160; :       <br />Property : PSIsContainer</font></p>
<p><font face="Courier New">Count&#160;&#160;&#160; : 4504      <br />Average&#160; :       <br />Sum&#160;&#160;&#160;&#160;&#160; : 917710488       <br />Maximum&#160; :       <br />Minimum&#160; :       <br />Property : Length</font></p>
<p>For the <em>$di</em> object, the <em>Sum</em> property identifies how many directories were found in the search.&#160; This was determined by aggregating the integer value of the <em>PSIsContainer</em> property on the objects that were measured.&#160; The <em>Count</em> property identifies how many items altogether were processed (directories and files, both of which have a <em>PSIsContainer</em> property).</p>
<p>For the <em>$fi</em> object, the <em>Sum</em> property identifies the total size of all files that were found in the search, and the <em>Count</em> property identifies how many files were found in the search.</p>
<p>Put this all together, and you have a PowerShell one-liner that gives you folder stats, identifying the number of files and folders in a folder as well as the total size of all files in that folder.&#160; Neat, huh?&#160; I think the reason why I like this PowerShell one-liner the most is because it demonstrates how a little creativity can be applied to get useful information that is not available in a native cmdlet from several sources in a simple and elegant manner.</p>
<p>What’s your favorite one-liner, and why?</p>
<p>Maybe I should start a meme with this.&#160; <a title="Jeffrey Hicks - The Lonely Administrator blog" href="http://jdhitsolutions.com/blog/" target="_blank">Jeffrey Hicks</a>, <a title="Shay Levy - Script Fanatic blog" href="http://blogs.microsoft.co.il/scriptfanatic/" target="_blank">Shay Levy</a>, <a title="Ed Wilson - Hey, Scripting Guy blog" href="http://blogs.technet.com/b/heyscriptingguy/" target="_blank">Ed Wilson</a>, <a title="June Blender joins Sapien" href="http://www.sapien.com/blog/2014/10/01/june-blender-joins-sapien/" target="_blank">June Blender</a>, and <a title="Hal Rottenberg - PowerScripting Podcast" href="http://powerscripting.net/" target="_blank">Hal Rottenberg</a>, tag, you’re it! <img class="wlEmoticon wlEmoticon-smile" style="border-style:none;" alt="Smile" src="https://poshoholic.com/wp-content/uploads/2014/10/wlemoticon-smile.png?w=739" /></p>
<p>Kirk out.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2014/11/03/my-favorite-powershell-one-liner/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>

		<media:content url="https://poshoholic.com/wp-content/uploads/2014/11/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="https://poshoholic.com/wp-content/uploads/2014/10/wlemoticon-smile.png" medium="image">
			<media:title type="html">Smile</media:title>
		</media:content>
	</item>
		<item>
		<title>Raise your PowerShell game with HistoryPx, DebugPx and TypePx</title>
		<link>https://poshoholic.com/2014/10/31/raise-your-powershell-game-with-historypx-debugpx-and-typepx/</link>
					<comments>https://poshoholic.com/2014/10/31/raise-your-powershell-game-with-historypx-debugpx-and-typepx/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Fri, 31 Oct 2014 18:09:47 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[DebugPx]]></category>
		<category><![CDATA[HistoryPx]]></category>
		<category><![CDATA[TypePx]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=1384</guid>

					<description><![CDATA[Recently I’ve been taking some of the most useful tricks and tools that I use in PowerShell to help me get my work done more easily and packaging them up in open-source modules.&#160; I find these modules very useful in the work that I do, and wanted to share them with the community.&#160; Each of&#8230; <a class="more-link" href="https://poshoholic.com/2014/10/31/raise-your-powershell-game-with-historypx-debugpx-and-typepx/">Continue reading <span class="screen-reader-text">Raise your PowerShell game with HistoryPx, DebugPx and&#160;TypePx</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Recently I’ve been taking some of the most useful tricks and tools that I use in PowerShell to help me get my work done more easily and packaging them up in open-source modules.&#160; I find these modules very useful in the work that I do, and wanted to share them with the community.&#160; Each of these modules works on PowerShell 3.0 or later.&#160; Here are the modules I am referring to:</p>
<table cellspacing="0" cellpadding="2" width="600" border="1">
<tbody>
<tr>
<td valign="top" width="63">DebugPx</td>
<td valign="top" width="491">Includes ifdebug (conditional debugging when invoking commands with –Debug) and breakpoint (visual breakpoints in scripts; makes debugging from any host and with any editor much easier) cmdlets.</td>
<td valign="top" width="46"><a href="https://poshoholic.com/2014/10/20/powershell-debugging-amplified/" target="_blank">link</a></td>
</tr>
<tr>
<td valign="top" width="63">HistoryPx</td>
<td valign="top" width="491">Seamlessly upgrades the history capabilities in PowerShell, adding rich extended history information that you don’t get by default.</td>
<td valign="top" width="46"><a href="https://poshoholic.com/2014/10/30/making-history-more-fun-with-powershell/" target="_blank">link</a></td>
</tr>
<tr>
<td valign="top" width="63">TypePx</td>
<td valign="top" width="491">Defines dozens of useful type extensions for common .NET types.&#160; Brings foreach and where method support to PowerShell 3.0.&#160; Includes type acceleration commands.</td>
<td valign="top" width="46"><a href="https://poshoholic.com/2014/10/08/make-working-with-types-in-powershell-easier-with-typepx/" target="_blank">link</a></td>
</tr>
</tbody>
</table>
<p>The links in the table above will take you to blog posts that provide some more context about what these modules do.&#160; If you’d like to raise your PowerShell game by using some cool new functionality in PowerShell 3.0 or later today, please give these modules a try and let me know what you think!</p>
<p>Happy Halloween!</p>
<p>Kirk out.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2014/10/31/raise-your-powershell-game-with-historypx-debugpx-and-typepx/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>Making history more fun with PowerShell</title>
		<link>https://poshoholic.com/2014/10/30/making-history-more-fun-with-powershell/</link>
					<comments>https://poshoholic.com/2014/10/30/making-history-more-fun-with-powershell/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Fri, 31 Oct 2014 01:26:36 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[module]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=1380</guid>

					<description><![CDATA[History is boring. While I don’t believe that is true (I actually find history quite fascinating), it is certainly how I would have responded if asked about history while taking it in high school.&#160; I’m not the only one who felt this way back then either.&#160; When I asked my wife for her opinion about&#8230; <a class="more-link" href="https://poshoholic.com/2014/10/30/making-history-more-fun-with-powershell/">Continue reading <span class="screen-reader-text">Making history more fun with&#160;PowerShell</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>History is boring.</p>
<p>While I don’t believe that is true (I actually find history quite fascinating), it is certainly how I would have responded if asked about history while taking it in high school.&#160; I’m not the only one who felt this way back then either.&#160; When I asked my wife for her opinion about it, she told me that it was in her history class where she learned to write upside down with her non-dominant hand.</p>
<p>My problem with history is the presentation of it.&#160; It can be fun and include a lot of contextual detail that is presented with zeal and that connects with the audience; or, like my high school history class, it can be presented as a timeline with boring details attached to it.</p>
<p>PowerShell automatically tracks the commands that you invoke in a history table that you can view at any time with the <em>Get-History</em> cmdlet.&#160; If you invoke <em>Get-History</em> (or its alias, <em>h</em>) after you’ve been using PowerShell for a bit, you should see results similar to the following:</p>
<p><a href="https://poshoholic.com/wp-content/uploads/2014/10/image.png" target="_blank"><img title="native powershell history" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;border-left:0;display:inline;padding-right:0;" border="0" alt="native powershell history" src="https://poshoholic.com/wp-content/uploads/2014/10/image_thumb.png?w=600&#038;h=170" width="600" height="170" /></a></p>
<p>That’s not entirely useless, because it shows commands that we ran earlier, but as far as presentation goes it’s pretty boring, right?&#160; Now, this is only the default format for history in PowerShell, and as with most data in PowerShell this screenshot doesn’t paint the full picture.&#160; Each entry also includes other fields that are not shown in the default format, as can be seen here:</p>
<p><a href="https://poshoholic.com/wp-content/uploads/2014/10/image1.png" target="_blank"><img title="native powershell history expanded" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;border-left:0;display:inline;padding-right:0;" border="0" alt="native powershell history expanded" src="https://poshoholic.com/wp-content/uploads/2014/10/image_thumb1.png?w=600&#038;h=160" width="600" height="160" /></a></p>
<p>The problem is, that’s all you get: a timeline with boring details attached to it.&#160; The ExecutionStatus property tells me whether a command completed or failed, but the usefulness of that information is very limited because a value of Failed only means the command failed with a terminating error; if a command failed with a non-terminating error, then ExecutionStatus will simply indicate that the command completed, which is not very useful knowledge to have.&#160; Start and end execution times are useful, but that means I need to do math to determine how long various commands took, or re-run the commands inside of <em>Measure-Command</em>.&#160; There’s no zeal behind the presentation of this information.</p>
<p>Fortunately, PowerShell is extensible, so I decided I should be able to do better.&#160; Here’s my view of what PowerShell history should be, as provided by <a title="HistoryPx - Extended History Information and Last Output Support in PowerShell" href="https://github.com/KirkMunro/HistoryPx" target="_blank">HistoryPx</a>:</p>
<p><a href="https://poshoholic.com/wp-content/uploads/2014/10/image2.png" target="_blank"><img title="powershell extended history from HistoryPx" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;border-left:0;display:inline;padding-right:0;" border="0" alt="powershell extended history from HistoryPx" src="https://poshoholic.com/wp-content/uploads/2014/10/image_thumb2.png?w=600&#038;h=173" width="600" height="173" /></a></p>
<p><a title="HistoryPx - Extended History Information and Last Output Support in PowerShell" href="https://github.com/KirkMunro/HistoryPx" target="_blank">HistoryPx</a> is an open-source PowerShell module that transparently integrates into the PowerShell environment where it is loaded.&#160; You simply load the module by importing it with <em>Import-Module</em> into an environment running PowerShell 3.0 or later, and once it is loaded it will start tracking extended history information for every command you run.&#160; Extended history information includes the command duration, whether or not the command was successful, any output returned by the command, and any errors that were added to the $error log by the command.&#160; When you invoke <em>Get-History</em>, the new default format for extended history information presents most of these details, or you can pipe the results to <em>Format-List *</em> to get all properties where you can see the core history properties as well as the extended information added by <a title="HistoryPx - Extended History Information and Last Output Support in PowerShell" href="https://github.com/KirkMunro/HistoryPx" target="_blank">HistoryPx</a>.</p>
<p>In addition to providing extended history information in PowerShell, the <a title="HistoryPx - Extended History Information and Last Output Support in PowerShell" href="https://github.com/KirkMunro/HistoryPx" target="_blank">HistoryPx</a> module includes one other feature that is quite useful.&#160; It defines a double-underscore ($__) variable in the global scope that will always contain the output of the last command that was executed.&#160; When the last command doesn’t have any output, $__ will be assigned a value of $null.&#160; This comes in handy when you invoke a command that takes time to complete but forget to capture the results in a variable.</p>
<p>If you want to give this module a try, head on over to the <a title="HistoryPx - Extended History Information and Last Output Support in PowerShell" href="https://github.com/KirkMunro/HistoryPx" target="_blank">HistoryPx page on GitHub</a> where you can learn how to install or update it in your environment and read additional details provided in the readme file on GitHub.&#160; If you are concerned about memory usage with this module, your questions are addressed in the readme as well.&#160; This is only the first release of this module, and I am already starting to track features that I want to add to another release.&#160; If you do give it a try, please let me know what you think, either in the comments on this blog post or in GitHub, and please log any issues you find on GitHub as well.</p>
<p>Thanks!</p>
<p>Kirk out.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2014/10/30/making-history-more-fun-with-powershell/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>

		<media:content url="https://poshoholic.com/wp-content/uploads/2014/10/image_thumb.png" medium="image">
			<media:title type="html">native powershell history</media:title>
		</media:content>

		<media:content url="https://poshoholic.com/wp-content/uploads/2014/10/image_thumb1.png" medium="image">
			<media:title type="html">native powershell history expanded</media:title>
		</media:content>

		<media:content url="https://poshoholic.com/wp-content/uploads/2014/10/image_thumb2.png" medium="image">
			<media:title type="html">powershell extended history from HistoryPx</media:title>
		</media:content>
	</item>
		<item>
		<title>Transform repetitive script blocks into invocable snippets with SnippetPx</title>
		<link>https://poshoholic.com/2014/10/21/transform-repetitive-script-blocks-into-invocable-snippets-with-snippetpx/</link>
					<comments>https://poshoholic.com/2014/10/21/transform-repetitive-script-blocks-into-invocable-snippets-with-snippetpx/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Tue, 21 Oct 2014 15:04:00 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[SnippetPx]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=1362</guid>

					<description><![CDATA[The more you write code, the more you notice patterns in the code you write.&#160; This goes for PowerShell, C#, Ruby, and any other programming or scripting language under the sun.&#160; Patterns are opportunities.&#160; Opportunities to generalize them and define them as design patterns.&#160; Opportunities to isolate blocks of reusable code in such a way&#8230; <a class="more-link" href="https://poshoholic.com/2014/10/21/transform-repetitive-script-blocks-into-invocable-snippets-with-snippetpx/">Continue reading <span class="screen-reader-text">Transform repetitive script blocks into invocable snippets with&#160;SnippetPx</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>The more you write code, the more you notice patterns in the code you write.&#160; This goes for PowerShell, C#, Ruby, and any other programming or scripting language under the sun.&#160; Patterns are opportunities.&#160; Opportunities to generalize them and define them as design patterns.&#160; Opportunities to isolate blocks of reusable code in such a way that they can be reused so that you can follow the <a title="The Don&#039;t Repeat Yourself (DRY) Principle" href="http://en.wikipedia.org/wiki/Don't_repeat_yourself" target="_blank">DRY principle</a> in your work.&#160; This article is about the latter of those two.</p>
<p>In recent months I have been working on trying to reduce duplication in my own work by keeping my modules and functions as DRY as possible.&#160; One challenge with keeping code DRY in PowerShell is in deciding which is the most appropriate method to do so.&#160; There are many opportunities to keep your code DRY in PowerShell.&#160; You can create:</p>
<ul>
<li>cmdlets</li>
<li>advanced functions</li>
<li>basic functions</li>
<li>unnamed functions (aka script blocks)</li>
<li>script files</li>
<li>type extensions for the Extended Type System (ETS)</li>
<li>classes with properties and methods, either in a .NET assembly that is imported into PowerShell, or if you’re using PowerShell 5.0 or later, in PowerShell itself</li>
</ul>
<ul>Despite each of these extension points being available to PowerShell, they don’t always fit the scenarios you need them to, perhaps because they are not appropriate for the intended purpose, because they have some limitation that you can’t work around, or perhaps for some other reason.&#160; For example, I find myself writing all of these, and there are certain pieces of code that I want to set up for easy sharing in many of these types of extensions without being an extension point itself.&#160; When you have logic that you might use anywhere that you could write PowerShell, how do you set that up in such a way that you can consume it in all of those locations easily regardless of the machine you are running on, without taking a dependency on physical file paths?&#160; That last point is important, because standalone ps1 files may be one possible answer to this need, except invoking them requires knowing where they are, and when you invoke them you must decide whether to dot source them or call them with the call operator, which in turn means you must know the implications of such a decision.&#160; Plus, when their use spans all of PowerShell (any script, any module, any function), where do you put them without having to burden the consumer with extra setup work?&#160; And how can you create more of these while making them discoverable, and able to be added to or removed from a system with ease?</ul>
<ul>Snippets are a great answer to these questions.&#160; Snippet is a programming term that has been around for many years, and it generally refers to a small region of re-usable code.&#160; They are also a lot more than a fancied-up bit of copy/paste functionality.&#160; They have parameters, or fields, that control how they run.&#160; They can surround text you have selected, or simply insert into the current cursor location.&#160; Most importantly however, for me at least, is that snippets can be invocable, and that, my friends, is key because when you’re trying to maintain a DRY code base, you don’t want to inject boilerplate code blocks in many locations…you want to invoke them.</ul>
<p>With snippets being a great solution to this problem, I decided to try to build a snippet-based solution that would allow for discoverable, invocable snippets.&#160; I wanted this solution to be able to find snippets regardless of what computer you were running on, as long as you followed a few simple rules.&#160; I wanted this solution to keep snippet definitions as simple as the creation of a ps1 file.&#160; And I wanted this solution to allow for snippets to be invoked in the current scope by default, and in a child scope as an option.</p>
<p>Enter <a title="SnippetPx - Invocable Snippet Support in PowerShell" href="https://github.com/KirkMunro/SnippetPx" target="_blank">SnippetPx</a>.&#160; SnippetPx is a module that provides two very simple commands, plus a handful of snippets.&#160; The two commands are Get-Snippet, which retrieves the snippets that are discoverable on the local computer, and Invoke-Snippet, which allows a snippet to be invoked by name, with or without parameters, in the current scope or in a child scope.&#160; With this module, any ps1 file that is stored in a “snippets” folder inside of the current user’s Documents\WindowsPowerShell folder, the system %ProgramFiles%\WindowsPowerShell folder, or as a subfolder under the root of any module that is discoverable via PSModulePath will be discoverable as a snippet.&#160; You can see some examples by looking in the “snippets” folder in the SnippetPx module itself, or by looking in another module that includes some snippets such as the <a title="Type extensions and type accelerator commands for Windows PowerShell" href="https://github.com/KirkMunro/TypePx" target="_blank">TypePx</a> module.&#160; Also, any snippet that is discoverable by this module is invocable by the Invoke-Snippet cmdlet.</p>
<p>Since creating this module, it has quickly become a core module that my other modules take a dependency on in order to keep my code DRY.&#160; That effort has already paid off for myself because it has allowed me to update a block of code that is defined in a snippet and only have to make that change once, while all other locations where that snippet is invoked simply run with the new code change.&#160; I encourage you to give it a try and see if it helps you remove what might otherwise be repetitive code that is more difficult to maintain than it should be.</p>
<p>If you would like to give SnippetPx a try, you can <a title="Download SnippetPx" href="https://github.com/KirkMunro/SnippetPx" target="_blank">download Snippet from GitHub</a> (yes, it is open source, along with the binary module where Invoke-Snippet and Get-Snippet are implemented) or from the <a title="PowerShell Resource Gallery" href="https://msconfiggallery.cloudapp.net/" target="_blank">PowerShell Resource Gallery</a> (aka the PowerShellGet public repository).&#160; Feedback is more than welcome through any means by which you want to communicate with me: the Issues page for this project on GitHub, social media channels, comments on this blog, etc.&#160; In the meantime, I will continue to identify opportunities to create more snippets that will be useful to others and push them out either as updates to SnippetPx or in the modules where those snippets are used.</p>
<p>One more thing: if you do decide that you want to create some snippets of your own, there are some useful details in the Notes section of the help documentation for the Get-Snippet and Invoke-Snippet cmdlets.&#160; I strongly recommend giving that a read before you dive into creating invocable snippets, as it provides some additional detail on how snippets are discovered as well as recommendations on the naming of your snippet ps1 files.</p>
<p>Thanks for listening!</p>
<p>Kirk out.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2014/10/21/transform-repetitive-script-blocks-into-invocable-snippets-with-snippetpx/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>PowerShell debugging, amplified</title>
		<link>https://poshoholic.com/2014/10/20/powershell-debugging-amplified/</link>
					<comments>https://poshoholic.com/2014/10/20/powershell-debugging-amplified/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Mon, 20 Oct 2014 17:29:19 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[breakpoint]]></category>
		<category><![CDATA[debugger]]></category>
		<category><![CDATA[DebugPx]]></category>
		<category><![CDATA[module]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=1365</guid>

					<description><![CDATA[This article is about the PowerShell module that I am most proud of and that I have personally found more useful than any other module I have created.&#160; I hope that you enjoy it as much as I do. Every programming language must be designed with debugging in mind, and PowerShell is no exception.&#160; No&#8230; <a class="more-link" href="https://poshoholic.com/2014/10/20/powershell-debugging-amplified/">Continue reading <span class="screen-reader-text">PowerShell debugging, amplified</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>This article is about the PowerShell module that I am most proud of and that I have personally found more useful than any other module I have created.&#160; I hope that you enjoy it as much as I do.</p>
<p>Every programming language must be designed with debugging in mind, and PowerShell is no exception.&#160; No matter who you are, no matter how well you know the language, you will inevitably come across something that isn’t working like it should.&#160; What you do in these situations depends on your comfort level with programming and debugging.&#160; For some, this means adding lines to the code that produce extra output so that they can get a handle on what is going on.&#160; For others, this means rolling up the sleeves and stepping through the code in a debugger.&#160; And there are others still who aren’t comfortable enough with programming or debugging, so they turn to others for assistance.&#160; Regardless of which of these approaches you would take, I believe I have a module that can help.</p>
<p><a title="DebugPx - A PowerShell Debugging Toolkit featuring the breakpoint and ifdebug commands" href="https://github.com/KirkMunro/DebugPx" target="_blank">DebugPx</a> is a free, open source PowerShell module that was designed to make it easier to troubleshoot problems in PowerShell code.&#160; It comes with two core commands: breakpoint and ifdebug.&#160; It also includes a few helpful utility commands to control how the breakpoint command works.&#160; The core commands are described as follows:</p>
<table cellspacing="0" cellpadding="2" width="594" border="0">
<tbody>
<tr>
<td valign="top" width="72"><strong>breakpoint</strong></td>
<td valign="top" width="520">The breakpoint command is used to trigger a breakpoint at the current location.&#160; By default, the breakpoint command causes Windows PowerShell to immediately enter the debugger whenever it is invoked in an interactive session.&#160; If it is invoked with its optional ConditionScript parameter, it will only trigger the breakpoint if the script block expression that was provided for the ConditionScript parameter evaluates to true.&#160; It also accepts an optional string Message parameter, and it will write the message provided to this parameter to the current host whenever the breakpoint is triggered.</td>
</tr>
<tr>
<td valign="top" width="72"><strong>ifdebug</strong></td>
<td valign="top" width="520">
<p>The ifdebug command is used to identify a block of PowerShell script that you only want to run in one of two scenarios: when you invoke a command with -Debug, or when the $DebugPreference variable is set to anything either than SilentlyContinue or Ignore.</p>
</td>
</tr>
</tbody>
</table>
<p>Both of these commands are very powerful and they can make troubleshooting problems in PowerShell scripts a lot easier.&#160; Let me provide some background details so that you understand the problems that these commands solve, problems that still exist in PowerShell 5.0 today.</p>
<p>PowerShell version 1.0 did not come with breakpoint support.&#160; It had a debugger, and that debugger is still useful today, even though a new debugger has been in PowerShell since version 2.0.&#160; It had a -Debug common parameter that was available on every cmdlet and, since version 2.0 of PowerShell, on every advanced function as well.&#160; It had a $DebugPreference built-in variable.&#160; It also had a Write-Debug cmdlet that allowed you to have some level of debugger control over your scripts.&#160; The behaviour of the Debug common parameter, $DebugPreference and how those affect Write-Debug behaviour is quite interesting, and once you understand how those work together, you may see why their implementation leaves some opportunities on the table.</p>
<p>When you invoke a cmdlet or an advanced function with the -Debug common parameter, PowerShell internally sets the $DebugPreference variable value to Inquire within the scope of that command.&#160; As far as PowerShell preference variables go, a value of Inquire means that PowerShell will prompt the user to ask if they want to continue the execution of the associated command, stop the associated command immediately, or enter a the debugger at that point, allowing the user to invoke PowerShell commands to troubleshoot the system.&#160; This behaviour seems like it was designed to fill the void when PowerShell did not have breakpoints, because it allowed scripters to enter the debugger as long as they threw a few Write-Debug commands into their scripts.</p>
<p>The problem with this approach is that it tries to do too many things and mixes up several distinct needs in the process.&#160; The ability to write debug information to the debug stream during script execution, and the ability to enter the debugger on a breakpoint at a specific location in a script are two distinct needs that are mashed together when they shouldn’t be.&#160; Another limitation with this approach is that scripters can’t simply change the way a script is invoked in order to gather additional debug information from an environment where they aren’t able to debug with breakpoints as easily, because using -Debug meant prompting the user every time Write-Debug would be called, and often you’re trying to help a user who is having a problem in this scenario, not confuse them by asking them to continue a bunch of Write-Debug calls while telling you what is happening.&#160; Yet another limitation with this approach is that there is no easy way to include PowerShell commands inside of an advanced function or script that will only execute when you are debugging, allowing a command or script author to include support for generating debug output but only when that command or script is invoked with -Debug.</p>
<p>When breakpoints were later added along with a new debugger in PowerShell 2.0, PowerShell script authors were suddenly able to set breakpoints in their scripts, either visually using PowerShell ISE or for conditional breakpoints, command breakpoints, or variable breakpoints using the Set-PSBreakpoint cmdlet.&#160; This functionality solved the need for breakpoints, and it started the separation of the need to enter the debugger from the need to be able to write debug output; however, the -Debug common parameter behaviour didn’t change, so there still wasn’t a good vehicle for writing information to the debug stream without any requirement for user interaction during the process.&#160; Also, while this breakpoint functionality was useful, it came with its own share of limitations.&#160; If you were working in an environment other than PowerShell ISE that didn’t have visual support for setting PowerShell breakpoints (such as notepad++, sublime text, or some other awesome editor), you simply had no choice but to work with the Set-PSBreakpoint cmdlet, which isn’t a very friendly way to set breakpoints in PowerShell, putting it mildly.&#160; Also, if you were debugging PowerShell code across multiple sessions, you would have to reset your breakpoints every time, either manually or using a profile or some other script, none of which is very practical.</p>
<p>DebugPx was designed to solve almost all of these problems with the breakpoint and ifdebug commands.&#160; With the DebugPx module installed and discoverable via the PSModulePath environment variable, you can trigger a breakpoint at a specific location by simply invoking the breakpoint command (or the bp alias, for short).&#160; These breakpoints are identifiable in any editor because you can see the commands in the files where they are used.&#160; They work in unsaved files.&#160; They even work in an interactive PowerShell prompt, or inside of a block that you run in PowerShell using copy/paste, or inside of a block that you select in ISE and run by using the Run Selection (F8) feature.&#160; They are properly ignored if they are inside of a function that uses the System.Diagnostics.DebuggerHidden attribute.&#160; They are conditional if you invoke them with a condition script block (which would map to the first, ConditionalScript parameter), or unconditional otherwise.&#160; They can be globally enabled or disabled using the Enable-BreakpointCommand or Disable-BreakpointCommand commands.&#160; They will only cause PowerShell to enter the debugger if they are encountered in an interactive session.&#160; And if you want a message to be displayed when the breakpoint activates (for example, as a reminder why you wanted to break when that obscure scenario that you previously couldn’t catch occurs), you can pass a message to the -Message parameter and the breakpoint will output the message to the host when the breakpoint is triggered.</p>
<p>If you are debugging in other scenarios, where you may not be able to use the breakpoint command to enter a debugger because you are not in an interactive session (such as in background jobs, scheduled tasks, Azure Automation or Service Management Automation scripts, or perhaps in a remote customer’s environment), you can include rich debug information inside of an ifdebug command script block, and anything that is output from inside of that script block will automatically be written to the debug stream without prompting the end user.&#160; This includes object data, text strings, or anything else you want to write to the debug stream in order to figure out what is going on when that script runs.&#160; If the command containing ifdebug is not invoked with -Debug, PowerShell will simply skip directly over that script block, avoiding running debug logic when it is not needed, which is better for performance.</p>
<p>Both the breakpoint command and ifdebug can be used in the middle of a pipeline as well.&#160; This is important because it allows for writing debug information to the debug stream or triggering a breakpoint in the middle of a pipeline during the processing of that pipeline.&#160; If you use the breakpoint command in a pipeline and you either have the breakpoint command disabled or you are in a script block with the DebuggerHidden attribute set, or if you use the ifdebug command in a pipeline and you didn’t run the script with -Debug, both the breakpoint and the ifdebug commands will simply pass the pipeline object down to the next stage in the pipeline for additional processing.</p>
<p>At this point, you’re probably getting a feeling for the kind for the power that these commands provide.&#160; Let me show you a few simple examples that demonstrate how you might use them in practice.&#160; You can try these examples at the command prompt in the PowerShell host of your choice, or in a script file, or in functions you write, or script module files, or workflows, etc.</p>
<h5></h5>
<h5>Enter the debugger in the middle of a series of commands</h5>
<p><font face="Courier New">$services = Get-Service wuauserv,bits     <br />breakpoint      <br />Restart-Service -InputObject $services -WhatIf</font></p>
<h5>Enter the debugger conditionally in the middle of a pipeline (using the bp alias)</h5>
<p><font face="Courier New">gsv audiosrv,bits,wuauserv | bp {$_.Name -eq &#8216;bits&#8217;} | spsv -WhatIf</font></p>
<h5>Display a message as you enter the debugger reminding you why you are doing so</h5>
<p><font face="Courier New">Get-Process -Name Idle,PowerShell,Explorer |     <br />&#160;&#160;&#160; </font><font face="Courier New">breakpoint {$_.Id -eq 0} -Message &#8216;Process ID is zero???&#8217; |     <br />&#160;&#160;&#160; </font><font face="Courier New">Format-Table</font></p>
<h5>Disable the breakpoint command so that you can run without debugging</h5>
<p><font face="Courier New">Disable-BreakpointCommand     <br /><font face="Courier New">gsv audiosrv,bits,wuauserv | breakpoint {$_.Name -eq &#8216;bits&#8217;} | spsv -WhatIf</font>      <br />&#8216;See, the breakpoint command did not cause PowerShell to enter the debugger!&#8217;</font></p>
<h5>Re-enable the breakpoint command so that it functions normally again</h5>
<p><font face="Courier New">Enable-BreakpointCommand</font></p>
<h5>Skip over breakpoints in a script block by using the DebuggerHidden attribute</h5>
<p><font face="Courier New">&amp; {     <br />&#160;&#160;&#160; [System.Diagnostics.DebuggerHidden()]      <br />&#160;&#160;&#160; param()      <br />&#160;&#160;&#160; breakpoint      <br />&#160;&#160;&#160; &#8216;The breakpoint command is effectively disabled in the current scope.&#8217;      <br />}      <br />&#8216;But it still works in scopes that do not use the DebuggerHidden attribute.&#8217;      <br />breakpoint</font></p>
<h5>Create a function that generates some useful debug information</h5>
<p><font face="Courier New">function Test-IfDebug {     <br />&#160;&#160;&#160; [CmdletBinding()]      <br />&#160;&#160;&#160; param()      <br />&#160;&#160;&#160; ifdebug {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; # This may be useful when debugging, but I wouldn’t want to gather      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; # this information in everyday use. It is an exaggerated example of      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; # what you might want to collect when debugging something.</font><font face="Courier New">     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8216;*************** Current Operating System ***************&#8217;      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Get-WmiObject -Class Win32_OperatingSystem | Format-List *      <br /></font><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8216;*************** Running Services ***************&#8217;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Get-Service | Format-List *      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8216;*************** Running Processes ***************&#8217;      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Get-Process | Format-List *      <br />&#160;&#160;&#160; }      <br />&#160;&#160;&#160; Get-Service w*      <br />}</font></p>
<h5>Invoke that function without debugging</h5>
<p><font face="Courier New">Test-IfDebug</font></p>
<h5>Invoke that function with debug output turned on</h5>
<p><font face="Courier New">Test-IfDebug -Debug</font></p>
<h5>Compare the performance of the two</h5>
<p><font face="Courier New">Measure-Command {Test-IfDebug}     <br />Measure-Command {Test-IfDebug –Debug}</font></p>
<p>I think those examples provide a good demonstration of how these commands work.&#160; As I hinted at earlier in this article, I am super-excited about this module and I’m thrilled that I can share it with you now.&#160; If you want to give it a try, install the latest version in your environment by following the instructions on the <a title="PowerShell Debugging Toolkit featuring the breakpoint and ifdebug commands" href="https://github.com/KirkMunro/DebugPx" target="_blank">DebugPx project page on GitHub</a>.&#160; I have a few more features planned for this debugging toolkit, and I would be very happy to entertain your ideas as well, so please let me know what you think!&#160; Have fun debugging!</p>
<p>Kirk out.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2014/10/20/powershell-debugging-amplified/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>Make working with types in PowerShell easier with TypePx</title>
		<link>https://poshoholic.com/2014/10/08/make-working-with-types-in-powershell-easier-with-typepx/</link>
					<comments>https://poshoholic.com/2014/10/08/make-working-with-types-in-powershell-easier-with-typepx/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Thu, 09 Oct 2014 01:48:18 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[ETS]]></category>
		<category><![CDATA[type accelerator]]></category>
		<category><![CDATA[type extension]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=1357</guid>

					<description><![CDATA[It is often the little things in life that make a big difference. 1.week.ago Isn’t that a beautiful programming example? That wasn’t a heading you just read, it was a piece of code. It’s simple, it’s very expressive, it’s self-documenting, and it’s pretty hard to misunderstand the intent when you look at it.&#160; That’s not&#8230; <a class="more-link" href="https://poshoholic.com/2014/10/08/make-working-with-types-in-powershell-easier-with-typepx/">Continue reading <span class="screen-reader-text">Make working with types in PowerShell easier with&#160;TypePx</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>It is often the little things in life that make a big difference.</p>
<p>1.week.ago</p>
<p>Isn’t that a beautiful programming example? That wasn’t a heading you just read, it was a piece of code. It’s simple, it’s very expressive, it’s self-documenting, and it’s pretty hard to misunderstand the intent when you look at it.&#160; That’s not PowerShell code though…it’s Ruby.</p>
<p>Over the past year or so I have taken some MOOCs offered by Coursera and edX.&#160; After playing games that I created for my assignments in Python, I started learning more about Ruby.&#160; Ruby is a wonderful, expressive, dynamic programming language with a vibrant community that has a lot in common with PowerShell.&#160; It also offers more functionality than PowerShell does in some areas, and I started missing some of that expressive syntax that I was able to use in Ruby when I would switch back to working in PowerShell.</p>
<p>Here’s how you can accomplish the same task natively in PowerShell:</p>
<p>(Get-Date).AddDays(-7)</p>
<p>It doesn’t offer quite the same punch, does it?&#160; Between all of the brackets, the need to call out to Get-Date, and adding negative days to be able to get a timestamp representing 1 week ago, it just isn’t quite as palatable to me.</p>
<p>The beauty of a more mature language like Ruby is that it’s not just about the availability of a week method for numeric classes, nor the availability of an ago method for a time span class.&#160; It’s the availability of years, months, weeks, days, hours, minutes, seconds and milliseconds, all in singular or plural.&#160; It’s the availability of ago to refer to a date in the past, or fromnow to refer to a date in the future.&#160; Want UTC instead of local time?&#160; There’s a inutc method too, as well as so many other cool things.&#160; Small details matter.</p>
<p>Fortunately, like Ruby, PowerShell is also a dynamic language that has all sorts of extensibility built-in, allowing me to continue to enjoy expressive, Ruby-like syntax, even while working in PowerShell.&#160; I know PowerShell’s extensibility quite well, and have been leveraging it since version 1.&#160; These Ruby features inspired me to create a new PowerShell module, bringing some of the method simplicity, elegance, and usefulness from Ruby into PowerShell for the rest of the PowerShell community to enjoy.&#160; I called it <a title="Type extensions and type accelerator commands for Windows PowerShell" href="https://github.com/KirkMunro/TypePx" target="_blank">TypePx</a>.&#160; It’s open source, and it defines useful type extensions and simplifies type acceleration to reduce much of the typing that would otherwise be required when working with types in PowerShell.&#160; Also, it works on PowerShell 3.0 or later, and it’s available now.</p>
<p>Here are examples of some of the beautiful things you can do with <a title="Type extensions and type accelerator commands for Windows PowerShell" href="https://github.com/KirkMunro/TypePx" target="_blank">TypePx</a>:</p>
<p># Get a timespan in a human readable way    <br />(10).years     <br />(2).months     <br />(12).hours     </p>
<p># Use relative dates, as mentioned above     <br />(1).week.ago     <br />(30).days.ago.inutc     </p>
<p># How about using relative dates in a practical way with event logs?     <br />Get-EventLog -LogName System -After (2).Days.Ago     <br /># You can use it when monitoring file age too     <br />dir *.ps*1 | where LastWriteTime -lt (1).year.ago</p>
<p># Compact (remove null values) from an array     <br />$a = 1,$null,2,$null,3     <br />$a.Compact()     <br /># Return unique elements in an array     <br />$a = 1,1,2,3,3,4,4,5,6     <br />$a.Unique()     <br /># Reverse an array     <br />$a = 1,2,3,4     <br />$a.Reverse()     <br /># Slice an array into chunks     <br />$a = 1,2,3,4,5,6     <br />$a.Slice(3)[1]     <br /># Flatten a multi-dimensional array     <br />$a = (1,2),(3,4),(5,6)     <br />$a.Flatten()&#160; </p>
<p>These are only a few examples of what you can do with <a title="Type extensions and type accelerator commands for Windows PowerShell" href="https://github.com/KirkMunro/TypePx" target="_blank">TypePx</a>.&#160; Have you ever worked with hashtables and noticed how annoying collection management is when it comes to hashtable values?&#160; June Blender was looking for a solution to this the other day, and <a title="Type extensions and type accelerator commands for Windows PowerShell" href="https://github.com/KirkMunro/TypePx" target="_blank">TypePx</a> solves that problem.</p>
<p>$ht = @{}    <br />$ht.Add(&#8216;A&#8217;,&#8217;This is not a collection&#8217;)     <br />$ht.AddArrayItem(&#8216;B&#8217;,&#8217;This is a collection&#8217;)     <br />$ht.AddArrayItem(&#8216;B&#8217;,&#8217;This adds to the collection&#8217;)     <br />$ht</p>
<p>By now you have probably seen the cool foreach and where “magic” methods that were added to PowerShell as part of version 4.0.&#160; What about version 3.0 though?&#160; <a title="Type extensions and type accelerator commands for Windows PowerShell" href="https://github.com/KirkMunro/TypePx" target="_blank">TypePx</a> solves that problem too by adding foreach and where methods to PowerShell 3.0 with all of the bells and whistles that are available in PowerShell 4.0.</p>
<p>Here are a handful of other problems that <a title="Type extensions and type accelerator commands for Windows PowerShell" href="https://github.com/KirkMunro/TypePx" target="_blank">TypePx</a> makes easier:</p>
<ul>
<li>comparing an array to multiple search strings at the same time in a single call; </li>
<li>comparing a string to multiple search strings at the same time in a single call; </li>
<li>calculating the sum of an array or of a property on a collection of items; </li>
<li>accessing the value hidden inside of a SecureString; </li>
</ul>
<p><a title="Type extensions and type accelerator commands for Windows PowerShell" href="https://github.com/KirkMunro/TypePx" target="_blank">TypePx</a> isn’t just about type extensions either.&#160; It’s also about type acceleration.&#160; In fact, it was originally released as my old TypeAccelerator module that I had previously shared on PowerShell Magazine and posted in the <a title="PowerShell Resource Gallery" href="https://msconfiggallery.cloudapp.net/" target="_blank">PowerShell Resource Gallery</a>, but then I renamed it and included full documentation for the *-TypeAccelerator commands as well as all of the type extension goodness I described above.&#160; Type acceleration support is a great way to improve the quality of your PowerShell code when you are working with long type names.&#160; Rather than explain it here though, you might want to give <a title="Type Accelerators and Namespaces the Easy Way" href="http://www.powershellmagazine.com/2012/04/27/a-day-in-the-life-of-a-poshoholic-creating-and-using-type-accelerators-and-namespaces-the-easy-way/" target="_blank">my article on PowerShell Magazine a read</a> if you haven’t already since it explains what type acceleration is in more detail and gives examples that show why you might want to know more about it.</p>
<p>To download the latest version of <a title="Type extensions and type accelerator commands for Windows PowerShell" href="https://github.com/KirkMunro/TypePx" target="_blank">TypePx</a>, please refer to the installation instructions in the <a href="https://github.com/KirkMunro/TypePx" target="_blank">readme documentation on GitHub</a>.</p>
<p>That wraps up this article.&#160; Please let me know what you think in the comments!</p>
<p>Now if only PowerShell would properly recognize numeric literals as objects so that you could invoke methods and access properties on them without having to use brackets…</p>
<p>Kirk out.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2014/10/08/make-working-with-types-in-powershell-easier-with-typepx/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>Watch this space</title>
		<link>https://poshoholic.com/2014/10/06/watch-this-space/</link>
					<comments>https://poshoholic.com/2014/10/06/watch-this-space/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Mon, 06 Oct 2014 08:29:15 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=1354</guid>

					<description><![CDATA[In case you were wondering, I’m still here.&#160; I’ve just been busy working on all kinds of interesting things, and I’m getting geared up to start sharing the results of that work very, very soon.&#160; Watch this space.]]></description>
										<content:encoded><![CDATA[<p>In case you were wondering, I’m still here.&#160; I’ve just been busy working on all kinds of interesting things, and I’m getting geared up to start sharing the results of that work very, very soon.&#160; Watch this space.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2014/10/06/watch-this-space/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>New Technical Product Manager at Provance Technologies</title>
		<link>https://poshoholic.com/2013/04/30/new-technical-product-manager-at-provance-technologies/</link>
					<comments>https://poshoholic.com/2013/04/30/new-technical-product-manager-at-provance-technologies/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Tue, 30 Apr 2013 19:25:34 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Provance]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=862</guid>

					<description><![CDATA[Today is my first day working in my new role as Technical Product Manager at Provance Technologies.&#160; A little while back Provance approached me to talk about this position, and it seemed like a very natural fit.&#160; Rarely have I felt such a positive vibe from a company through the interview process, so I was&#8230; <a class="more-link" href="https://poshoholic.com/2013/04/30/new-technical-product-manager-at-provance-technologies/">Continue reading <span class="screen-reader-text">New Technical Product Manager at Provance&#160;Technologies</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Today is my first day working in my new role as Technical Product Manager at <a title="Provance Technologies" href="http://www.provance.com/" target="_blank">Provance Technologies</a>.&#160; A little while back Provance approached me to talk about this position, and it seemed like a very natural fit.&#160; Rarely have I felt such a positive vibe from a company through the interview process, so I was really happy to accept the position of Technical Product Manager with them and I have been looking forward to starting work with them.</p>
<p>Now that I am working full-time with <a title="Provance Technologies" href="http://provance.com" target="_blank">Provance</a>, I’ll be getting up to speed as quickly as I can on the IT Asset Management Pack and the Data Management Pack products that we offer to help companies properly manage the assets they have inside their organization.&#160; I know there is already some PowerShell support in one of the products, although I haven’t personally taken a look at it yet (but you can bet I will be soon).</p>
<p>For those of you who regularly follow my blog, if you happen to use either of these products in your organization, I’d love to hear about it.</p>
<p>Kirk out.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2013/04/30/new-technical-product-manager-at-provance-technologies/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>Hands-on Workshop at the 2013 PowerShell Summit</title>
		<link>https://poshoholic.com/2012/11/06/hands-on-workshop-at-the-2013-powershell-summit/</link>
					<comments>https://poshoholic.com/2012/11/06/hands-on-workshop-at-the-2013-powershell-summit/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Tue, 06 Nov 2012 21:43:45 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PowerShell Summit]]></category>
		<category><![CDATA[PoSh]]></category>
		<category><![CDATA[Poshoholic]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=830</guid>

					<description><![CDATA[In my last post I hinted about more news coming soon for the 2013 PowerShell Summit.&#160; In addition to the fantastic list of sessions that attendees will be able to attend, we also have a special event lined up for the last day of the event.&#160; On Wednesday, April 24th, for the entire afternoon attendees&#8230; <a class="more-link" href="https://poshoholic.com/2012/11/06/hands-on-workshop-at-the-2013-powershell-summit/">Continue reading <span class="screen-reader-text">Hands-on Workshop at the 2013 PowerShell&#160;Summit</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>In my last post I hinted about more news coming soon for the 2013 PowerShell Summit.&#160; In addition to the fantastic list of sessions that attendees will be able to attend, we also have a special event lined up for the last day of the event.&#160; On Wednesday, April 24th, for the entire afternoon attendees will be able to attend a half-day Windows PowerShell scenario walkthrough, presented by the PowerShell Team.</p>
<p>The event will take place on April 24 from 1pm &#8211; 5pm.&#160; During this time the PowerShell Team will work with attendees to collectively solve a problem from the ground up using many of the new features in Windows PowerShell 3.0 and Windows Server 2012.</p>
<p>Starting from base Windows Server 2012 images, you will walk through:</p>
<ul>
<li>Writing a PowerShell script workflow to perform Server deployments </li>
<li>Creating a constrained endpoint that hosts only the deployment workflow </li>
<li>Delegate a set of credentials for the workflow to use </li>
<li>Exposing the workflow and it&#8217;s results through a RESTful web service </li>
<li>Using Windows PowerShell Web Access to manage the workflow</li>
</ul>
<p>This is a BYOD event, so please don&#8217;t forget to bring your own laptop to follow along!</p>
<p>The facilities we have for the conference can only accommodate 50 people at this event.&#160; To give everyone a fair chance to sign up, on December 1st we will send an email from EventBrite to everyone who has already purchased their conference ticket so that they can then sign-up for this free event.&#160; If you want to have a chance to attend this workshop, you will have a much better chance if you <a href="http://powershellsummit.com" target="_blank">buy your ticket</a> before that date!</p>
<p>There will also be other activities that afternoon for those who cannot attend this event due to their travel plans, or if all of the workshop tickets are all gone. If you are able to stick around though and if you can attend this workshop, this should be a fantastic way to end the conference!</p>
<p>Kirk out.</p>
<div style="margin:0;display:inline;float:none;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6429c2b3-2bed-4d88-a63c-4bc861ce5ed4" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/PowerShell" rel="tag">PowerShell</a>,<a href="http://technorati.com/tags/PoSh" rel="tag">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic" rel="tag">Poshoholic</a>,<a href="http://technorati.com/tags/PowerShell+Summit" rel="tag">PowerShell Summit</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2012/11/06/hands-on-workshop-at-the-2013-powershell-summit/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>PowerShell Summit Community Sessions List [Updated]</title>
		<link>https://poshoholic.com/2012/11/02/powershell-summit-community-sessions-list/</link>
					<comments>https://poshoholic.com/2012/11/02/powershell-summit-community-sessions-list/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Fri, 02 Nov 2012 19:19:22 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PowerShell Summit]]></category>
		<category><![CDATA[PoSh]]></category>
		<category><![CDATA[Poshoholic]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=824</guid>

					<description><![CDATA[[Update: April 19, 2013] Important Note: Due to some last minute schedule changes for some of our speakers, several of the sessions below were replaced with other sessions.  To see the final list of sessions offered at the 2013 PowerShell Summit, please visit this page: http://powershell.org/wp/2013/04/19/powershell-summit-2013-conference-schedule/ After almost 100 people voted for the sessions they would&#8230; <a class="more-link" href="https://poshoholic.com/2012/11/02/powershell-summit-community-sessions-list/">Continue reading <span class="screen-reader-text">PowerShell Summit Community Sessions List&#160;[Updated]</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>[Update: April 19, 2013] <strong>Important Note:</strong> Due to some last minute schedule changes for some of our speakers, several of the sessions below were replaced with other sessions.  To see the final list of sessions offered at the 2013 PowerShell Summit, please visit this page: <a class="vt-p" href="http://powershell.org/wp/2013/04/19/powershell-summit-2013-conference-schedule/">http://powershell.org/wp/2013/04/19/powershell-summit-2013-conference-schedule/</a></p>
<p>After almost 100 people voted for the sessions they would like to see the most at the <a class="vt-p" href="http://powershellsummit.org" target="_blank">2013 PowerShell Summit</a>, the results are in!  These votes are for the sessions chosen by the community, and additional sessions from the PowerShell Team will be announced at a later date (as soon as I have them).</p>
<p>Below you will find the not-quite-finalized list of community sessions that will be included in the 2013 PowerShell Summit, sorted alphabetically by speaker.  It is not quite finalized because I am still awaiting final confirmation from a handful of speakers (those marked with an asterisk).  I will update this post as the final confirmations come in.</p>
<p>Thank you to everyone who submitted a session proposal for this conference.  There were a lot of great proposals this year, and I personally think no matter which sessions were voted for, the conference would have been fantastic.  Also thank you to anyone who took the time to vote for their favorite sessions.  Your votes really helped us a lot here, both for the upcoming 2013 conference and for conferences we’ll be planning in the future too!</p>
<p>If you would like to attend this conference so that you can learn from these great sessions and others that are not yet announced, and so that you can participate in the fantastic conversations that happen at such an event, you can purchase your ticket here: <a class="vt-p" href="http://powershell.org/summit/">http://powershell.org/summit/</a>.</p>
<p>Here is the list of sessions that made the final cut:</p>
<table width="592">
<tbody>
<tr>
<th width="37">Speaker</th>
<th width="176">Title</th>
<th width="430">Description</th>
</tr>
<tr>
<td width="37">June Blender</td>
<td width="176">Help for Help: A Help Authoring Deep Dive</td>
<td width="430">A comprehensive 400-level talk for module authors about authoring techniques for all types of Windows PowerShell Help, including About help and help for all command types, including cmdlets (and the MAML schema), scripts, functions, CIM commands, workflows (script and XAML), providers (including custom cmdlet help), and snippets. What you can and cannot do, and what&#8217;s worth doing when time and resources are short. We&#8217;ll cover online help, Updatable Help, and all the gotchas (HelpInfo XML, HelpInfoUri, HelpUri, CHMs), and I&#8217;ll share the scripts that I use to generate help files and verify the accuracy of parameters, parameter values, parameter attributes, GUIDs, and URIs.</td>
</tr>
<tr>
<td width="37">James Brundage*</td>
<td width="176">The Powers of PowerShell Pipeworks</td>
<td width="430">Ever wanted to make PowerShell easy for others? Or realize that a simple script you have would be a great backbone of a business (if only you could charge for it)? PowerShell Pipeworks is a web platform built in PowerShell that makes is simple to build compelling web applications and software services in a snap. In this session, you will see: &#8211; How to use Pipeworks to store your data to the cloud &#8211; How to create a monitoring dashboard with Pipeworks &#8211; How to build a Facebook application with PowerShell Pipeworks &#8211; How to put a price tag on a cmdlet</td>
</tr>
<tr>
<td width="37">Ian Davis</td>
<td width="176">Metaprogramming PowerShell</td>
<td width="430">PowerShell can be a fun and crazy language to use, but we can take it a step further with metaprogramming. By taking advantage of PowerShell&#8217;s flexible language features including dynamic scoping, modules, deferred evaluation, and ScriptBlocks, we can create simple and powerful applications applications leveraging metaprogramming idioms.</td>
</tr>
<tr>
<td width="37">Ian Davis</td>
<td width="176">Automated Builds With PowerShell</td>
<td width="430">Automated builds are a critical part of application lifecycle management. PowerShell is very well suited for making this process easier. We have gone full circle with scripting builds and by leveraging PowerShell on the command line and building DSLs, our builds can be more robust and intuitive than ever.</td>
</tr>
<tr>
<td width="37">Adam Driscoll</td>
<td width="176">Inside PowerShell: Abstract Syntax Tree Manipulation</td>
<td width="430">In this session we will take apart PowerShell. This session will highlight the new abstract syntax tree and node visitor API that is exposed in v3. An instrumentation profiler will be used as an example of how to traverse and manipulate PowerShell scripts from within the engine.</td>
</tr>
<tr>
<td width="37">Adam Driscoll</td>
<td width="176">.NET Reverse Engineering with PowerShell</td>
<td width="430">In this session we will look at how to utilize ILSpy to decompile .NET assemblies and quickly access internal aspects of them using PowerShell. We will see how to easily expose private members for access and manipulation within scripts. Adam Driscoll</td>
</tr>
<tr>
<td width="37">Jeffery Hicks</td>
<td width="176">Adding a GUI to PowerShell without WinForms</td>
<td width="430">Graphical PowerShell scripts seem all the rage these days. But most often that means using Windows Forms which can be very tedious to work with. But that is not the only game in town. Depending on your requirements there are a number of techniques you can use to add graphical elements to your PowerShell scripts. This session will explore how to create message boxes, input forms and more, all without a single Windows Form. If you are just getting started with writing PowerShell scripts, you&#8217;ll find these techniques simple to use, plus there will be plenty of sample code for all!</td>
</tr>
<tr>
<td width="37">Don Jones</td>
<td width="176">Workflow Walkthrough</td>
<td width="430">It seems like everyone&#8217;s interested in v3&#8217;s new Workflow feature, so let&#8217;s do a quick walkthrough of building one from scratch. We&#8217;ll skip the usual &#8220;provisioning&#8221; example and go for something a bit more constrained, and perhaps real-world, where workflow&#8217;s unique features can really be put to solid use. This&#8217;ll also be an opportunity to discuss what workflow can and can&#8217;t do, and discuss some of the options and permutations of using it.</td>
</tr>
<tr>
<td width="37">Don Jones</td>
<td width="176">Remoting Configuration Deep Dive</td>
<td width="430">What do you do when Enable-PSRemoting isn&#8217;t enough? Dig deeper. We&#8217;ll run through all of the major configuration scenarios, including how to use (and not abuse) TrustedHosts, how to set up an HTTPS listener (and use it), how to do non-domain authentication, how to enable CredSSP and configure it to be less than a major security hole, and more. Pretty much every possible Remoting config, we&#8217;ll cover. With detailed, step-by-step instructions!</td>
</tr>
<tr>
<td width="37">Kirk Munro</td>
<td width="176">Creating Add-on Tools for PowerShell ISE</td>
<td width="430">PowerShell 3 includes a ton of improvements to the integrated scripting editor, PowerShell ISE. As great as PowerShell ISE is in this version, there is still a lot of room for improvement. Fortunately, Microsoft anticipated that they wouldn&#8217;t be able to do everything, so they extended their support for creating Add-on Tools for PowerShell ISE.In this session, the worlds first self-proclaimed Poshoholic and PowerShell MVP Kirk Munro will provide a soup to nuts demonstration of PowerShell ISE Add-on Tools, showing how you can create everything from simple menu extensions to feature rich windows that respond to ISE events and that are docked right inside of the ISE.</p>
<p>Technologies covered in this session include the PowerShell ISE object model, C#, WPF, eventing, Visual Studio 2012, and of course several core PowerShell features.</td>
</tr>
<tr>
<td width="37">Kirk Munro</td>
<td width="176">Authoring PowerShell like a Poshoholic</td>
<td width="430">I&#8217;ve been using PowerShell for over 6 years. Blogging about it for over 5 years. Creating and managing products based on PowerShell for about that long as well, and writing a whole lot of scripts during the process. During this time I&#8217;ve come up with a trick or three to make that work easier. Some of these tricks are simple time savers, while others are ground breaking opportunities that just might change the way you write PowerShell.Come and join me in this session to get a bird&#8217;s eye view at some of the work I&#8217;ve been doing with PowerShell, as I talk about tips, tricks, and best practices while demonstrating some of the extensions I&#8217;ve written specifically to make authoring with PowerShell easier to do.</p>
<p>Topics discussed include proxy functions, WMI/CIM, Microsoft Office, DSVs, WiX, merge modules, type accelerators, and more.</td>
</tr>
<tr>
<td width="37">Aleksandar Nikolic</td>
<td width="176">How to Delegate Administration and Customize PowerShell Session Configuration</td>
<td width="430">In this session you will learn how to customize PowerShell session configuration, and then use it to assign specific administrative tasks to the appropriate users and groups without changing the membership of local Administrators group. By using new Windows PowerShell and Windows Remote Management 3.0 capabilities we will enable dynamic creation of customized automation environments that users can access through the Windows PowerShell Web Access.</td>
</tr>
<tr>
<td width="37">Aleksandar Nikolic</td>
<td width="176">Configuring Your Windows PowerShell Workflow Environment</td>
<td width="430">In this session you will learn how to set up your environment to run Windows PowerShell workflows. We will discuss different workflow configurations, how to prepare computers to run workflows, what is workflow session configuration and how to customize it. At the end, you will learn how to properly run your Windows PowerShell workflows.</td>
</tr>
<tr>
<td width="37">Aleksandar Nikolic</td>
<td width="176">Build Your Demo Environment or a Test Lab with Windows PowerShell</td>
<td width="430">With Windows PowerShell 3.0 and the new Client Hyper-V available in Windows 8, it is so easy, and fun, to automate creation of your demo environment or a test lab infrastructure. You can easily convert ISO files to VHDs, deploy your VMs and configure networking and storage. Join us for this demo-heavy session to see all the steps.</td>
</tr>
<tr>
<td width="37">Alan Renouf</td>
<td width="176">Creating a complex and reusable HTML reporting structure</td>
<td width="430">In this session I will show you the shortcuts and tricks picked up when creating a complex reporting structure with PowerShell, how a simple HTML output script grew to be a reporting structure which can adapt to give detailed, nicely formatted reports on any application or system that has a PowerShell interface, and even some that don&#8217;t!</td>
</tr>
<tr>
<td width="37">Alan Renouf</td>
<td width="176">Practical PowerShell Integration from Bare Metal to the Cloud</td>
<td width="430">See how PowerShell can be used as the glue of the datacenter, take information from VMware, Cisco and Microsoft, Glue them all together and go from bare metal up to the cloud and beyond. Learn how PowerShell is now expanding to be the language of choice and how Microsoft and third party products can be tied together to create fantastic solutions.</td>
</tr>
<tr>
<td width="37">Andy Schneider</td>
<td width="176">PowerShell and Source Control for the IT Pro</td>
<td width="430">Are you ever concerned about updating a script, having it break, and can&#8217;t remember what you changed. This is source control by an IT Pro for IT Pros. Come check out some best practices and lessons learned on how to incorporate source control as part of writing scripts. Learn how to have your code available via the web and easily accessed on multiple machines. We&#8217;ll take a look at using GIT to ensure your code is always up to date and you can always get back to where you were if you break something.</td>
</tr>
<tr>
<td width="37">Andy Schneider</td>
<td width="176">PowerShell and Active Directory</td>
<td width="430">This session will provide a quick overview of different options to manage AD using PowerShell. It will quickly jump into some of the shortcomings of the MSFT provided Active Directory module and how to work around them, and even &#8220;fix&#8221; them using proxy functions and the new Default Parameter Set feature in V3.</td>
</tr>
<tr>
<td width="37">Richard Siddaway</td>
<td width="176">CIM sessions</td>
<td width="430">The introduction of the CIM cmdlets and “cmdlets over objects” in PowerShell v3 provide new ways to work with WMI. In addition, they bring a new way to access remote systems ? CIM sessions. Analogous to PowerShell remoting sessions they provide a new flexibility when working with WMI and remote machines. This session will demonstrate:<br />
&#8211; How to use CIM sessions against systems running PowerShell v3<br />
&#8211; How to work with legacy installations of PowerShell v2<br />
&#8211; How to use the available CIM session options to configure the session to meet your requirements<br />
&#8211; Compare and contrast working with WMI, CIM and WSMAN cmdlets against remote machines to illustrate the strengths and weaknesses of each<br />
&#8211; How to mix and match CIM sessions using WSMAN and DCOM.The key takeaways from this session will be:<br />
&#8211; The CIM cmdlets provide a new way to access WMI<br />
&#8211; WSMAN is required knowledge<br />
&#8211; WSMAN and DCOM can both be used with the CIM cmdlets<br />
&#8211; CIM sessions are easy to use and very powerful<br />
&#8211; No more DCOM problems</td>
</tr>
<tr>
<td width="37">Richard Siddaway</td>
<td width="176">PowerShell Web Access</td>
<td width="430">PowerShell Web Access is a new feature in Windows Server 2012 that provides a web based PowerShell console. You don&#8217;t need PowerShell on your client to administer remote machines as long as you have PWA. This session will demonstrate how to configure PWA, its strengths and weaknesses &#8211; you might even see PowerShell being accessed from a non-Windows machine! The security implications of PWA will be discussed. PWA will be compared to other ways to access remote machines through PowerShell including PS Remoting and CIM sessions.</td>
</tr>
<tr>
<td width="37">Richard Siddaway</td>
<td width="176">PowerShell events</td>
<td width="430">The PowerShell event engine enables you to work with .NET; WMI and PowerShell engine events. What are these and how do they work? What can I do with them? Want to stop a process that shouldn&#8217;t be running? Want to start a process that&#8217;s stopped? That&#8217;s what this session will show you with PowerShell events.</td>
</tr>
<tr>
<td width="37">Ed Wilson</td>
<td width="176">Write modules, not scripts</td>
<td width="430">Learn how to get the most from Windows PowerShell by learning a simple five-step method to transform your Windows PowerShell code into a highly reusable module. This presentation is a live demo that begins with a single line of Windows PowerShell code, transforms the code into a function, adds comment based help to the function, and converts it into a module. Next, the installation and discovery of Windows PowerShell modules is covered, as is updating the module and creating a Windows PowerShell module manifest. Ed Wilson</td>
</tr>
<tr>
<td width="37">Ed Wilson</td>
<td width="176">What I learned by grading 2000 PowerShell Scripts in the 2012 Scripting Games</td>
<td width="430">The 2012 Scripting Games attracted both experienced and novice scripters from more than 100 countries around the world. In grading the 2000 submitted scripts, I noticed a common theme emerged. Some of the things that were consistently confused by both beginners and advanced scripters include the following: failure to return objects from functions, not creating reusable functions, spending too much duplicating capabilities of native PowerShell, using meaningless comments, omission of error handling, and an overreliance on Write-Host. In this session, I will address each of these areas of concern and show both good and bad examples from the games. A thorough discussion of each of these topics rounds out the presentation. This presentation uses live demos to illustrate the techniques that are discussed. Ed Wilson</td>
</tr>
<tr>
<td width="37">Ed Wilson</td>
<td width="176">PoshMon: PowerShell does performance counters</td>
<td width="430">One of the cool features on Windows PowerShell 3.0 is easy consumption of WMI performance counters into Windows PowerShell. In the past, leveraging these performance counters meant writing long lines of cryptic code, calling refresher objects, and dealing with weird timestamp issues. But no more! Using a simple cmdlet, Windows PowerShell throws open the door to the treasure trove of performance counter information. But where does the oversubscribed IT pro begin? A question on my Windows NT 3.51 MCSE exam stated there are four areas for performance monitoring: disk, memory, network, and CPU. These four resources have not changed much, regardless of the application these basic areas of investigation still ring true. In this session, I talk about discovering performance counters, using performance counters, and storing information gathered from performance counters. The talk will be strengthened by live demos at each stage of the presentation.</td>
</tr>
<tr>
<td width="37">Matt Wrock*</td>
<td width="176">Unit Testing PowerShell</td>
<td width="430">This talk will provide a walk through of Unit Testing PowerShell scripts. The OSS project Pester (<a href="https://github.com/pester/Pester" rel="nofollow">https://github.com/pester/Pester</a>) will be used to illustrate popular unit testing patterns such as ArrangeActAssert and Mocking to provide testability to PowerShell. There will be discussion on why and when to use unit testing in PowerShell as well.</td>
</tr>
</tbody>
</table>
<p>Keep an eye on my blog for additional news about this conference, because more exciting news is on the way!</p>
<p>Thanks,</p>
<p>Kirk out.</p>
<div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6230b1e8-b7aa-4e9c-b8c8-28b1ddcbeeb8" style="margin:0;display:inline;float:none;padding:0;">Technorati Tags: <a class="vt-p" href="http://technorati.com/tags/PowerShell" rel="tag">PowerShell</a>,<a class="vt-p" href="http://technorati.com/tags/PoSh" rel="tag">PoSh</a>,<a class="vt-p" href="http://technorati.com/tags/Poshoholic" rel="tag">Poshoholic</a>,<a class="vt-p" href="http://technorati.com/tags/PowerShell+Summit" rel="tag">PowerShell Summit</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2012/11/02/powershell-summit-community-sessions-list/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>Voting for the 2013 PowerShell Summit sessions is now open!</title>
		<link>https://poshoholic.com/2012/10/15/voting-for-the-2013-powershell-summit-sessions-is-now-open/</link>
					<comments>https://poshoholic.com/2012/10/15/voting-for-the-2013-powershell-summit-sessions-is-now-open/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Tue, 16 Oct 2012 03:29:25 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PowerShell Summit]]></category>
		<category><![CDATA[PowerShell.org]]></category>
		<category><![CDATA[PoSh]]></category>
		<category><![CDATA[Poshoholic]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=820</guid>

					<description><![CDATA[Voting is now open! As of this morning you can vote for the sessions that you want to see at the 2013 PowerShell Summit!&#160; We have 97 session proposals (see below), plus additional content from the PowerShell Team.&#160; Your vote is really important, so please take some time to indicate what you would like to&#8230; <a class="more-link" href="https://poshoholic.com/2012/10/15/voting-for-the-2013-powershell-summit-sessions-is-now-open/">Continue reading <span class="screen-reader-text">Voting for the 2013 PowerShell Summit sessions is now&#160;open!</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Voting is now open!</p>
<p>As of this morning you can vote for the sessions that you want to see at the 2013 PowerShell Summit!&#160; We have 97 session proposals (see below), plus additional content from the PowerShell Team.&#160; Your vote is really important, so please take some time to indicate what you would like to see from a PowerShell-specific conference with deep technical depth.</p>
<p>Here’s what you need to do:</p>
<p>1. <strong>Open</strong> the <a href="http://674004.polldaddy.com/s/powershell-summit-na-2013-session-voting" target="_blank">voting survey</a> in a new tab or window (this link will automatically open in a new window).</p>
<p>2. <strong>Review the list of proposed sessions</strong> side by side with the table below.&#160; The table below contains the titles, descriptions, and presenter details for every proposal that is in the survey.&#160; This should save you a ton of time when you’re trying to identify the sessions that you want to see.</p>
<p>3. <strong>Pick your top 20 sessions </strong>that you would like to see at this conference.&#160; There will be more than 20 sessions, but if everyone sticks to voting for their top 20 we’ll get a good distribution in the survey and it will provide a better sample of what everyone wants to see.</p>
<p>Once you’ve done that, then just sit back and wait until we announce the official agenda after <strong>voting closes on midnight, October 28, 2012</strong>.&#160; That gives you 2 full weeks to vote for what you would like to see.&#160; Once voting closes, myself and other conference organizers will review the votes, coordinate with speakers, include additional content from the PowerShell team, and build an agenda for the conference.&#160; Building the agenda and confirming with presenters will take a little time, so don’t expect to see it posted the morning of October 29. <img style="border-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://poshoholic.com/wp-content/uploads/2012/10/wlemoticon-smile.png?w=739" /></p>
<p>Here are the session proposals that you can choose from:</p>
<table>
<tbody>
<tr>
<th>Title</th>
<th>Description</th>
</tr>
<tr>
<td>How VMware does PowerShell</td>
<td>Presented by: Alan Renouf          </p>
<p>Learn the top 5 things VMware does in PowerShell that is different to anything you have seen before, see how a 3rd Party can take the awesome sauce of PowerShell and add their own flare. This session will show you some cool features of VMware&#8217;s PowerShell snapin (PowerCLI) and show how VMware became the largest PowerShell community outside of Microsoft. This session is relevant to anyone who uses PowerShell as it will show the key features VMware included in their snapin and the benefits these give to system administrators.</td>
</tr>
<tr>
<td>Creating a complex and reusable HTML reporting structure</td>
<td>Presented by: Alan Renouf          </p>
<p>In this session I will show you the shortcuts and tricks picked up when creating a complex reporting structure with PowerShell, how a simple HTML output script grew to be a reporting structure which can adapt to give detailed, nicely formatted reports on any application or system that has a PowerShell interface, and even some that don&#8217;t!</td>
</tr>
<tr>
<td>Creating Add-on Tools for PowerShell ISE</td>
<td>Presented by: Kirk Munro          </p>
<p>PowerShell 3 includes a ton of improvements to the integrated scripting editor, PowerShell ISE. As great as PowerShell ISE is in this version, there is still a lot of room for improvement. Fortunately, Microsoft anticipated that they wouldn&#8217;t be able to do everything, so they extended their support for creating Add-on Tools for PowerShell ISE.           </p>
<p>In this session, the worlds first self-proclaimed Poshoholic and PowerShell MVP Kirk Munro will provide a soup to nuts demonstration of PowerShell ISE Add-on Tools, showing how you can create everything from simple menu extensions to feature rich windows that respond to ISE events and that are docked right inside of the ISE.           </p>
<p>Technologies covered in this session include the PowerShell ISE object model, C#, WPF, eventing, Visual Studio 2012, and of course several core PowerShell features.</td>
</tr>
<tr>
<td>Workflow Walkthrough</td>
<td>Presented by: Don Jones          </p>
<p>It seems like everyone&#8217;s interested in v3&#8217;s new Workflow feature, so let&#8217;s do a quick walkthrough of building one from scratch. We&#8217;ll skip the usual &quot;provisioning&quot; example and go for something a bit more constrained, and perhaps real-world, where workflow&#8217;s unique features can really be put to solid use. This&#8217;ll also be an opportunity to discuss what workflow can and can&#8217;t do, and discuss some of the options and permutations of using it.</td>
</tr>
<tr>
<td>Remoting Configuration Deep Dive</td>
<td>Presented by: Don Jones          </p>
<p>What do you do when Enable-PSRemoting isn&#8217;t enough? Dig deeper. We&#8217;ll run through all of the major configuration scenarios, including how to use (and not abuse) TrustedHosts, how to set up an HTTPS listener (and use it), how to do non-domain authentication, how to enable CredSSP and configure it to be less than a major security hole, and more. Pretty much every possible Remoting config, we&#8217;ll cover. With detailed, step-by-step instructions!</td>
</tr>
<tr>
<td>Remoting Security Smackdown</td>
<td>Presented by: Don Jones          </p>
<p>You know you want to turn on Remoting. Heck, Win2012 turns it on for you and can&#8217;t be managed without it! But your &quot;Security Guys&quot; are freaking out, which is odd, because they don&#8217;t seem to mind RDP. So we&#8217;ll run through every single aspect of Remoting security: Mutual authentication. Auditing. Authentication. Delegation. Impersonation. Double-hop. Triple-hop. CredSSP. Kerberos. SSL. Everything. You bring the security guys&#8217; questions, we&#8217;ll get you the most accurate answers possible to take back with you.</td>
</tr>
<tr>
<td>Delegated Administration via Remoting and GUI</td>
<td>Presented by: Don Jones          </p>
<p>It&#8217;s an age-old problem: You want to set up some of your users to perform some basic task, but you don&#8217;t actually want to give them permissions to do it, and you certainly don&#8217;t want to give them the MMC necessary to do it. Thanks to Remoting and a little WinForms action, that&#8217;s no problem. We&#8217;ll walk through how to set up a constrained Remoting endpoint that can run a highly limited set of predefined commands, and that runs them under alternate credentials. Then we&#8217;ll build a simple GUI app, suitable for end-user consumption, that utilizes the endpoint to accomplish the task. It&#8217;s the perfect way to build end-user tools, help desk utilities, and more!</td>
</tr>
<tr>
<td>Building Self-Service Web Tools with PowerShell</td>
<td>Presented by: Don Jones          </p>
<p>We all want to make our lives easier&#8230; and often, that means giving users self-service tools to accomplish specific tasks. Deploying those tools can be a pain in the next, though, unless you can create them as a Web page. After all, a Web server provides a centralized platform. In this session, we&#8217;ll look at a couple of ways of building self-service Web pages. One, using /n software&#8217;s tool that lets a .PS1 become a Web page, and another in building a simple ASP.NET page that hosts PowerShell&#8217;s engine.</td>
</tr>
<tr>
<td>Help for Help: A Help Authoring Deep Dive</td>
<td>Presented by: June Blender, Senior Programming Writer, Windows PowerShell Team          </p>
<p>A comprehensive 400-level talk for module authors about authoring techniques for all types of Windows PowerShell Help, including About help and help for all command types, including cmdlets (and the MAML schema), scripts, functions, CIM commands, workflows (script and XAML), providers (including custom cmdlet help), and snippets. What you can and cannot do, and what&#8217;s worth doing when time and resources are short. We&#8217;ll cover online help, Updatable Help, and all the gotchas (HelpInfo XML, HelpInfoUri, HelpUri, CHMs), and I&#8217;ll share the scripts that I use to generate help files and verify the accuracy of parameters, parameter values, parameter attributes, GUIDs, and URIs.</td>
</tr>
<tr>
<td>Practical PowerShell Integration from Bare Metal to the Cloud</td>
<td>Presented by: Alan Renouf          </p>
<p>See how PowerShell can be used as the glue of the datacenter, take information from VMware, Cisco and Microsoft, Glue them all together and go from bare metal up to the cloud and beyond. Learn how PowerShell is now expanding to be the language of choice and how Microsoft and third party products can be tied together to create fantastic solutions.</td>
</tr>
<tr>
<td>PowerShell for the Security Professional</td>
<td>Presented by: Carlos Perez          </p>
<p>How can PowerShell be leveraged by the security professional doing Incident Response, Penetration Testing (Enumeration and Post-Exploitation) or performing an audit. The presentation will cover how PowerShell can be used to gather volatile information during an incident response, what cmdlets and technologies work best to gather the proper info and alter the least the system state. Use PowerShell to help in the documentation of the integrity of the results gathered. For the Pentester how to use PowerShell to write enumeration tools leveraging .Net and use PowerShell in post-exploitation running PowerShell in Shell,Leveraging Metasploit PowerShell mixing for running scripts to gain further foothold on target systems, escalate privileges and log all keystrokes on a target.</td>
</tr>
<tr>
<td>PowerCLI and vSphere API integration</td>
<td>Presented by: Luc Dekens          </p>
<p>The PowerCLI snapin is used to manage and automate your VMware vSphere and vCD environments. One of the strengths of the PowerCLI snapin from day 1 is it&#8217;s ability to flawlessly integrate with the rich API ecosystem vSphere and vCD offer. A byproduct of this tight API integration is the ability to scale your automation scripts for bigger environments. This session will show how it&#8217;s done, how you can use it and how easy it is.</td>
</tr>
<tr>
<td>PowerCLI and performance reports</td>
<td>Presented by: Luc Dekens          </p>
<p>The VMware vSphere environment provides many performance metrics to see what is going on inside. You can use these metrics for problem solving, performance reports and capacity planning. This session will explain how to tackle the collection and handling of these performance metrics. It will also show all the possibilities you have to present your data in a meaningful way. There will be some math and statistics involved, but that&#8217; should be no problem for PowerShell and the average administrator.</td>
</tr>
<tr>
<td>PowerCLI automates the lifecycle management of your VM</td>
<td>Presented by: Luc Dekens          </p>
<p>With VMware&#8217;s PowerCLI snapin it is easy to automate the complete lifecycle management of your VMs. This sessions will show how this is done. With the available cmdlets you can create, configure, administer and remove any VM. Needless to say that the session will discuss the best practices. But it will also show some lesser known tricks to get your VMs in exactly the state you want them to be. And you&#8217;ll learn how you can produce meaningful reports at every step of the way. In short, &quot;The Automated Life of a VM&quot;.</td>
</tr>
<tr>
<td>PowerShell and Source Control for the IT Pro</td>
<td>Presented by: Andy Schneider          </p>
<p>Are you ever concerned about updating a script, having it break, and can&#8217;t remember what you changed. This is source control by an IT Pro for IT Pros. Come check out some best practices and lessons learned on how to incorporate source control as part of writing scripts. Learn how to have your code available via the web and easily accessed on multiple machines. We&#8217;ll take a look at using GIT to ensure your code is always up to date and you can always get back to where you were if you break something.</td>
</tr>
<tr>
<td>PowerShell and Active Directory</td>
<td>Presented by: Andy Schneider          </p>
<p>This session will provide a quick overview of different options to manage AD using PowerShell. It will quickly jump into some of the shortcomings of the MSFT provided Active Directory module and how to work around them, and even &quot;fix&quot; them using proxy functions and the new Default Parameter Set feature in V3.</td>
</tr>
<tr>
<td>Disconnected Sessions: How they work. How they&#8217;ll work for you</td>
<td>Presented by: Paul Higinbotham, Software Development Engineer, Microsoft and June Blender, Senior Programming Writer, Windows PowerShell Team          </p>
<p>An in-depth talk for script authors and IT professionals interested in learning how to disconnect from live remote sessions and reconnect to those sessions later from an arbitrary client machine. What you can and can&#8217;t do with disconnected remote sessions, how remote sessions can be automatically disconnected because of network problems, how to query remote machines for available sessions you can connect to, and how to use disconnect session options.           </p>
<p>Paul Higinbotham, the developer who coded the feature, and June Blender, Windows PowerShell programming writer, describe the design and architecture of disconnected sessions and explain how session information is retained and disconnected sessions are reconnected. We will cover the details of several remote session disconnect scenarios using the new and modified cmdlets for this feature and demonstrate how to use them.</td>
</tr>
<tr>
<td>PowerCLI: how to run PS scripts inside the VM&#8217;s guest OS</td>
<td>Presented by: Luc Dekens          </p>
<p>You can use PSRemoting to run PowerShell scripts inside the guest OS of your VM. But what to do when PSRemoting isn&#8217;t possible or available ? Think for example of VMs in a DMZ or on a pvlan. This session will show some alternatives. Run scripts as part of the guest OS deployment, run scripts through the VMware Tools interface or use an external trigger, via the VMware Tools, to influence PS jobs scheduled inside the guest OS.</td>
</tr>
<tr>
<td>CIM sessions</td>
<td>Presented by: Richard Siddaway          </p>
<p>The introduction of the CIM cmdlets and “cmdlets over objects” in PowerShell v3 provide new ways to work with WMI. In addition, they bring a new way to access remote systems ? CIM sessions. Analogous to PowerShell remoting sessions they provide a new flexibility when working with WMI and remote machines. This session will demonstrate:           <br />&#8211; How to use CIM sessions against systems running PowerShell v3           <br />&#8211; How to work with legacy installations of PowerShell v2           <br />&#8211; How to use the available CIM session options to configure the session to meet your requirements           <br />&#8211; Compare and contrast working with WMI, CIM and WSMAN cmdlets against remote machines to illustrate the strengths and weaknesses of each           <br />&#8211; How to mix and match CIM sessions using WSMAN and DCOM.           </p>
<p>The key takeaways from this session will be:           <br />&#8211; The CIM cmdlets provide a new way to access WMI           <br />&#8211; WSMAN is required knowledge           <br />&#8211; WSMAN and DCOM can both be used with the CIM cmdlets           <br />&#8211; CIM sessions are easy to use and very powerful           <br />&#8211; No more DCOM problems</td>
</tr>
<tr>
<td>PowerShell and the Legacy</td>
<td>Presented by: Sean Kearney          </p>
<p>There is a belief that using PowerShell means rejecting the use of legacy environments like vbScript and Console applications. Some may also believe that just because they have an older system it is not possible to manage it with PowerShell Watch as the most Energized MVP, Sean Kearney takes you into a world of wonder where the old and the new Co-Exist. See possibilities you may not have considered before.           </p>
<p>Key take-aways:           <br />&#8211; Interaction between modern day PowerShell and older apps           <br />&#8211; Repurposing older tools as PowerShell cmdlets</td>
</tr>
<tr>
<td>Tastes Great! Less Scripting!</td>
<td>Presented by: Sean Kearney          </p>
<p>The fight continues on. the argument between the great Lords above that PowerShell is a scripting Environment vs whether it is a Management console! Watch an Actual ITPro on Stage as he shows how he REALLY uses PowerShell in a day to day environment, from basic management and reporting needs, to building out a script to manage needed tasks Take aways Understanding that learning PowerShell does NOT mean a heavy reschooling.</td>
</tr>
<tr>
<td>PowerShell and Hyper-V3 &#8211; Flying by the Seat of your Pants</td>
<td>Presented by: Sean Kearney          </p>
<p>Go hardcore. Or in this case FULL SERVER CORE 2012! Learn how you can fully manage a complete clustered Hyper-V core environment in Server 2012 from Creation of the Cluster to management of the Virtual machines including Site replication all without the GUI.           </p>
<p>Take aways? Be hard core and go CORE! <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
</tr>
<tr>
<td>Highway to PowerShell &#8211; The Story behind the Story</td>
<td>Presented by: Sean Kearney          </p>
<p>Ok this isn&#8217;t Deep Dive and I don&#8217;t expect anybody to PAY for this but I&#8217;m willing to talk about just HOW and WHY I turned into a musical Madman <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
</tr>
<tr>
<td>Authoring PowerShell like a Poshoholic</td>
<td>Presented by: Kirk Munro          </p>
<p>I&#8217;ve been using PowerShell for over 6 years. Blogging about it for over 5 years. Creating and managing products based on PowerShell for about that long as well, and writing a whole lot of scripts during the process. During this time I&#8217;ve come up with a trick or three to make that work easier. Some of these tricks are simple time savers, while others are ground breaking opportunities that just might change the way you write PowerShell.           </p>
<p>Come and join me in this session to get a bird&#8217;s eye view at some of the work I&#8217;ve been doing with PowerShell, as I talk about tips, tricks, and best practices while demonstrating some of the extensions I&#8217;ve written specifically to make authoring with PowerShell easier to do.           </p>
<p>Topics discussed include proxy functions, WMI/CIM, Microsoft Office, DSVs, WiX, merge modules, type accelerators, and more.</td>
</tr>
<tr>
<td>Introduction to the Storage Management API</td>
<td>Presented by: Bruce Langworthy, Senior Program Manager, Storage and File Systems          </p>
<p>SMAPI is what exposes the Storage module for Windows PowerShell. This session would be focused on providing some details on what it is, how it works, in which cases 3rd party drivers are required, and how it&#8217;s surfaced as a PowerShell module. More information: This session is recommended as a background for the &quot;Managing Storage with PowerShell&quot; and &quot;Managing Storage Spaces with PowerShell&quot; sessions.</td>
</tr>
<tr>
<td>Managing Storage with PowerShell</td>
<td>Presented by: Bruce Langworthy, Senior Program Manager, Storage and File Systems          </p>
<p>A dive into using the Storage module for Windows PowerShell to manage local storage, Storage Spaces, and array-based storage using PowerShell. More information: The focus of this session will be on the management of Disk, Partition, and Volume objects, with a brief overview of how this applies to Storage Spaces.</td>
</tr>
<tr>
<td>Managing Storage Spaces with PowerShell</td>
<td>Presented by: Bruce Langworthy, Senior Program Manager, Storage and File Systems          </p>
<p>This topic will focus specifically on deploying, configuring, and managing Storage Spaces using PowerShell. More information: Will cover deployment of Storage Spaces from beginning to end using PowerShell, and focus on using PowerShell to manage Storage Spaces. The &quot;Introduction to the Storage Management API&quot; session is strongly recommended before attending this session.</td>
</tr>
<tr>
<td>Managing the iSCSI Initiator and MPIO using PowerShell</td>
<td>Presented by: Bruce Langworthy, Senior Program Manager, Storage and File Systems          </p>
<p>This topic introduces users to the iSCSI and MPIO modules in Windows PowerShell on Server 2012, and discusses how to configure these features using PowerShell.</td>
</tr>
<tr>
<td>The Powers of PowerShell Pipeworks</td>
<td>Presented by: James Brundage          </p>
<p>Ever wanted to make PowerShell easy for others? Or realize that a simple script you have would be a great backbone of a business (if only you could charge for it)? PowerShell Pipeworks is a web platform built in PowerShell that makes is simple to build compelling web applications and software services in a snap. In this session, you will see: &#8211; How to use Pipeworks to store your data to the cloud &#8211; How to create a monitoring dashboard with Pipeworks &#8211; How to build a Facebook application with PowerShell Pipeworks &#8211; How to put a price tag on a cmdlet</td>
</tr>
<tr>
<td>Networking cmdlets</td>
<td>Presented by: Richard Siddaway          </p>
<p>Windows 8/2012 introduces a large number of cmdlets for working with networks and network configurations. This session will introduce those cmdlets and see how you can get the best out of them in your environment. There are a number of interesting quirks associated with these cmdlets that you need to be aware of and they will be demonstrated in the session. Like so much of the functionality in Windows 8/2012 these cmdlets are based on WMI using the CDXML functionality. This will be briefly explained with a look inside one of the networking modules. These cmdlets are only available on Windows 8/2012 but with a bit of WMI you can duplicate the functionality in your environment.</td>
</tr>
<tr>
<td>PowerShell Web Access</td>
<td>Presented by: Richard Siddaway          </p>
<p>PowerShell Web Access is a new feature in Windows Server 2012 that provides a web based PowerShell console. You don&#8217;t need PowerShell on your client to administer remote machines as long as you have PWA. This session will demonstrate how to configure PWA, its strengths and weaknesses &#8211; you might even see PowerShell being accessed from a non-Windows machine! The security implications of PWA will be discussed. PWA will be compared to other ways to access remote machines through PowerShell including PS Remoting and CIM sessions.</td>
</tr>
<tr>
<td>Writing your Hyper-V deployment script in 30 minutes</td>
<td>Presented by: Jeff Wouters          </p>
<p>In this session I&#8217;ll show you just how easy it is to write a simple deployment script for a Hyper-V cluster&#8230; in only 30 minutes!</td>
</tr>
<tr>
<td>BOFH through PowerShell</td>
<td>Presented by: Jeff Wouters          </p>
<p>Ever wondered how you could annoy your users, managers and even your colleagues with PowerShell? Come to this session and let me show you how you can become a BOFH with PowerShell!</td>
</tr>
<tr>
<td>How to avoid the pipeline</td>
<td>Presented by: Jeff Wouters          </p>
<p>The pipeline&#8230; although it is a wonderful concept and very powerful it is also slow. Lots of people pipe everything together and although it may work, you may have some time to get some more coffee before your script is done running. Let me show you how you can avoid the pipeline by utilizing the full potential of cmdlets and their parameters&#8230; and with logical thinking.</td>
</tr>
<tr>
<td>PowerShell one-liners to the max</td>
<td>Presented by: Jeff Wouters          </p>
<p>The readers of my blog know that I simply love one-liners in PowerShell&#8230; Over the years I&#8217;ve learned lots of tricks which allow you to put just about anything in a single line of code. Although it&#8217;s not pretty, it&#8217;s fun to do and wouldn&#8217;t it be cool to make a developer cry just by looking at such a one-liner?</td>
</tr>
<tr>
<td>My learning experience with PowerShell</td>
<td>Presented by: Jeff Wouters          </p>
<p>This will not be a technical session&#8230; Back when PowerShell v1 was introduced the first thing I though was: &quot;I can do a heck of a lot more with VBS!&quot;. Then PowerShell v2 came along and I was sold! A lot of people would have bought books to learn it&#8230; I did not. Instead I started to play around in the prompt. Only after two years I bought my first PowerShell book. In this session I will share with you both the rise and fall of my learning experience of learning PowerShell from the prompt.</td>
</tr>
<tr>
<td>How to sell PowerShell to your customers and colleagues</td>
<td>Presented by: Jeff Wouters          </p>
<p>You:&quot;Let&#8217;s enable PowerShell Remoting!&quot;. Manager:&quot;Why?&quot; You:&quot;So I can manage the entire environment through PowerShell from a single management server?&quot;. Manager:&quot;No!&quot; Does this discussion sound familiar? If that&#8217;s the case, let me share with you the things I&#8217;ve learned which make it easy for you to &#8216;sell&#8217; PowerShell to managers from a practical point of view.</td>
</tr>
<tr>
<td>PSDD &#8211; PowerShell Deduplication</td>
<td>Presented by: Jeff Wouters          </p>
<p>With Windows Server 2012 there comes a new feature named Data Deduplication. How can you configure and manage this through PowerShell? But more importantly, how can you do more with it than the native PowerShell module offers you? This and more will be shown in a very fast-paced session&#8230; so faster your seat belts Dorothy &#8217;cause Kansas is going bye-bye!</td>
</tr>
<tr>
<td>Unit Testing PowerShell</td>
<td>Presented by: Matt Wrock          </p>
<p>This talk will provide a walk through of Unit Testing PowerShell scripts. The OSS project Pester (<a href="https://github.com/pester/Pester" rel="nofollow">https://github.com/pester/Pester</a>) will be used to illustrate popular unit testing patterns such as ArrangeActAssert and Mocking to provide testability to PowerShell. There will be discussion on why and when to use unit testing in PowerShell as well.</td>
</tr>
<tr>
<td>Bootstrapping a new machine in an hour with Chocolatey</td>
<td>Presented by: Matt Wrock          </p>
<p>Sick of losing a day&#8217;s productivity to setting up a new Machine? Do you find it tedious keeping track of your favorite tools, software settings and windows settings? Do you find using VMs for this task to be awkward and fragile? Learn how to use Chocolatey (<a href="http://chocolatey.org" rel="nofollow">http://chocolatey.org</a>) and other PowerShell tricks to bring this entire process into a single script that will run on its own in just about an hour (give or take depending on installs). You can even have several bootstrapping configurations depending on your scenarios. One for work, another light weight one for Remoting on to a new serer and another for personal machines.</td>
</tr>
<tr>
<td>Inside PowerShell: Abstract Syntax Tree Manipulation</td>
<td>Presented by: Adam Driscoll          </p>
<p>In this session we will take apart PowerShell. This session will highlight the new abstract syntax tree and node visitor API that is exposed in v3. An instrumentation profiler will be used as an example of how to traverse and manipulate PowerShell scripts from within the engine.</td>
</tr>
<tr>
<td>.NET Reverse Engineering with PowerShell</td>
<td>Presented by: Adam Driscoll          </p>
<p>In this session we will look at how to utilize ILSpy to decompile .NET assemblies and quickly access internal aspects of them using PowerShell. We will see how to easily expose private members for access and manipulation within scripts. Adam Driscoll</td>
</tr>
<tr>
<td>FIM 2010 DevOps with PowerShell</td>
<td>Presented by: Craig Martin          </p>
<p>Forefront Identity Manager 2010 (FIM) is a complex product that benefits greatly in a DevOps world facilitated by PowerShell. Come learn how PowerShell improves FIM deployments, highlighting the PowerShell lessons learned from a non-PowerShell MVP, and arguably a non-developer. Topics will include: FIM Test Automation with PowerShell FIM Deployment Automation with PowerShell FIM Extensibility with PowerShell FIM Workflow with PowerShell FIM Diagnostics with PowerShell Craig Martin is a FIM MVP with a passion for improving integration and automation quality with PowerShell.</td>
</tr>
<tr>
<td>PowerShell as a SQL Reporting Services DataSource</td>
<td>Presented by: Craig Martin          </p>
<p>PowerShell turns out to be an excellent tool for collecting data about just anything. This session shows you how to get objects from PowerShell into SSRS reports quickly and simply, and all without using a data warehouse. This session will explain and demonstrate the use of a CodePlex project (psdpe.codeplex.com) to marry PowerShell and SSRS to provide some of the following benefits:           </p>
<p>SSRS Report Designers &#8211; Produce Reports in a Simple Design Experience using Objects from a PowerShell Pipeline SSRS Data           </p>
<p>Driven Subscriptions &#8211; Automatically distribute custom reports to users with data that pertains only to them           </p>
<p>SSRS Caching &#8211; Cache reports in SSRS for later viewing so that your script does not need to reproduce the data           </p>
<p>SSRS Data Processing Extensions &#8211; use SSRS to report on PowerShell objects (the core of the topic)</td>
</tr>
<tr>
<td>Providing APIs Using Management OData IIS Extension</td>
<td>Presented by: Craig Martin          </p>
<p>The API Economy is all the rage, at least when we&#8217;re not hearing about how cool PowerShell is. The idea is a replacement for ODBC, LDAP, or any other API, and preference by application developers to use OData and RESTful web services. Should we all get busy writing APIs then? Turns out PowerShell users already have, by writing scripts and modules. This new feature in PowerShell exposes the investment in commands to developers that may not care about about PowerShell, but instead demand to consume an API based on OData. Got a command for getting User objects? well now you can share that as an URL such as <a href="http://myServer/User" rel="nofollow">http://myServer/User</a> (gets all the user objects) or <a href="http://myServer/User(&#8216;Craig&#038;#8217" rel="nofollow">http://myServer/User(&#8216;Craig&#038;#8217</a>;)/Manager (gets Craig&#8217;s manager). The magic here is that the developer is reaping all the rewards of your hard PowerShell work, but that developer never needs to know that the URLs are actually powered by, well PowerShell. This talk will share the experience of an IT Pro with scripting experience, learning how to create APIs using the new Management OData IIS Extension.</td>
</tr>
<tr>
<td>Creating Reports with PowerShell that Managers will Read</td>
<td>Presented by: Jeffery Hicks          </p>
<p>We all know there is a wealth of information that you can uncover with PowerShell. Sometimes, getting this into a format that someone can read can be a challenge. In this session I&#8217;ll explain a number of techniques you can use for creating dazzling reports from PowerShell. From simple text files, to snazzy HTML reports to full-on Microsoft Word documents.</td>
</tr>
<tr>
<td>PowerShell and Microsoft Excel: A Love Story</td>
<td>Presented by: Jeffery Hicks          </p>
<p>After PowerShell, Microsoft Excel is probably an IT Pro&#8217;s most often used management tool. We store data in spreadsheets. We use spreadsheets as sources for our scripts and functions. Or maybe you would like to do these things but don&#8217;t know where to start. In this session I&#8217;ll explain how to integrate Excel into your PowerShell experience. From pulling data from simple spreadsheets to creating stunning reports complete with tables, charts and graphs.</td>
</tr>
<tr>
<td>PowerShell and Windows Server 2012 Active Directory Tricks</td>
<td>Presented by: Jeffery Hicks          </p>
<p>IT Pro&#8217;s have been able to manage Active Directory with PowerShell for while. But that was only the beginning. Windows Server 2012 offers a tantalizing array of Active Directory management options. In this session I will offer a number of tips and tricks that take advantage of these new features.</td>
</tr>
<tr>
<td>Zip It! Adding Compression to your PowerShell Scripting</td>
<td>Presented by: Jeffery Hicks          </p>
<p>PowerShell is a natural tool for file system management. IT Pros copy, delete and move files all the time. Even though storage is cheap and plentiful these days, wouldn&#8217;t it be nice to add some compression techniques to your PowerShell scripts and functions? This session will demonstrate a number of ways you can add compression to your file management tasks. From simple file and folder compression to creating complete archives. We&#8217;ll look at using the shell, 3rd party tools and WMI.</td>
</tr>
<tr>
<td>PowerShell v3 ISE Snippets</td>
<td>Presented by: Jeffery Hicks          </p>
<p>Without question the ISE in PowerShell v3 is a vast and welcome improvement over v2. One of the best features, which hasn&#8217;t gotten much attention, is the use of snippets. These little code gems can make writing a new script or function a breeze and even fun. But you can also add your own snippets. In this session I&#8217;ll explain how the snippet system works, demonstrate how you can add your own snippets and manage your snippet library, all from the ISE.</td>
</tr>
<tr>
<td>Adding a GUI to PowerShell without WinForms</td>
<td>Presented by: Jeffery Hicks          </p>
<p>Graphical PowerShell scripts seem all the rage these days. But most often that means using Windows Forms which can be very tedious to work with. But that is not the only game in town. Depending on your requirements there are a number of techniques you can use to add graphical elements to your PowerShell scripts. This session will explore how to create message boxes, input forms and more, all without a single Windows Form. If you are just getting started with writing PowerShell scripts, you&#8217;ll find these techniques simple to use, plus there will be plenty of sample code for all!</td>
</tr>
<tr>
<td>Building a Quick and Dirty PowerShell Backup System</td>
<td>Presented by: Jeffery Hicks          </p>
<p>It is a safe bet to say that most IT Pros have a backup solution in place for their organization. But sometimes you need something a bit more flexible or for special situations. Perhaps you have a lab or home test environment that needs protection. In this session, I will walk you through how to use PowerShell to set up a quick and dirty backup solution. This isn&#8217;t necessarily a replacement for a full-fledged backup product, but it just might help fill the gaps.</td>
</tr>
<tr>
<td>File &amp; Folder Provisioning with Win8, Win2012 and PowerShell</td>
<td>Presented by: Jeffery Hicks          </p>
<p>If you manage file servers and aren&#8217;t using PowerShell, you are working much too hard. Or if you are using PowerShell v2 you are still working pretty hard. Fortunately PowerShell v3 along with Windows 8 and Windows Server 2012 offer a much better solution. This session will demonstrate how to provision and manage folders, files and file shares using PowerShell from a Windows 8 client. With a little up-front work, you &#8216;ll be able to create provisioning scripts to deploy a new file share in seconds.</td>
</tr>
<tr>
<td>Manage DFS the PowerShell Way</td>
<td>Presented by: Jeffery Hicks          </p>
<p>Most of the time, managing a distributed file system (DFS) infrastructure is pretty simple and graphical tools are fine. But all the cool kids will use PowerShell. Windows 8 and Windows Server 2012 offer a better way for managing DFS. From creating new folders to getting a handle on what it looks like now, to troubleshooting access problems, this session will demonstrate how to have it all from a PowerShell prompt.</td>
</tr>
<tr>
<td>Write modules, not scripts</td>
<td>Presented by: Ed Wilson, Scripting Guy, Microsoft          </p>
<p>Learn how to get the most from Windows PowerShell by learning a simple five-step method to transform your Windows PowerShell code into a highly reusable module. This presentation is a live demo that begins with a single line of Windows PowerShell code, transforms the code into a function, adds comment based help to the function, and converts it into a module. Next, the installation and discovery of Windows PowerShell modules is covered, as is updating the module and creating a Windows PowerShell module manifest. Ed Wilson</td>
</tr>
<tr>
<td>What I learned by grading 2000 PowerShell Scripts in the 2012 Scripting Games</td>
<td>Presented by: Ed Wilson, Scripting Guy, Microsoft          </p>
<p>The 2012 Scripting Games attracted both experienced and novice scripters from more than 100 countries around the world. In grading the 2000 submitted scripts, I noticed a common theme emerged. Some of the things that were consistently confused by both beginners and advanced scripters include the following: failure to return objects from functions, not creating reusable functions, spending too much duplicating capabilities of native PowerShell, using meaningless comments, omission of error handling, and an overreliance on Write-Host. In this session, I will address each of these areas of concern and show both good and bad examples from the games. A thorough discussion of each of these topics rounds out the presentation. This presentation uses live demos to illustrate the techniques that are discussed. Ed Wilson</td>
</tr>
<tr>
<td>Use PowerShell to manage the remote Windows 8 workstation</td>
<td>Presented by: Ed Wilson, Scripting Guy, Microsoft          </p>
<p>There are three different ways to manage a remote Windows 8 workstation. The first is to use WMI remoting, the second is to use the computername cmdlets and the third is to use WinRm and Windows PowerShell native remoting. Each approach has advantages and disadvantages for the network administrator. In this session, I will examine each approach, and provide a checklist of criteria to aid the enterprise network administrator in choosing the appropriate technology for a variety of real world scenarios. This presentation combines live demos and interactive discussion to heighten learning.</td>
</tr>
<tr>
<td>Use PowerShell to troubleshoot the reliability issues</td>
<td>Presented by: Ed Wilson, Scripting Guy, Microsoft          </p>
<p>Using the reliability provider on Windows 8 workstation or on a Windows Server 2012 machine provides a plethora of information about the health of your system. Unfortunately, the reliability provider is not enabled by default on Windows Server 2012, and attempts to enable it do not always work. In this session, I discuss the issues surrounding the reliability provider, illustrate the type of information available, and hint at how to incorporate its use into a normal monitoring program. Live demos using easily created Windows PowerShell scripts round out the discussion.</td>
</tr>
<tr>
<td>PoshMon: PowerShell does performance counters</td>
<td>Presented by: Ed Wilson, Scripting Guy, Microsoft          </p>
<p>One of the cool features on Windows PowerShell 3.0 is easy consumption of WMI performance counters into Windows PowerShell. In the past, leveraging these performance counters meant writing long lines of cryptic code, calling refresher objects, and dealing with weird timestamp issues. But no more! Using a simple cmdlet, Windows PowerShell throws open the door to the treasure trove of performance counter information. But where does the oversubscribed IT pro begin? A question on my Windows NT 3.51 MCSE exam stated there are four areas for performance monitoring: disk, memory, network, and CPU. These four resources have not changed much, regardless of the application these basic areas of investigation still ring true. In this session, I talk about discovering performance counters, using performance counters, and storing information gathered from performance counters. The talk will be strengthened by live demos at each stage of the presentation.</td>
</tr>
<tr>
<td>Why IT Pros must learn Windows PowerShell Now</td>
<td>Presented by: Ed Wilson, Scripting Guy, Microsoft          </p>
<p>”IT Pros don’t script.” I have heard this mantra for more than a decade &#8211; ever since I wrote my best selling Windows Scripting Self-Paced Learning Guide for Microsoft Press. But Windows PowerShell is more than just a new scripting language &#8211; in fact, some PowerShell MVPs have stated that Windows PowerShell is not a scripting language at all. Also, and more to the point, Windows PowerShell is not even all that new, with Windows 8, Windows PowerShell enters the 3rd version &#8211; it is therefore established technology. Simply put, Windows PowerShell is the future automation story in the Microsoft world, but it is also the present, and the IT Pro who learns how to use this tool will immediately become a more productive, and consequently more valuable employee. In this session I will discuss the extent to which Windows PowerShell permeates the Microsoft eco system, and offer real world scenarios that illustrate both the power, and the simplicity of this management tool.</td>
</tr>
<tr>
<td>CDXML</td>
<td>Presented by: Richard Siddaway          </p>
<p>Windows 2012 brings 2500 cmdlets &#8211; over 60% of them are CDXML. That&#8217;s a WMI class wrapped in XML and published as a module. In this session you will discover how this technology works and more importantly how to easily create your own cmdlets to simplify the use of WMI</td>
</tr>
<tr>
<td>New Active Directory PowerShell cmdlets</td>
<td>Presented by: Richard Siddaway          </p>
<p>PowerShell for Active Directory gets a major boost in Windows 2012. The AD administrative center now exposes the PowerShell it uses and we get cmdlets for working the topology. In this session you&#8217;ll learn about AD admin center and how to get the best out if the new AD cmdlets with a look at some tips and tricks for working with AD in general. You&#8217;ll also discover that the AD provider does a lot more than you think it can.</td>
</tr>
<tr>
<td>CIM</td>
<td>Presented by: Richard Siddaway          </p>
<p>WMI is dead! Long live CIM! PowerShell v3 introduces the CIM cmdlets. Are they a replacement for the WMI cmdlets? Are they easier to use? In this session we&#8217;ll take them apart and see what makes them tick. A compare and contrast with the WMI cmdlets will show you when to use one or the other and how to get the best out of both.</td>
</tr>
<tr>
<td>Scheduled tasks</td>
<td>Presented by: Richard Siddaway          </p>
<p>You&#8217;ve used the back ground jobs functionality in PowerShell v2. In PowerShell v3 you get the chance to work with the task scheduler. A set of cmdlets straight out of the PowerShell box for working with scheduled tasks. Automation rises to a new level when you can tell the job to run in the middle of the night and you don&#8217;t need to be there. Learn how to do this and more in this session</td>
</tr>
<tr>
<td>Integrated reports</td>
<td>Presented by: Richard Siddaway          </p>
<p>Managers always want reports. Can&#8217;t be avoided but the task can be made easier. In this session we&#8217;ll look at creating some reports based on real world examples: 1. Get the size of your Exchange databases and free disk space. Store the results in SQL Server. Create reports that show current situation and trends over time. 2. All administrators hate documenting their servers. Learn how to create a report that writes itself &#8211; literally. Keep your server documentation up to date with no effort on your part.</td>
</tr>
<tr>
<td>PowerShell events</td>
<td>Presented by: Richard Siddaway          </p>
<p>The PowerShell event engine enables you to work with .NET; WMI and PowerShell engine events. What are these and how do they work? What can I do with them? Want to stop a process that shouldn&#8217;t be running? Want to start a process that&#8217;s stopped? That&#8217;s what this session will show you with PowerShell events.</td>
</tr>
<tr>
<td>WSMAN cmdlets</td>
<td>Presented by: Richard Siddaway          </p>
<p>PowerShell remoting uses the WS-Management protocols as transport between the local and remote machines. This is implemented as the WinRm service. We can utilise the WS-Management layer (WSMAN) directly to access WMI providers. This session opens up one of the least used areas of PowerShell v2. We will see how to use the WSMAN cmdlets:           <br />&#8211; Connect-WSMan           <br />&#8211; Disconnect-WSMan           <br />&#8211; Get-WSManInstance           <br />&#8211; Invoke-WSManAction           <br />&#8211; New-WSManInstance           <br />&#8211; New-WSManSessionOption           <br />&#8211; Remove-WSManInstance           <br />&#8211; Set-WSManInstance           <br />&#8211; Test-WSMan           </p>
<p>With these we can access a remote machine in a similar manner to using the WMI cmdlets or PowerShell remoting. The advantage over WMI cmdlets is that we don’t need DCOM. These cmdlets aren’t straight forward to use but there is an untapped administration opportunity that potentially also enables us to administer remote machines that aren’t Windows based. The session will be heavy on code and short on slides as this is a subject best demonstrated.</td>
</tr>
<tr>
<td>PowerShell jobs</td>
<td>Presented by: Richard Siddaway          </p>
<p>PowerShell normally runs tasks in the fore ground. This ties up the PowerShell prompt and stops you doing other work. We could just open lots of PowerShell prompts but a better way is to use PowerShell jobs. PowerShell jobs run in the background. You can have multiple jobs running simultaneously and still work at the prompt. Better still the jobs? results are saved until you are ready to use them. PowerShell jobs are an under used item in the administrators tool box. This session will show what they can do and how we can make the most of them. Lots of code and minimal slides make the session very interactive.</td>
</tr>
<tr>
<td>PowerShell and SQL Server</td>
<td>Presented by: Richard Siddaway          </p>
<p>Storing data in SQL server is not a new idea. Accessing SQL Server using PowerShell opens up this data store for us. This session will show how to use SQL Server to store your data; how you can read, update and if necessary delete the data. Simple PowerShell routines that open a lot of power.</td>
</tr>
<tr>
<td>DNS Apocalypse (Notes From The Field)</td>
<td>Presented by: Ashley McGlone, Microsoft PFE          </p>
<p>Hear Microsoft PFE Ashley McGlone explain how he got out of this one. Global 24&#215;7 mission-critical customer had a single text file DNS primary zone hosting all 10 Active Directory domain zones in the forest. Needed to switch to AD-integrated DNS, split out all zones into separate domains, and delegate DNS administration. Then they explained there are no change control maintenance windows, and it had to be done with zero down time. He did it. Come find out how PowerShell saved this customer.</td>
</tr>
<tr>
<td>AD Migration Nightmare (Notes From The Field)</td>
<td>Presented by: Ashley McGlone, Microsoft PFE          </p>
<p>I got a panic call from the customer. Half way through the AD domain migration their third party migration tool database crashed and was unrecoverable. They lost all SID history conversion tracking. The vendor doing the migration was unsure how to proceed. Hear Microsoft PFE Ashley McGlone explain how PowerShell saved the customer. Do you know where your SID history is hiding?</td>
</tr>
<tr>
<td>Mass File Server ACL Migration (Notes From The Field)</td>
<td>Presented by: Ashley McGlone, Microsoft PFE          </p>
<p>I had a customer who acquires 13 new companies each year. They have more than 35 domains in the forest and another 80 trusts. With over 170,000 instances of SID history in the forest they had no idea where to begin fixing SID history on file shares. They needed a way to migrate ACLs on their file servers, to report on the impact, and to manage it effectively in the future. Where would you begin? Hear Microsoft PFE Ashley McGlone explain how PowerShell saved the customer.</td>
</tr>
<tr>
<td>Automated Server Setup with Carbon</td>
<td>Presented by: Aaron Jensen          </p>
<p>Aren&#8217;t manual setup checklists the greatest? How about virtual machine images that have been cloned for so long nobody knows where they come from? Nobody likes spending hours doing the same things over and over again, or reverse engineering what configuration changes someone made to a server before walking out the door. Come learn about Carbon (<a href="http://get-carbon.org" rel="nofollow">http://get-carbon.org</a>), the DevOps module I created that enables us to spin up dozens of servers in just a few hours. I&#8217;ll give an overview of all the functionality available in Carbon, then dive deep into some of the things I&#8217;ve learned and discovered during development.</td>
</tr>
<tr>
<td>Connecting ERP to AD with PowerShell &#8211; A Two-way Street</td>
<td>Presented by: Steve Moss          </p>
<p>When we implemented Jenzabar CX as our college&#8217;s ERP solution, it became our authoritative data source and the driver for things like Active Directory account creation and maintenance. Initially, we used a series of VBScripts to handle the integration with AD. When I was tasked with fixing and maintaining that code, two things because clear. First, The existing code was virtually unmaintainable. Second, PowerShell made it relatively easy to create a solution that was modular, flexible and easily maintained. I&#8217;ll look at how we implemented the communication from CX to AD and from AD to CX using /nSoftware&#8217;s PowerShell Server and ODBC. I&#8217;ll also look at the way we decomposed the creation and maintenance various types of AD accounts into discrete tasks and used that to create a modular library of functions that allows us to use a building block approach to not only implementing the automated processes that we needed, but also create an interactive set of tools for our Service Desk people to view and modify AD accounts in a controlled way.</td>
</tr>
<tr>
<td>Deploy and manage certificates for your IIS servers using PS</td>
<td>Presented by: Jason Helmick          </p>
<p>Need to deploy and manage certificates for your websites? When was the last time you checked to see if your website certificates were about to expire? In this session with renowned PowerShell and IIS expert Jason Helmick, you will deploy, manage, revoke and remove certificates to multiple remote IIS servers running Windows Server Core. Discover and alert when certificates are about to expire and handle creating and changing SSLBindings in IIS.</td>
</tr>
<tr>
<td>Automatically Provisioning an IIS 8 Web Farm</td>
<td>Presented by: Jason Helmick          </p>
<p>Increase productivity while increasing time off using PowerShell! In this session with renowned PowerShell and IIS expert Jason Helmick, you will learn to provision a web farm of servers, sites and applications. Quickly adapt your web farm to the needs of the business with rapid scale load balancing. You will leave with the slides, demonstration steps and Jason’s tips to rapidly provision IIS. Don’t lose another weekend to web farm deployment and management!</td>
</tr>
<tr>
<td>Securely Manage your network anytime on any Device with PSWA</td>
<td>Presented by: Jason Helmick          </p>
<p>Are you “on-call” and worried to leave the office? Not anymore! In this session with renowned PowerShell and IIS expert Jason Helmick, you will learn to implement and securely configure Windows Server 8 PowerShell Web Access. Take control with any device and cmdlets at your fingertips without the overhead of installing additional administration tools. You will leave with the slides, demonstration steps and Jason’s tips to securely deploy and utilize PowerShell Web Access.</td>
</tr>
<tr>
<td>System Center 2012 Configuration Manager and PowerShell</td>
<td>Presented by: Greg Ramsey          </p>
<p>ConfigMgr and PowerShell &#8211; we have finally arrived! ConfigMgr and WMI have been a match made in heaven for the since at least SMS 2.0, so we&#8217;ve always been able to use PowerShell with ConfigMgr. But finally, we have real cmdlets that will allow you to fully automate the administrative experience with ConfigMgr. Are you ready to take your Configuration Manager Admin experience to the next level? Greg shows you how to leverage PowerShell with Microsoft System Center 2012 Configuration Manager SP1. Manage Deployments, Collections, Applications, Packages, Programs, and even Software Updates!</td>
</tr>
<tr>
<td>Working with script blocks</td>
<td>Presented by: Rob Campbell          </p>
<p>Creating script blocks for remote jobs and filters using local variables. Using script blocks to: create collections simplify code maintenance get user input pipeline output from foreach loops</td>
</tr>
<tr>
<td>Metaprogramming PowerShell</td>
<td>Presented by: Ian Davis          </p>
<p>PowerShell can be a fun and crazy language to use, but we can take it a step further with metaprogramming. By taking advantage of PowerShell&#8217;s flexible language features including dynamic scoping, modules, deferred evaluation, and ScriptBlocks, we can create simple and powerful applications applications leveraging metaprogramming idioms.</td>
</tr>
<tr>
<td>Chewie: PowerShell DSL for Managing NuGet Dependencies</td>
<td>Presented by: Ian Davis          </p>
<p>Have you ever tried to figure out which dependencies your application has? Tired of messing with NuGet repository.config and packages.config files? Are you fed up with having to load Visual Studio and enabling package restore by hand? Ruby has had a solution for a long time with gems and bundler. By leveraging the features of PowerShell, .NET developers can have their own DSL for managing dependencies efficiently with Chewie.</td>
</tr>
<tr>
<td>Internal DSLs in PowerShell</td>
<td>Presented by: Ian Davis          </p>
<p>To write a DSL or to not write a DSL, that is an important question. PowerShell gives us great power to create DSLs, but it doesn&#8217;t mean that we should create one. This talk will cover when to create a DSL along with techniques specific to PowerShell for creating them (deferred evaluation, first class objects, dynamic scoping, semantic models, dependency graphs, etc). Some existing PowerShell DSLs will be analyzed including as psake, pester, and chewie.</td>
</tr>
<tr>
<td>PowerShell: Beyond Scripting</td>
<td>Presented by: Ian Davis          </p>
<p>PowerShell is missing a few language features, but that doesn&#8217;t mean we can pretend. By changing our perspective slightly, we can apply parasitic and prototypal inheritance, open classes, monkey patching, and more. PowerShell was designed for solving problems for system administrators, but it isn&#8217;t limited to that domain.</td>
</tr>
<tr>
<td>Automated Builds With PowerShell</td>
<td>Presented by: Ian Davis          </p>
<p>Automated builds are a critical part of application lifecycle management. PowerShell is very well suited for making this process easier. We have gone full circle with scripting builds and by leveraging PowerShell on the command line and building DSLs, our builds can be more robust and intuitive than ever.</td>
</tr>
<tr>
<td>Troubleshooting SQL Server with PowerShell</td>
<td>Presented by: Laerte Junior          </p>
<p>It is normal for us to have to face poorly performing queries or even complete failure in our SQL server environments. This can happen for a variety of reasons including poor Database Designs, hardware failure, improperly-configured systems and OS Updates applied without testing. As Database Administrators, we need to take precaution to minimize the impact of these problems when they occur, and so we need the tools and methodology required to identify and solve issues quickly. In this Session we will use PowerShell to explore some common troubleshooting techniques used in our day-to-day work as DBA. This will include a variety of such activities including gathering Blocked SQL Server Process, Reading &amp; filtering the SQL Error Log even if the Instance is offline, Listing SQL Server and Database information and Register Temporary and Specific Events in the SQL Server WMI. The approach will be using PowerShell techniques that allow us to scale the code for multiple servers and run the data collection in asynchronous mode.</td>
</tr>
<tr>
<td>PowerShell in Windows 8/2012</td>
<td>Presented by: Richard Siddaway          </p>
<p>PowerShell has 2500 cmdlets available in Windows 2012 This session will give you a quick overview of what&#8217;s available and more importantly what you can do with it. There is so much functionality available that if you don&#8217;t know its there you can miss it. A quick overview of what&#8217;s available and lots of demos</td>
</tr>
<tr>
<td>PowerShell and WMI</td>
<td>Presented by: Richard Siddaway          </p>
<p>With all the new WMI based functionality in PowerShell v3 its easy to forget the old WMI cmdlets. They are still there, still have their place and can teach us a few things about administering our systems. Some of the new PowerShell v3 functionality makes them easier to use &#8211; learn how Some of the WMI gotchas still remain &#8211; see what they are, how you overcome them and what effect they have on the new CIM cmdlets</td>
</tr>
<tr>
<td>Building Enterprise Modules</td>
<td>Presented by: Adam Driscoll          </p>
<p>In this session we will look at how to author enterprise-level modules using a combination of both PowerShell and C#. We&#8217;ll examine the common pitfalls and considerations that should be made when thinking about enterprise PowerShell support. We will look at how to build modules that are easy to test and maintain.</td>
</tr>
<tr>
<td>Tame Your Event Logs with Windows PowerShell and WinRM</td>
<td>Presented by: Aleksandar Nikolic          </p>
<p>In this session you will learn how to manage your Event Logs with PowerShell cmdlets, leverage the power of Event Forwarding to centralize events to a central server and trigger execution of PowerShell scripts from a specific Windows event.</td>
</tr>
<tr>
<td>Automate Server Manager in Windows Server 2012</td>
<td>Presented by: Aleksandar Nikolic          </p>
<p>Server Manager in Windows Server 2012 has evolved to include many new multi-server management features. It uses Windows PowerShell behind the scenes, but can we use Windows PowerShell to automate customization of Server Manager? Yes, we can. Join us for this session to learn how.</td>
</tr>
<tr>
<td>How to Delegate Administration and Customize PowerShell Session Configuration</td>
<td>Presented by: Aleksandar Nikolic          </p>
<p>In this session you will learn how to customize PowerShell session configuration, and then use it to assign specific administrative tasks to the appropriate users and groups without changing the membership of local Administrators group. By using new Windows PowerShell and Windows Remote Management 3.0 capabilities we will enable dynamic creation of customized automation environments that users can access through the Windows PowerShell Web Access.</td>
</tr>
<tr>
<td>Configuring Your Windows PowerShell Workflow Environment</td>
<td>Presented by: Aleksandar Nikolic          </p>
<p>In this session you will learn how to set up your environment to run Windows PowerShell workflows. We will discuss different workflow configurations, how to prepare computers to run workflows, what is workflow session configuration and how to customize it. At the end, you will learn how to properly run your Windows PowerShell workflows.</td>
</tr>
<tr>
<td>Build Your Demo Environment or a Test Lab with Windows PowerShell</td>
<td>Presented by: Aleksandar Nikolic          </p>
<p>With Windows PowerShell 3.0 and the new Client Hyper-V available in Windows 8, it is so easy, and fun, to automate creation of your demo environment or a test lab infrastructure. You can easily convert ISO files to VHDs, deploy your VMs and configure networking and storage. Join us for this demo-heavy session to see all the steps.</td>
</tr>
<tr>
<td>Is Server Core without Windows PowerShell still remotely manageable?</td>
<td>Presented by: Aleksandar Nikolic          </p>
<p>In this, some might say blasphemous, session you will learn that uninstallation of Windows PowerShell doesn&#8217;t leave your Windows Server 2012 Server Core remotely unmanageable from the command line. We can still use Windows PowerShell on a client computer to access system CIM modules on a Server Core. Even better, we can increase its manageability by deploying our own CIM modules. Join us to see the power of CIM sessions and CIM modules.</td>
</tr>
<tr>
<td>Scripting for Scale in the Virtual Datacenter</td>
<td>Presented by: Josh Atwell and Jade Lester          </p>
<p>The virtual datacenter is growing at a high rate. The increasing size and complexities can make scripting and reporting take too long to complete in a reasonable time period. Attendees will learn a variety of techniques and strategies you can use to speed up your scripting and reporting with PowerCLI and UCSPowerTool from two members of Cisco internal IT.</td>
</tr>
<tr>
<td>PowerCLI for the PowerShell Inclined</td>
<td>Presented by: Josh Atwell          </p>
<p>In this session I highlight many of the built in functionalities of PowerCLI that are extremely powerful but often underutilized. These cmdlets will increase your flexibility with PowerCLI and help increase efficiency.</td>
</tr>
<tr>
<td>Managing your Cisco UCS with UCSPowerTool</td>
<td>Presented by: Josh Atwell and Jade Lester          </p>
<p>Attendees will get a crash course in the unique and powerful cmdlets of the UCSPowerTool, PowerShell for the Cisco Unified Compute System.</td>
</tr>
</tbody>
</table>
<p>Thank you for helping us create this great conference!</p>
<p>Kirk out.</p>
<div style="margin:0;display:inline;float:none;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2c3dfb9e-7449-4b72-873e-a5a2d1780e78" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/PowerShell" rel="tag">PowerShell</a>,<a href="http://technorati.com/tags/PoSh" rel="tag">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic" rel="tag">Poshoholic</a>,<a href="http://technorati.com/tags/PowerShell+Summit" rel="tag">PowerShell Summit</a>,<a href="http://technorati.com/tags/PowerShell.org" rel="tag">PowerShell.org</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2012/10/15/voting-for-the-2013-powershell-summit-sessions-is-now-open/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>

		<media:content url="https://poshoholic.com/wp-content/uploads/2012/10/wlemoticon-smile.png" medium="image">
			<media:title type="html">Smile</media:title>
		</media:content>
	</item>
		<item>
		<title>PowerShell Summit North America 2013 Call for Content</title>
		<link>https://poshoholic.com/2012/09/13/powershell-summit-north-america-2013-call-for-content/</link>
					<comments>https://poshoholic.com/2012/09/13/powershell-summit-north-america-2013-call-for-content/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Thu, 13 Sep 2012 18:04:53 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PowerShell Summit]]></category>
		<category><![CDATA[PowerShell.org]]></category>
		<category><![CDATA[Poshoholic]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=812</guid>

					<description><![CDATA[In case you haven’t heard already, there is a great opportunity to learn a lot more about PowerShell coming up next year.&#160; It’s the PowerShell Summit North America 2013 conference, and it is held on Microsoft campus in Redmond, WA from April 22 to 24, 2013.&#160; This conference is run by the PowerShell.org community, and&#8230; <a class="more-link" href="https://poshoholic.com/2012/09/13/powershell-summit-north-america-2013-call-for-content/">Continue reading <span class="screen-reader-text">PowerShell Summit North America 2013 Call for&#160;Content</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>In case you haven’t heard already, there is a great opportunity to learn a lot more about PowerShell coming up next year.&#160; It’s the PowerShell Summit North America 2013 conference, and it is held on Microsoft campus in Redmond, WA from April 22 to 24, 2013.&#160; This conference is run by the PowerShell.org community, and it will present a ton of deep technical content on anything to do with PowerShell.&#160; What content will be covered, you ask?&#160; Well, that’s up to you.</p>
<p>We are now accepting content proposals from anyone who wants to present at this conference.&#160; All you need to do to submit your session proposals is to add a new topic to the <a href="http://powershell.org/discuss/viewforum.php?f=22" target="_blank">Session Submissions forum on PowerShell.org</a> for each session you want to present.</p>
<h4>Who can present?</h4>
<p>Anyone who has something to share with other PowerShell experts and enthusiasts that will help them learn more about PowerShell can propose a topic they would like to present at this conference.&#160; There will be a survey shared with the community that allows them to vote for the sessions they want to see, so ultimately the community will decide who can present at this conference.&#160; Note that when reviewing the community results, the conference organizers reserve the right to make some modifications to the sessions that are selected to balance the topics that are discussed and to be able to better accommodate speakers who are offering to present multiple sessions.</p>
<h4>What topics will be discussed?</h4>
<p>There will be around 100 PowerShell experts and enthusiasts at this conference, including some PowerShell MVPs, some non-PowerShell MVPs, and some members of the PowerShell team.</p>
<p>At a conference like this they will be looking for advanced sessions that show them deep technical content on various aspects of PowerShell as well as real-world practical applications of PowerShell.&#160; They’ll likely want to learn more about workflow, remoting, CIM, and many other technologies used by PowerShell.&#160; They’ll also likely want to learn about how PowerShell is used in practice with PowerShell extensions like PowerCLI to manage vSphere deployments at Scale, or how PowerShell is being used with multiple technologies (SharePoint, System Center Orchestrator, Exchange, NetApp, Active Directory, etc.) to deal with the real-world management challenges that exist in enterprise organizations.&#160; These are just some examples of the topics that might be discussed in sessions at this conference.&#160; It is important to note that no presentations will include any NDA information.&#160; As mentioned, topics will be voted on by the community and then those results will be reviewed by conference organizers to come up with the final list of topics that will be presented at the conference.</p>
<p>Please keep in mind that there will be two tracks for this event: one will have the content with the deepest technical depth, and another will have real world and more intermediate to advanced level content.&#160; With two tracks, you really shouldn’t be shy about submitting sessions if you think you might have something to add.&#160; Chances are, if you’ve been using PowerShell for a while and if you continue to use it very regularly, you probably have knowledge and experience that you can share with others.&#160; Don’t worry about which track your session will ultimately fall in.&#160; The conference organizers will figure those details out as part of their agenda planning.</p>
<h4></h4>
<h4>Where will the conference be held?</h4>
<p>The conference will be held on Microsoft campus in Redmond in buildings 40 and 41 from April 22 to 24th, 2013. There may be additional activities surrounding the conference, but the core sessions will be April 22, 23 and 24.</p>
<h4>When can I submit a proposal?</h4>
<p>You can submit a proposal now.&#160; Simply post your proposal as a new topic on the <a href="http://powershell.org/discuss/viewforum.php?f=22" target="_blank">Session Submissions forum on PowerShell.org</a> for any sessions that you want to present.&#160; Session proposals will be accepted on that forum until October 14, 2012 at midnight PST (take note of that date!).&#160; Once that deadline is met, on October 15, 2012 we will publish a list of all proposals with a voting system that will allow community members to vote for their favorite sessions.&#160; Votes will be accepted over a 2 week period, and the week of October 29th the conference organizers will review the votes and sessions and put together the list of accepted sessions, contact speakers for confirmation, etc.</p>
<p>We strongly encourage you to submit multiple session proposals so that you increase your chances of having a session accepted.&#160; Note that you can submit a proposal even if a related session has already been proposed by someone else.&#160; In fact, if you want to present multiple sessions, I would encourage you to submit the sessions that you want to present, without holding back if a similar session is already proposed.&#160; There are advantages to presenting multiple sessions (see below), and the community will indicate what they want to see in the end anyway.</p>
<p>If you will be attending the conference whether you have a session proposal accepted or not, you should buy your conference ticket as soon as possible to take advantage of the early bird pricing.&#160; If you can only attend this conference if you have enough proposals accepted to cover the bulk of your expenses (see below for details on the benefits of being a presenter), you should submit your sessions now regardless and once the session review process is completed, conference organizers will contact you to make sure you are able to commit to attending and presenting at the conference.&#160; You can also fire me a note if you want to make me aware ahead of time that you can only attend if you have at least 3 sessions accepted, either using my <a href="https://poshoholic.com/contact-me/" target="_blank">contact me</a> form or via email (on gmail or hotmail, either works, using the nickname I use on this blog as the user id).</p>
<h4>Why should I submit a proposal?</h4>
<p>Personally speaking, I find presenting information that has been learned through hard work to be very rewarding.&#160; I also find receiving information that others have learned through their hard work to be very rewarding as well.&#160; It’s all about the community participation and sharing of knowledge.&#160; Aside from being proud of your work and sharing it with others, there are more tangible benefits for speakers with accepted sessions as well.</p>
<p>For every session proposal that is accepted (voted high enough by the community and accepted in the final review by the conference organizers), speakers will receive a $300 travel stipend as well as up to $200 to offset 1/3 of their registration cost.&#160; That means someone presenting 3 sessions will receive $900 that they can use towards their travel expenses and a full refund of their registration fee.&#160; This should make it much clearer why it is advantageous to submit multiple session proposals.</p>
<p>One last reason why you should submit a proposal: the value of the conversation that comes with an event like this is extremely high.&#160; You’ll be able to talk to others about your challenges and ideas, learn from their efforts, perhaps find people you want to work with on various community projects, etc.&#160; It’s the networking alone that drives me to attend events like this.</p>
<h4>How do I write a proposal?</h4>
<p>Each proposal you enter must include three pieces of information:</p>
<ul>
<li>a title for the session you are proposing, </li>
<li>your full name, and </li>
<li>a 1-2 paragraph description of what the session will contain. </li>
</ul>
<p>You must create one topic per proposal.&#160; Don’t put all of your sessions on one topic, and don’t reply to current topics when creating proposals, please.</p>
<p>In general when planning your proposal, focus on content that will come with more demos, and less on slide-heavy content.&#160; This is a conference for experts and enthusiasts who are looking for deep technical content on PowerShell-related topics in interactive sessions.&#160; With this crowd, rich, demo-focused sessions will be preferred over slide-heavy sessions.</p>
<p>You should also review some of the proposals that are already submitted as examples.&#160; Keep in mind that the sessions are 35 minutes long with 10 minutes of Q&amp;A at the end (although questions often come up during the sessions at an event like this).&#160; 35 minutes may seem like a lot of time, but it goes by quickly, especially when doing demos.</p>
<h4>Summary</h4>
<p>That’s a lot of information, so here is a summary of the essential points along with links to additional information.</p>
<table border="0" cellspacing="0" cellpadding="2" width="537">
<tbody>
<tr>
<td valign="top" width="200">Conference Title</td>
<td valign="top" width="335">PowerShell Summit North America 2013</td>
</tr>
<tr>
<td valign="top" width="200">Conference Website</td>
<td valign="top" width="335"><a href="http://powershellsummit.com">http://powershellsummit.com</a></td>
</tr>
<tr>
<td valign="top" width="200">Conference Dates</td>
<td valign="top" width="335">April 22-24, 2013*</td>
</tr>
<tr>
<td valign="top" width="200">Location</td>
<td valign="top" width="335">Microsoft Campus, Buildings 40 and 41, Redmond, WA</td>
</tr>
<tr>
<td valign="top" width="200">Session Proposal Forum</td>
<td valign="top" width="335"><a title="http://powershell.org/discuss/viewforum.php?f=22" href="http://powershell.org/discuss/viewforum.php?f=22">http://powershell.org/discuss/viewforum.php?f=22</a></td>
</tr>
<tr>
<td valign="top" width="200">Session Proposal Deadline</td>
<td valign="top" width="335">October 14, 2012 at midnight PST</td>
</tr>
<tr>
<td valign="top" width="200">Session Voting Period</td>
<td valign="top" width="335">October 15, 2012 to October 28, 2012</td>
</tr>
<tr>
<td valign="top" width="200">Final Tally and Processing</td>
<td valign="top" width="335">The week of October 29, 2012</td>
</tr>
<tr>
<td valign="top" width="200">Sessions Announced</td>
<td valign="top" width="335">As soon as possible after October 29th, once the final tally and processing is done and accepted presenters have confirmed their sessions</td>
</tr>
<tr>
<td valign="top" width="200">Forum for Conference- and Session-Related Questions</td>
<td valign="top" width="335"><a href="http://powershell.org/discuss/viewforum.php?f=20">http://powershell.org/discuss/viewforum.php?f=20</a></td>
</tr>
<tr>
<td valign="top" width="200">Speakers Page</td>
<td valign="top" width="335"><a href="http://powershell.org/summit/speak.php">http://powershell.org/summit/speak.php</a></td>
</tr>
<tr>
<td valign="top" width="200">Conference FAQ</td>
<td valign="top" width="335"><a href="http://powershell.org/summit/faq.php">http://powershell.org/summit/faq.php</a></td>
</tr>
<tr>
<td valign="top" width="200">Best location to ask PowerShell questions and to help the community with answers</td>
<td valign="top" width="335"><a href="http://powershell.org">http://powershell.org</a></td>
</tr>
</tbody>
</table>
<p>* With a high probability for a short, half-day event adjacent to this.</p>
<p>I look forward to reading your session proposals!</p>
<p>Thanks,</p>
<p>Kirk out.</p>
<div style="margin:0;display:inline;float:none;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9e5894ea-b179-47f4-8aa1-e9deb6e93121" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/PowerShell" rel="tag">PowerShell</a>,<a href="http://technorati.com/tags/Poshoholic" rel="tag">Poshoholic</a>,<a href="http://technorati.com/tags/PowerShell.org" rel="tag">PowerShell.org</a>,<a href="http://technorati.com/tags/PowerShell+Summit" rel="tag">PowerShell Summit</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2012/09/13/powershell-summit-north-america-2013-call-for-content/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>Kirk Munro, Product Manager, Architect, and PowerShell MVP for hire</title>
		<link>https://poshoholic.com/2012/07/18/kirk-munro-product-manager-architect-and-powershell-mvp-for-hire/</link>
					<comments>https://poshoholic.com/2012/07/18/kirk-munro-product-manager-architect-and-powershell-mvp-for-hire/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Wed, 18 Jul 2012 23:01:34 +0000</pubDate>
				<category><![CDATA[Devfarm]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PowerWF]]></category>
		<category><![CDATA[Architect]]></category>
		<category><![CDATA[Poshoholic]]></category>
		<category><![CDATA[Product Manager]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=791</guid>

					<description><![CDATA[While I have loved working at Devfarm Software for the past 11 months, circumstances have unfortunately forced us to part ways and as a result I am a free agent now and looking for a new place to hang my hat.&#160; Working with Ben Vierck and Brian Butler at Devfarm has been a fantastic experience,&#8230; <a class="more-link" href="https://poshoholic.com/2012/07/18/kirk-munro-product-manager-architect-and-powershell-mvp-for-hire/">Continue reading <span class="screen-reader-text">Kirk Munro, Product Manager, Architect, and PowerShell MVP for&#160;hire</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>While I have loved working at Devfarm Software for the past 11 months, circumstances have unfortunately forced us to part ways and as a result I am a free agent now and looking for a new place to hang my hat.&#160; Working with Ben Vierck and Brian Butler at Devfarm has been a fantastic experience, and if it wasn’t for the small yet annoying detail that there isn’t enough money in the company to continue to pay my salary and keep the business going full steam ahead, I’d still be working with them today.</p>
<p>I officially stopped working for Devfarm on July 6, but I had a few items for <a href="http://powerwf.com/products/powerwf.aspx" target="_blank">PowerWF</a> 3.0 that I wasn’t quite finished with yet so I spent a good part of last week wrapping up development of those items.&#160; When I wasn’t doing that, I was hard at work on getting the public beta of <a href="http://wmix.codeplex.com" target="_blank">wmix</a> out the door (something that I’ll talk more about later).&#160; With wmix published and my tasks at Devfarm now complete, it’s time to focus on finding what’s next.</p>
<p>If you or someone you know are looking for a talented Product Manager with:</p>
<ul>
<li>a very strong technical background with 15 years of experience in software development and infrastructure management; </li>
<li>recognized deep technical expertise as a 5-time recipient of the Microsoft MVP award for Windows PowerShell, including almost 6 years of dedicated Windows PowerShell experience; </li>
<li>experience establishing a brand, building awareness, and leveraging social media in marketing; </li>
<li>strong presentation skills and experience presenting at large conferences such as TechEd; and </li>
<li>an entrepreneurial spirit </li>
</ul>
<ul>then please <a href="https://poshoholic.com/contact-me/" target="_blank">drop me a line</a> and lets talk about it.</ul>
<ul>Thanks,</ul>
<p>Kirk out.</p>
<div style="margin:0;display:inline;float:none;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:36876e56-dfc0-415d-a17e-972fe9a562f0" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/PowerShell" rel="tag">PowerShell</a>,<a href="http://technorati.com/tags/Poshoholic" rel="tag">Poshoholic</a>,<a href="http://technorati.com/tags/Product+Manager" rel="tag">Product Manager</a>,<a href="http://technorati.com/tags/Architect" rel="tag">Architect</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2012/07/18/kirk-munro-product-manager-architect-and-powershell-mvp-for-hire/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>This April is &#8220;Learn More About PowerShell&#8221; Month with the 2012 Scripting Games, the 2012 Microsoft Management Summit, and the 2012 North American PowerShell Deep Dive!</title>
		<link>https://poshoholic.com/2012/03/29/this-april-is-learn-more-about-powershell-month-with-the-2012-scripting-games-the-2012-microsoft-management-summit-and-the-2012-north-american-powershell-deep-dive/</link>
					<comments>https://poshoholic.com/2012/03/29/this-april-is-learn-more-about-powershell-month-with-the-2012-scripting-games-the-2012-microsoft-management-summit-and-the-2012-north-american-powershell-deep-dive/#respond</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Thu, 29 Mar 2012 13:00:00 +0000</pubDate>
				<category><![CDATA[Devfarm]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PowerShell Deep Dive]]></category>
		<category><![CDATA[MMS]]></category>
		<category><![CDATA[PoSh]]></category>
		<category><![CDATA[Poshoholic]]></category>
		<category><![CDATA[Scripting Games]]></category>
		<category><![CDATA[System Center 2012]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=765</guid>

					<description><![CDATA[It’s hard to believe that April is almost here already.&#160; Last week we had record high temperatures reaching 31°C (that’s 87.8°F for those of you living south of the border), and the night before last it was -16°C (or 3.2°F).&#160; What wonderful consistency.&#160; Maybe that’s why I like PowerShell so much, because it provides great&#8230; <a class="more-link" href="https://poshoholic.com/2012/03/29/this-april-is-learn-more-about-powershell-month-with-the-2012-scripting-games-the-2012-microsoft-management-summit-and-the-2012-north-american-powershell-deep-dive/">Continue reading <span class="screen-reader-text">This April is &#8220;Learn More About PowerShell&#8221; Month with the 2012 Scripting Games, the 2012 Microsoft Management Summit, and the 2012 North American PowerShell Deep&#160;Dive!</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>It’s hard to believe that April is almost here already.&#160; Last week we had record high temperatures reaching 31°C (that’s 87.8°F for those of you living south of the border), and the night before last it was -16°C (or 3.2°F).&#160; What wonderful consistency.&#160; Maybe that’s why I like PowerShell so much, because it provides great consistency that just isn’t apparent in so many other places in life (that’s a swell tagline: “Use PowerShell, because it’s more consistent than the weather” <img style="border-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://poshoholic.com/wp-content/uploads/2012/03/wlemoticon-smile.png?w=739" />).&#160; Anyway, I digress…back to the topic at hand.</p>
<p>This April is <strong>“Learn More About PowerShell” month</strong>!&#160; Ok, so it’s not official (it’s not like I’m a mayor or anything), but with all of the opportunities to learn about Windows PowerShell in April, it seems like a fitting title, so I’m declaring it that anyway.&#160; Now, where to begin.</p>
<h4>2012 Scripting Games</h4>
<p>The first Monday in April (that’s April 2, Monday next week) marks the official opening of the <a href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/02/04/the-2012-windows-powershell-scripting-games-all-links-on-one-page.aspx" target="_blank">2012 Scripting Games</a>!&#160; The Scripting Games are a great event, because they provide opportunities for beginner and advanced scripters alike to learn more about Windows PowerShell.&#160; There are beginner and advanced divisions, with 10 events in each division.&#160; You participate by visiting the <a href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/02/04/the-2012-windows-powershell-scripting-games-all-links-on-one-page.aspx" target="_blank">official 2012 Scripting Games page</a> starting on Monday April 2 to see the events that are published so far, and you have one week to submit a solution by publishing a script to the <a href="http://2012sg.poshcode.org/" target="_blank">2012 Scripting Games page on PoshCode</a> for each event that you want to enter.&#160; Note that at the time of this writing, the 2012 Scripting Games page on PoshCode shows information related to the 2011 Scripting Games, so for now just put a reminder in your calendar to check these two links out on April 2.</p>
<p>Once you submit a solution, you can move on to the next event if it is available.&#160; All solutions will be judged by a great panel of expert judges, and once the events close there will be expert commentaries published so that you can learn how different community experts solve these problems with PowerShell scripts.&#160; Watch for my expert commentary to Beginner Event 3 once that event has closed for submissions.</p>
<p>The 2012 Scripting Games will run until April 13, 2012, although you’ll have 7 days from the day that each event is posted, so there will still be some time to compete and get your entries in.&#160; There are many prizes to be won, including grand prizes of full conference passes for <a href="http://northamerica.msteched.com/" target="_blank">TechEd North America 2012</a> (another great opportunity to learn more about PowerShell), software licenses for products like <a href="http://powerwf.com/products/powerwf.aspx" target="_blank">PowerWF</a>, and more!&#160; Also, don’t delay in getting your entries in, because you’ll barely have time once you’re done to pack your bags for the <a href="http://www.mms-2012.com/" target="_blank">2012 Microsoft Management Summit</a> in Las Vegas if you’re going to that conference!</p>
<h4>2012 Microsoft Management Summit</h4>
<p>In just 2½ weeks from now, the <a href="http://www.mms-2012.com/" target="_blank">2012 Microsoft Management Summit</a> (MMS) will start, and it’s going to be an amazing conference this year.&#160; With the upcoming <a href="http://www.microsoft.com/systemcenter/" target="_blank">Microsoft System Center 2012</a> release, and with <a href="http://windows.microsoft.com/en-US/windows-8/consumer-preview" target="_blank">Windows 8 currently available as a Consumer Preview</a> in the client and the server varieties (both of which include the pre-release version of PowerShell version 3), there are plenty of new opportunities to scale up your PowerShell prowess and scale out your scripting capabilities while learning how to get the most of these new products and platforms by leveraging PowerShell automation.</p>
<p>At the MMS 2012 conference, there are a total of 13 breakout sessions, 3 instructor led labs, and 5 self-paced labs where you can learn more about Windows PowerShell.&#160; There is also a PowerShell booth that will be staffed by members of the Windows PowerShell team and a few PowerShell MVPs.&#160; I’ll be working the PowerShell booth as will <a href="http://powershellers.blogspot.ca/" target="_blank">Aleksandar Nikolic</a>, so please come see us and ask questions if you have any.&#160; There will also be other booths for products like the <a href="http://www.microsoft.com/systemcenter/" target="_blank">Microsoft System Center 2012</a> release, which comes with even more PowerShell capabilities than before.&#160; Additionally, there are many companies in the Expo hall that leverage PowerShell in their products and/or provide cmdlets to facilitate automation in their environments, such as NetApp, Veeam, Splunk and <a href="http://www.devfarm.com/" target="_blank">Devfarm Software</a> (the company that I work for) to name but a few.&#160; I’ll be working the Devfarm booth when I’m not in the PowerShell booth, so if you look around a little you’ll have a good chance of finding me.</p>
<p>If you’re going to MMS 2012, and you want to learn more about PowerShell, make sure you take advantage of these resources while you’re there.&#160; The knowledge passed on to you through one breakout session, lab, or discussion with someone in the learning center or expo hall takes many, many hours to put together, and getting that knowledge first hand can be a huge timesaver for you in the long run!</p>
<h4>PowerShell-related Content at MMS 2012</h4>
<p>The following list identifies all of the PowerShell-related sessions and resources that have been announced so far for the MMS 2012 conference for your convenience.&#160; To get the most value out of your conference, make sure you add the sessions, labs, and other items of interest to your schedule so that you don’t miss out on these great learning opportunities.&#160; I have highlighted the sessions most interesting to me in bold in the list below.</p>
<table border="1" cellspacing="0" cellpadding="2" width="600">
<tbody>
<tr>
<td valign="top" width="111"><strong>Type and Level</strong></td>
<td valign="top" width="189"><strong>Title</strong></td>
<td valign="top" width="122"><strong>Speaker(s)</strong></td>
<td valign="top" width="178"><strong>Coordinates</strong></td>
</tr>
<tr>
<td valign="top" width="111"><strong>Instructor-led Lab           <br />300/Advanced</strong></td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-IL306" target="_blank">SV-IL306 Introduction to Windows PowerShell Fundamentals</a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Dan_Reger" target="_blank"><strong>Dan Reger</strong></a></td>
<td valign="top" width="178"><strong>Monday, April 16,           <br />12:00 PM to 1:15 PM            <br />Venetian Ballroom A</strong></td>
</tr>
<tr>
<td valign="top" width="111">Breakout Session         <br />300/Advanced</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-B317" target="_blank">SV-B317 Top 10 Things Every Systems Admin Needs to Know about Windows Server 2008 R2 SP1</a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Dan_Stolts" target="_blank">Dan Stolts</a></td>
<td valign="top" width="178">Monday, April 16,         <br />3:00 PM to 4:15 PM          <br />Venetian Ballroom G</td>
</tr>
<tr>
<td valign="top" width="111"><strong>Instructor-led Lab           <br />300/Advanced</strong></td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-IL307" target="_blank"><strong>SV-IL307 What’s New in Windows PowerShell 3.0</strong></a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Lucio_Silveira" target="_blank"><strong>Lucio Silveira</strong></a></td>
<td valign="top" width="178"><strong>Monday, April 16,           <br />4:30 PM to 5:45 PM            <br />Venetian Ballroom A</strong></td>
</tr>
<tr>
<td valign="top" width="111"><strong>Breakout Session           <br />300/Advanced</strong></td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/CD-B334" target="_blank"><strong>CD-B334 Understanding Console Extension for Configuration Manager 2007 and 2012</strong></a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Matthew%20_Hudson" target="_blank"><strong>Matthew Hudson</strong></a></td>
<td valign="top" width="178"><strong>Tuesday, April 17,           <br />10:15 AM to 11:30 AM            <br />Venetian Ballroom G</strong></td>
</tr>
<tr>
<td valign="top" width="111"><strong>Breakout Session           <br />400/Expert</strong></td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/CD-B406" target="_blank"><strong>CD-B406 Configuration Manager 2012 and PowerShell: Better Together</strong></a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Greg_Ramsey" target="_blank"><strong>Greg Ramsey</strong></a></td>
<td valign="top" width="178"><strong>Tuesday, April 17,           <br />11:45 AM to 1:00 PM            <br />Venetian Ballroom G</strong></td>
</tr>
<tr>
<td valign="top" width="111">Instructor-led Lab         <br />300/Advanced</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-IL304" target="_blank">SV-IL304 Managing Windows Server “8” with Server Manager and PowerShell 3.0</a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Michael_Leworthy" target="_blank">Michael Leworthy</a></td>
<td valign="top" width="178">Tuesday, April 17,         <br />11:45 AM to 1:00 PM          <br />Venetian Ballroom A</td>
</tr>
<tr>
<td valign="top" width="111">Instructor-led Lab         <br />300/Advanced</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-IL307" target="_blank">SV-IL307 What’s New in Windows PowerShell 3.0</a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Lucio_Silveira" target="_blank">Lucio Silveira</a></td>
<td valign="top" width="178">Tuesday, April 17,         <br />2:15PM to 3:30PM          <br />Venetian Ballroom A</td>
</tr>
<tr>
<td valign="top" width="111">Breakout Session         <br />300/Advanced</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-B319" target="_blank">SV-B319 Windows PowerShell for Beginners</a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Jeffrey_Snover" target="_blank">Jeffrey Snover</a>,          <br /><a href="http://www.mms-2012.com/Speaker/Details/Travis_Jones" target="_blank">Travis Jones</a></td>
<td valign="top" width="178">Tuesday, April 17,         <br />4:00 PM to 5:15 PM          <br />Murano 3301</td>
</tr>
<tr>
<td valign="top" width="111"><strong>Breakout Session           <br />200/Intermediate</strong></td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-B205" target="_blank"><strong>SV-B205 Overview of Server Management Technologies in Windows Server “8”</strong></a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Erin_Chapple" target="_blank"><strong>Erin Chapple</strong></a><strong>,           <br /></strong><a href="http://www.mms-2012.com/Speaker/Details/Jeffrey_Snover" target="_blank"><strong>Jeffrey Snover</strong></a></td>
<td valign="top" width="178"><strong>Wednesday, April 18,           <br />10:15 AM to 11:30 AM            <br />Murano 3301</strong></td>
</tr>
<tr>
<td valign="top" width="111">Breakout Session         <br />200/Intermediate</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-B291" target="_blank">SV-B291 Manage Cisco UCS with System Center 2012 and PowerShell</a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Chakri_Avala" target="_blank">Chakri Avala</a></td>
<td valign="top" width="178">Wednesday, April 18,         <br />2:15 PM to 3:30 PM          <br />Titian 2203</td>
</tr>
<tr>
<td valign="top" width="111">Instructor-led Lab         <br />300/Advanced</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-IL306" target="_blank">SV-IL306 Introduction to Windows PowerShell Fundamentals</a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Dan_Reger" target="_blank">Dan Reger</a></td>
<td valign="top" width="178">Wednesday, April 18,         <br />2:15 PM to 3:30 PM          <br />Venetian Ballroom A</td>
</tr>
<tr>
<td valign="top" width="111">Breakout Session         <br />300/Advanced</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-B313" target="_blank">SV-B313 Windows Server 2008 R2 Hyper-V FAQs, Tips, and Tricks</a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Janssen_Jones" target="_blank">Janssen Jones</a></td>
<td valign="top" width="178">Wednesday, April 18,         <br />4:00 PM to 5:15 PM          <br />Murano 3301</td>
</tr>
<tr>
<td valign="top" width="111"><strong>Instructor-led Lab           <br />300/Advanced</strong></td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-IL304" target="_blank"><strong>SV-IL304 Managing Windows Server “8” with Server Manager and PowerShell 3.0</strong></a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Michael_Leworthy" target="_blank"><strong>Michael Leworthy</strong></a></td>
<td valign="top" width="178"><strong>Thursday, April 19,           <br />8:30 AM to 9:45 AM            <br />Venetian Ballroom A</strong></td>
</tr>
<tr>
<td valign="top" width="111"><strong>Breakout Session           <br />400/Expert</strong></td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-B405" target="_blank"><strong>SV-B405 Advanced Automation Using Windows PowerShell 2.0</strong></a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Jeffrey_Snover" target="_blank"><strong>Jeffrey Snover</strong></a><strong>,           <br /></strong><a href="http://www.mms-2012.com/Speaker/Details/Travis_Jones" target="_blank"><strong>Travis Jones</strong></a></td>
<td valign="top" width="178"><strong>Thursday, April 19,           <br />10:15 AM to 11:30 AM            <br />Veronese 2401</strong></td>
</tr>
<tr>
<td valign="top" width="111">Breakout Session         <br />300/Advanced</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/AM-B315" target="_blank">AM-B315 SharePoint as a Workload in a Private Cloud</a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/speaker/details/Adam_Hall" target="_blank">Adam Hall</a>,          <br /><a href="http://www.mms-2012.com/speaker/details/Michael_Frank" target="_blank">Michael Frank</a></td>
<td valign="top" width="178">Thursday, April 19,         <br />10:15 AM to 11:30 AM          <br />Titian 2206</td>
</tr>
<tr>
<td valign="top" width="111">Breakout Session         <br />300/Advanced</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-B312" target="_blank">SV-B312 Don Jones’ Windows PowerShell Crash Course</a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Don_Jones" target="_blank">Don Jones</a></td>
<td valign="top" width="178">Thursday, April 19,         <br />11:45 AM to 1:00 PM          <br />Venetian Ballroom G</td>
</tr>
<tr>
<td valign="top" width="111">Breakout Session         <br />300/Advanced</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-B315" target="_blank">SV-B315 Managing Group Policy Using PowerShell</a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Darren_Mar-Elia" target="_blank">Darren Mar-Elia</a></td>
<td valign="top" width="178">Thursday, April 19,         <br />11:45 AM to 1:00 PM          <br />Murano 3301</td>
</tr>
<tr>
<td valign="top" width="111"><strong>Breakout Session           <br />300/Advanced</strong></td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/FI-B322" target="_blank"><strong>FI-B322 Virtual Machine Manager 2012: PowerShell is your Friend, and Here’s Why</strong></a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Hector_Linares" target="_blank"><strong>Hector Linares</strong></a><strong>,           <br /></strong><a href="http://www.mms-2012.com/Speaker/Details/Susan_Hill" target="_blank"><strong>Susan Hill</strong></a></td>
<td valign="top" width="178"><strong>Thursday, April 19,           <br />11:45 AM to 1:00 PM            <br />Titian 2206</strong></td>
</tr>
<tr>
<td valign="top" width="111">Breakout Session         <br />400/Expert</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-B406" target="_blank">SV-B406 PowerShell Remoting in Depth</a></td>
<td valign="top" width="122"><a href="http://www.mms-2012.com/Speaker/Details/Don_Jones" target="_blank">Don Jones</a></td>
<td valign="top" width="178">Friday, April 20,         <br />8:30 AM to 9:45 AM          <br />Bellini 2001</td>
</tr>
<tr>
<td valign="top" width="111">Hands-on lab         <br />300/Advanced</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-L302" target="_blank">SV-L302 Active Directory Deployment and Management Enhancements</a></td>
<td valign="top" width="122">N/A</td>
<td valign="top" width="178">Hands-on lab, available in the HOL area</td>
</tr>
<tr>
<td valign="top" width="111"><strong>Hands-on lab           <br />300/Advanced</strong></td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-L304" target="_blank"><strong>SV-L304 Managing Windows Server “8” with Server Manager and Windows PowerShell 3.0</strong></a></td>
<td valign="top" width="122"><strong>N/A</strong></td>
<td valign="top" width="178"><strong>Hands-on lab, available in the HOL area</strong></td>
</tr>
<tr>
<td valign="top" width="111">Hands-on lab         <br />300/Advanced</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-L305" target="_blank">SV-L305 Managing Network Infrastructure with Windows Server “8”</a></td>
<td valign="top" width="122">N/A</td>
<td valign="top" width="178">Hands-on lab, available in the HOL area</td>
</tr>
<tr>
<td valign="top" width="111">Hands-on lab         <br />300/Advanced</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-L306" target="_blank">SV-L306 Introduction to Windows PowerShell Fundamentals</a></td>
<td valign="top" width="122">N/A</td>
<td valign="top" width="178">Hands-on lab, available in the HOL area</td>
</tr>
<tr>
<td valign="top" width="111">Hands-on lab         <br />300/Advanced</td>
<td valign="top" width="189"><a href="http://www.mms-2012.com/topic/details/SV-L307" target="_blank">SV-L307 What’s New in Windows PowerShell 3.0</a></td>
<td valign="top" width="122">N/A</td>
<td valign="top" width="178">Hands-on lab, available in the HOL area</td>
</tr>
</tbody>
</table>
<h4>2012 North America PowerShell Deep Dive</h4>
<p>As if all of these PowerShell learning opportunities weren’t already enough, there’s even more you can do in <strong>“Learn More About PowerShell” month</strong>.&#160; At the end of April, a week after MMS is finished, the 2nd annual North American <a href="http://www.theexpertsconference.com/us/2012/powershell-deep-dive/" target="_blank">2012 PowerShell Deep Dive</a> conference will start.&#160; This conference is second to none when it comes to learning more about PowerShell.&#160; The sessions are fantastic, and the conversations perhaps even more so.&#160; What makes this conference unique is the focus on shorter, 35-minute sessions that quickly drill into a specific topic and give you a ton of information on that topic.&#160; There are also short, 5-minute lightning rounds which give speakers an opportunity to quickly show off one of their favorite aspects of PowerShell.&#160; The 35-minute format, 5-minute lightning rounds, and the depth of the content in these sessions are unique to this conference, and you won’t get the same value for PowerShell content anywhere else.&#160; Add to that the evening script club-style events and it’s really an experience that is second to none.&#160; I highly recommend you consider attending if you’re already using PowerShell and want to take your skills to new heights.&#160; You can still register for this great event on the <a href="https://www.ustechsregister.com/TEC2012/RegistrationSelect.aspx" target="_blank">registration page for The Experts Conference (TEC)</a>.</p>
<p>This conference takes place in sunny San Diego from April 29th until May 2nd, and it gives you 3 days of 100% PowerShell content.&#160; I’m fortunate enough to be attending this conference as well, and I’ll be giving sessions about proxy functions and about WMI and PowerShell.&#160; If you do attend, please make a point to say hello and introduce yourself if I haven’t met you already.</p>
<p>Here’s a quick look at the content that is being presented at the PowerShell Deep Dive this year:</p>
<table border="1" cellspacing="0" cellpadding="2" width="600">
<tbody>
<tr>
<td valign="top" width="200"><strong>Title</strong></td>
<td valign="top" width="200"><strong>Speaker(s)</strong></td>
<td valign="top" width="200"><strong>Date</strong></td>
</tr>
<tr>
<td valign="top" width="200">FIM PowerShell Workshop</td>
<td valign="top" width="200">Craig Martin</td>
<td valign="top" width="200">Sunday, April 29, 2012</td>
</tr>
<tr>
<td valign="top" width="200">Keynote</td>
<td valign="top" width="200">Jeffrey Snover</td>
<td valign="top" width="200">Monday, April 30, 2012         <br />8:00 AM to 10:00 AM</td>
</tr>
<tr>
<td valign="top" width="200">When old API’s save the day (pinvoke and native windows dlls)</td>
<td valign="top" width="200">Tome Tanasovski</td>
<td valign="top" width="200">Monday, April 30, 2012         <br />10:30 AM to 11:05 AM</td>
</tr>
<tr>
<td valign="top" width="200">Get Your Game On! Leveraging Proxy Functions in Windows PowerShell</td>
<td valign="top" width="200">Kirk “Poshoholic” Munro</td>
<td valign="top" width="200">Monday, April 30, 2012         <br />11:10 AM to 11:45 AM</td>
</tr>
<tr>
<td valign="top" width="200">Using Splunk Reskit with PowerShell to revolutionize your script process</td>
<td valign="top" width="200">Brandon Shell</td>
<td valign="top" width="200">Monday, April 30, 2012         <br />1:00 PM to 2:15 PM</td>
</tr>
<tr>
<td valign="top" width="200">Lightning Round</td>
<td valign="top" width="200">Determined at event</td>
<td valign="top" width="200">Monday, April 30, 2012         <br />2:20 PM to 3:05 PM</td>
</tr>
<tr>
<td valign="top" width="200">Remoting Improvement in Windows PowerShell V3</td>
<td valign="top" width="200">Krishna Vutukuri</td>
<td valign="top" width="200">Monday, April 30, 2012         <br />3:10 PM to 3:45 PM</td>
</tr>
<tr>
<td valign="top" width="200">New Hyper-V PowerShell Module in Windows Server 8</td>
<td valign="top" width="200">Adam Driscoll</td>
<td valign="top" width="200">Monday, April 30, 2012         <br />4:15 PM to 5:30 PM</td>
</tr>
<tr>
<td valign="top" width="200">Formatting in Windows PowerShell</td>
<td valign="top" width="200">Jim Truher</td>
<td valign="top" width="200">Tuesday, May 1, 2012         <br />8:00 AM to 8:35 AM</td>
</tr>
<tr>
<td valign="top" width="200">PowerShell and WMI: A Love Story</td>
<td valign="top" width="200">Kirk “Poshoholic” Munro</td>
<td valign="top" width="200">Tuesday, May 1, 2012         <br />8:40 AM to 9:15 AM</td>
</tr>
<tr>
<td valign="top" width="200">PowerShell as a Web Language</td>
<td valign="top" width="200">James Brundage</td>
<td valign="top" width="200">Tuesday, May 1, 2012         <br />9:45 AM to 11:00 AM</td>
</tr>
<tr>
<td valign="top" width="200">PowerShell V3 in Production</td>
<td valign="top" width="200">Steve Murawski</td>
<td valign="top" width="200">Tuesday, May 1, 2012         <br />11:15 AM to 11:50 AM</td>
</tr>
<tr>
<td valign="top" width="200">Lightning Round</td>
<td valign="top" width="200">Determined at event</td>
<td valign="top" width="200">Tuesday, May 1, 2012         <br />11:55 AM to 12:30 AM</td>
</tr>
<tr>
<td valign="top" width="200">How Microsoft Uses PowerShell for Testing Automation and Deployment of FIM</td>
<td valign="top" width="200">Kinnon McDonell</td>
<td valign="top" width="200">Tuesday, May 1, 2012         <br />1:45 PM to 3:00 PM</td>
</tr>
<tr>
<td valign="top" width="200">Job Types in Windows PowerShell 3.0</td>
<td valign="top" width="200">Travis Jones</td>
<td valign="top" width="200">Tuesday, May 1, 2012         <br />3:15 PM to 3:50 PM</td>
</tr>
<tr>
<td valign="top" width="200">Creating a Corporate PowerShell Module</td>
<td valign="top" width="200">Tome Tanasovski</td>
<td valign="top" width="200">Tuesday, May 1, 2012         <br />3:55 PM to 4:30 PM</td>
</tr>
<tr>
<td valign="top" width="200">Cmdlets over Objects (CDXML)</td>
<td valign="top" width="200">Richard Siddaway</td>
<td valign="top" width="200">Wednesday, May 2, 2012         <br />8:00 AM to 8:35 AM</td>
</tr>
<tr>
<td valign="top" width="200">Build your own remoting endpoint with PowerShell V3</td>
<td valign="top" width="200">Aleksandar Nikolic</td>
<td valign="top" width="200">Wednesday, May 2, 2012         <br />8:40 AM to 9:15 AM</td>
</tr>
<tr>
<td valign="top" width="200">PowerShell Workflows and the Windows Workflow Foundation for the IT Pro</td>
<td valign="top" width="200">Steve Murawski</td>
<td valign="top" width="200">Wednesday, May 2, 2012         <br />9:45 AM to 11:00 AM</td>
</tr>
<tr>
<td valign="top" width="200">Incorporating Microsoft Office into Windows PowerShell</td>
<td valign="top" width="200">Jeffery Hicks</td>
<td valign="top" width="200">Wednesday, May 2, 2012         <br />11:15 AM to 11:50 AM</td>
</tr>
<tr>
<td valign="top" width="200">TBD</td>
<td valign="top" width="200">Bruce Payette</td>
<td valign="top" width="200">Wednesday, May 2, 2012         <br />11:55 AM to 12:30 PM</td>
</tr>
</tbody>
</table>
<p>Wow, that’s a lot of PowerShell!&#160; With all of these opportunities, whether you’re trying to learn PowerShell without incurring a huge expense, or travelling to conferences to learn more about technologies there, there’s definitely something for everyone in what looks to be an awesome <strong>“Learn More About PowerShell” month</strong>.</p>
<p>Good luck, wherever your learning adventures take you!</p>
<p>Kirk out.</p>
<div style="margin:0;display:inline;float:none;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d17cb8a3-9d1b-46ea-963a-6693d1cd9446" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/PowerShell" rel="tag">PowerShell</a>,<a href="http://technorati.com/tags/PoSh" rel="tag">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic" rel="tag">Poshoholic</a>,<a href="http://technorati.com/tags/Scripting+Games" rel="tag">Scripting Games</a>,<a href="http://technorati.com/tags/MMS" rel="tag">MMS</a>,<a href="http://technorati.com/tags/PowerShell+Deep+Dive" rel="tag">PowerShell Deep Dive</a>,<a href="http://technorati.com/tags/System+Center+2012" rel="tag">System Center 2012</a>,<a href="http://technorati.com/tags/Devfarm" rel="tag">Devfarm</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2012/03/29/this-april-is-learn-more-about-powershell-month-with-the-2012-scripting-games-the-2012-microsoft-management-summit-and-the-2012-north-american-powershell-deep-dive/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>

		<media:content url="https://poshoholic.com/wp-content/uploads/2012/03/wlemoticon-smile.png" medium="image">
			<media:title type="html">Smile</media:title>
		</media:content>
	</item>
		<item>
		<title>Windows 8&#8230;reimagined?</title>
		<link>https://poshoholic.com/2012/03/06/windows-8reimagined/</link>
					<comments>https://poshoholic.com/2012/03/06/windows-8reimagined/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Wed, 07 Mar 2012 03:30:38 +0000</pubDate>
				<category><![CDATA[Off-topic]]></category>
		<category><![CDATA[Poshoholic]]></category>
		<category><![CDATA[Windows 8]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=761</guid>

					<description><![CDATA[The series of releases of client versions of Microsoft Windows seems to suffer all too much the same fate as Star Trek movies have in the past.&#160; This concept has already been discussed before, and there are even blog posts about it, such as Ewan Spence’s comparison of Windows releases between versions 3.0 and Windows&#8230; <a class="more-link" href="https://poshoholic.com/2012/03/06/windows-8reimagined/">Continue reading <span class="screen-reader-text">Windows 8&#8230;reimagined?</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>The series of releases of client versions of Microsoft Windows seems to suffer all too much the same fate as Star Trek movies have in the past.&#160; This concept has already been discussed before, and there are even blog posts about it, such as <a href="http://www.ewanspence.com/blog/2009/01/08/why-windows-7-reminds-me-of-the-star-trek-movies/" target="_blank">Ewan Spence’s comparison of Windows releases between versions 3.0 and Windows 7 to the Star Trek movies from “The Motion Picture” to “First Contact”</a>.&#160; Windows 7 did indeed end up being a very impressive version of Windows, much like First Contact was a very impressive movie in the Star Trek franchise, and now we’re watching with anticipation since Windows 8 Consumer Preview is now available and Microsoft is marching steadfast towards its release.</p>
<p>Following the analogy that Windows releases are like Star Trek movie releases then, and that the success of Windows 7 was analogous to that of Star Trek: First Contact, it would seem that next two releases of Windows should be pretty much flops.&#160; Star Trek: Insurrection and Star Trek: Nemesis were both pretty forgettable films, offering very little to get excited about.&#160; Maybe Microsoft has picked up on these intertwined fates, inspiring them to try to skip over these failures by fast forwarding to the very successful “reboot” of the Star Trek movie franchise by picking coming out with what they call a “reimagined” Windows.&#160; Did they succeed in making this jump?&#160; Is Windows 8 a truly inspiring, innovative, reimagining of the Windows OS?</p>
<p>Only time will tell what the outcome will be.&#160; First impressions really count though.&#160; Today, based on experiences with the Windows 8 Consumer Preview, Windows 8 appears as if it will show off very well on a tablet device, where the new UI makes more sense.&#160; For business users like me though that rely heavily on their keyboard and mouse to get work done, I’m really afraid that they’ve gone and hidden all of the great features it includes behind a completely different UI paradigm that just doesn’t jive with the needs of a business worker.&#160; It may work well for casual computing at home, but so far it looks to me like businesses might want to consider skipping this one for their non-touch devices like laptops and desktops, at least until they can reconfigure it more like Windows 7 by removing the whimsical metro UI elements such as tiles, charms and “magic” corners.</p>
<p>What do you think?&#160; Is the reimagined Windows living up to your expectations?&#160; Do you think the new metro UI has a place in business computing?&#160; Or do you wish you had your start menu back?</p>
<p>I’m curious if I’m alone in my perspective or not.&#160; My gut tells me I’m not going to be alone in this perspective.&#160; Sound off in the comments and let me know what you think.</p>
<p>Kirk out.</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:27c1952a-7b13-4954-af90-240434a716ad" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Windows+8" rel="tag">Windows 8</a>,<a href="http://technorati.com/tags/Poshoholic" rel="tag">Poshoholic</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2012/03/06/windows-8reimagined/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>PowerSE 2.7 KB: PowerShell profile does not load on startup</title>
		<link>https://poshoholic.com/2012/01/25/powerse-2-7-kb-powershell-profile-does-not-load-on-startup/</link>
					<comments>https://poshoholic.com/2012/01/25/powerse-2-7-kb-powershell-profile-does-not-load-on-startup/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Wed, 25 Jan 2012 19:01:59 +0000</pubDate>
				<category><![CDATA[Devfarm]]></category>
		<category><![CDATA[PowerSE]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[KB]]></category>
		<category><![CDATA[PoSh]]></category>
		<category><![CDATA[Poshoholic]]></category>
		<category><![CDATA[profile]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=750</guid>

					<description><![CDATA[Note: This blog post refers to an issue identified in PowerSE 2.7.0. It has been corrected in PowerSE 2.7.1, which is now available. With the release we published yesterday, both PowerSE and PowerWF received a new feature: product-specific profiles.&#160; This feature allows you to have profile scripts that you only want run in PowerSE or&#8230; <a class="more-link" href="https://poshoholic.com/2012/01/25/powerse-2-7-kb-powershell-profile-does-not-load-on-startup/">Continue reading <span class="screen-reader-text">PowerSE 2.7 KB: PowerShell profile does not load on&#160;startup</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Note: This blog post refers to an issue identified in PowerSE 2.7.0. It has been corrected in PowerSE 2.7.1, which is now available.</p>
<p>With the release we published yesterday, both <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> and <a href="http://powerwf.com/products/powerwf.aspx" target="_blank">PowerWF</a> received a new feature: product-specific profiles.&#160; This feature allows you to have profile scripts that you only want run in PowerSE or PowerWF run there so that you don’t have to use if statements to check the host name in your profile scripts.&#160; With this feature we also created the initial PowerSE and PowerWF profile scripts such that they dot-source the native PowerShell profile script by default so that what runs in PowerShell also runs in PowerSE.</p>
<p>Unfortunately there is one small detail that was left out of the PowerSE installer for this feature: the installation of the initial PowerSE-specific profile. As a result, if you download PowerSE 2.7, your PowerShell profile won’t run right away.&#160; Fortunately the fix is simple.&#160; All you need to do is invoke this script from inside PowerSE 2.7:</p>
<blockquote>
<p>if (-not (Test-Path -LiteralPath $profile)) {      <br />&#160;&#160;&#160; Set-Content -Path $profile -Value @&#8217;       <br />if (Test-Path -LiteralPath $profile.CurrentUserPowerShellHost) {       <br />&#160;&#160;&#160; . $profile.CurrentUserPowerShellHost       <br />}       <br />&#8216;@       <br />}</p>
</blockquote>
<p>Once you have run that script, your PowerSE profile will exist and it will be defined to load your PowerShell profile.&#160; Restart PowerSE 2.7 and you’ll have your PowerShell profile loaded by default again.</p>
<p>Note that this does not apply to PowerWF users, the profile scripts were added correctly to the installer for that release.</p>
<p>My apologies for the inconvenience.&#160; We hope to have this resolved in the product itself very soon.&#160; In the meantime this short script should work around the issue for you.</p>
<p>Kirk out.</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1a6887f4-05d4-4893-b71e-ae42d175b754" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/PowerShell" rel="tag">PowerShell</a>,<a href="http://technorati.com/tags/PoSh" rel="tag">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic" rel="tag">Poshoholic</a>,<a href="http://technorati.com/tags/PowerSE" rel="tag">PowerSE</a>,<a href="http://technorati.com/tags/KB" rel="tag">KB</a>,<a href="http://technorati.com/tags/profile" rel="tag">profile</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2012/01/25/powerse-2-7-kb-powershell-profile-does-not-load-on-startup/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>PowerWF and PowerSE 2.7 are now available</title>
		<link>https://poshoholic.com/2012/01/24/powerwf-and-powerse-2-7-are-now-available/</link>
					<comments>https://poshoholic.com/2012/01/24/powerwf-and-powerse-2-7-are-now-available/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Tue, 24 Jan 2012 17:44:30 +0000</pubDate>
				<category><![CDATA[Devfarm]]></category>
		<category><![CDATA[PowerSE]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PowerWF]]></category>
		<category><![CDATA[management pack]]></category>
		<category><![CDATA[PoSh]]></category>
		<category><![CDATA[Poshoholic]]></category>
		<category><![CDATA[SCSM]]></category>
		<category><![CDATA[workflow]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=747</guid>

					<description><![CDATA[This morning PowerWF and PowerSE 2.7 were released to the web and they can now be downloaded from http://www.powerwf.com.&#160; These releases offer a lot of new value to PowerWF and PowerSE users, as follows: PowerWF 2.7 Highlights New Start Page with New Workflows The start page in PowerWF has been completely redesigned to provide immediate&#8230; <a class="more-link" href="https://poshoholic.com/2012/01/24/powerwf-and-powerse-2-7-are-now-available/">Continue reading <span class="screen-reader-text">PowerWF and PowerSE 2.7 are now&#160;available</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>This morning <a href="http://powerwf.com/products/powerwf.aspx" target="_blank">PowerWF</a> and <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> 2.7 were released to the web and they can now be downloaded from <a href="http://www.powerwf.com">http://www.powerwf.com</a>.&#160; These releases offer a lot of new value to PowerWF and PowerSE users, as follows:</p>
<h4>PowerWF 2.7 Highlights</h4>
<p><strong>New Start Page with New Workflows</strong></p>
<p>The start page in PowerWF has been completely redesigned to provide immediate value out of the box for PowerWF customers.&#160; The new design highlights the Workflow Library that is included with PowerWF, allowing customers to play workflows in the library without opening a workflow or script document.&#160; Users can also customize the workflows on the start page and add their own groups of workflows for easier runbook automation.&#160; This immediate out of the box value is included for PowerWF customers to allow them to leverage the power of Workflows and PowerShell in their environments without requiring any knowledge of PowerShell or Workflows.</p>
<p><strong>New Management Packs for System Center Service Manager (SCSM)</strong></p>
<p>PowerWF for Service Manager has always included several useful management packs for SCSM in the product.&#160; In this release, even more management packs for SCSM have been added.&#160; Now, with a click of a button you can deploy management packs that automatically close resolved incidents, expire inactive problem announcements, cancel pending activities for closed change requests, identify problems from incident trends, notify incident authors about unresolved incidents, and get SCSM statistics.&#160; These management packs are only available for licensed users of PowerWF for Service Manager.</p>
<p><b>Improved Toolbox Search</b></p>
<p>The search engine in the Activity toolbox just got better!&#160; Now you can search using command names or keywords and PowerWF will return the best matches based on the terms you provided.&#160; This includes searching with keywords that are only referenced in activity documentation and not in the command name itself.&#160; For example, if you’re a VMware administrator, simply entering “vMotion” into the search box will reveal the MoveVM activity that is necessary to perform vMotion tasks.</p>
<p><strong>Product-Specific Profile Support</strong> </p>
<p>PowerWF now uses its own product-specific profile support, and it updates the $profile variable to include the paths to each of the relevant profiles that you use. By default the PowerWF profile dot-sources the native PowerShell console profile, however you can change this behaviour as required by simply modifying the profile yourself in PowerSE.</p>
<h4>PowerSE 2.7 Highlights</h4>
<p><b>Easier Breakpoint Management</b></p>
<p>Breakpoint management in PowerSE just got a lot easier.&#160; PowerSE now includes a Breakpoints pane to allow you to see all breakpoints you have set in your scripting environment, and you can now manage breakpoints using the breakpoint cmdlets and see the breakpoints you have created in the Breakpoints pane.&#160; This gives you easy creation of line breakpoints using the Toggle Breakpoint feature or command and variable breakpoints using the Set-PSBreakpoint cmdlet (or sbp alias for short).</p>
<p><b>Breakpoints Preserved Across Sessions</b></p>
<p>Breakpoints are now automatically preserved across sessions, allowing you to continue debugging your scripts from one session to the next.&#160; They are also preserved when you close a file, so you won’t have to reset breakpoints each time you return to a script you were working on.&#160; You can still remove breakpoints of course, using the Toggle Breakpoint feature or the Remove-PSBreakpoint cmdlet.</p>
<p><b>Improved Help Search</b></p>
<p>PowerShell help topic files are now included in the help search pane, allowing you to search for help for integral keywords like if or foreach, or for topics like “Advanced functions”, or you can learn more about remoting by searching for “Remote”.&#160; Also, if no results are found when you search, PowerSE will now include a keyword search in command descriptions to allow for users to discover commands using related terms, such as “vMotion”.</p>
<p><strong>Product-Specific Profile Support</strong></p>
<p>PowerSE now uses its own product-specific profile support, and it updates the $profile variable to include the paths to each of the relevant profiles that you use.&#160; By default the PowerSE profile dot-sources the native PowerShell console profile, however you can change this behaviour as required by simply modifying the profile yourself in PowerSE.</p>
<h4>And that’s not all!</h4>
<p>This shows you a few of the highlights of this release, but of course there were plenty of bug fixes, some performance improvements, and a few other minor enhancements that were included as well.&#160; Whether you’re a current PowerWF or PowerSE customer, or someone who is looking for great tools for working with PowerShell, Workflow, and Management Packs, I strongly encourage you to give this release a try and let us know what you think.</p>
<p>Kirk out.</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d75ac868-7c3d-4caf-8aa1-d0c95970ea52" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/PowerShell" rel="tag">PowerShell</a>,<a href="http://technorati.com/tags/PoSh" rel="tag">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic" rel="tag">Poshoholic</a>,<a href="http://technorati.com/tags/PowerWF" rel="tag">PowerWF</a>,<a href="http://technorati.com/tags/PowerSE" rel="tag">PowerSE</a>,<a href="http://technorati.com/tags/SCSM" rel="tag">SCSM</a>,<a href="http://technorati.com/tags/management+pack" rel="tag">management pack</a>,<a href="http://technorati.com/tags/workflow" rel="tag">workflow</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2012/01/24/powerwf-and-powerse-2-7-are-now-available/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>Essential PowerShell: To alias, or not to alias, that is the question</title>
		<link>https://poshoholic.com/2012/01/05/essential-powershell-to-alias-or-not-to-alias-that-is-the-question/</link>
					<comments>https://poshoholic.com/2012/01/05/essential-powershell-to-alias-or-not-to-alias-that-is-the-question/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Thu, 05 Jan 2012 14:30:00 +0000</pubDate>
				<category><![CDATA[Essential PowerShell]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[alias]]></category>
		<category><![CDATA[New-Alias]]></category>
		<category><![CDATA[PoSh]]></category>
		<category><![CDATA[Poshoholic]]></category>
		<category><![CDATA[Set-Alias]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=738</guid>

					<description><![CDATA[Recently there was a discussion between community experts and a product team about a module they are working on.&#160; The topic being discussed was cmdlet aliases: whether or not they should provide aliases for their cmdlets out of the box and if so, how they should be provided.&#160; Aliases are great for ad-hoc PowerShell work,&#8230; <a class="more-link" href="https://poshoholic.com/2012/01/05/essential-powershell-to-alias-or-not-to-alias-that-is-the-question/">Continue reading <span class="screen-reader-text">Essential PowerShell: To alias, or not to alias, that is the&#160;question</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Recently there was a discussion between community experts and a product team about a module they are working on.&#160; The topic being discussed was cmdlet aliases: whether or not they should provide aliases for their cmdlets out of the box and if so, how they should be provided.&#160; Aliases are great for ad-hoc PowerShell work, which is what most PowerShell users do at this point, and incredibly useful when you’re trying to put out a fire and managing your infrastructure using PowerShell.&#160; However, there are many important things that module authors need to consider when planning aliases for their cmdlets, as follows:</p>
<p>1. There are many cmdlets out now, and more and more every month.&#160; Coming up with a vsa (very short alias) that is <em>unique</em> is a challenge at best, and the more time goes by the more tla&#8217;s (three-letter aliases) will get used up.&#160; The likelihood of an alias conflict is already high, and increasing all the time given the number of commands that are available both from Microsoft and from third party vendors.</p>
<p>2. The land grab with alias names is worse than it is with functions or cmdlets.&#160; With functions or cmdlets, you can have multiple modules loaded with conflicting names and access either command using the fully qualified command name.&#160; With aliases though you are not provided this same capability – there can be only one.&#160; Aliases are simply commands set to a single value and they cannot be qualified using a module name qualifier to disambiguate if a name conflict arises.</p>
<p>3. Depending on how careful (or not) that developers are, it is very easy for a module author to completely take over (overwrite) an existing alias with no warning or message indicating that this has happened, resulting in potential command hijacking between module teams.&#160; A simple call to Set-Alias does this without warning.&#160; On the flipside, if developers don’t hijack aliases, then some of the aliases they would otherwise create may simply not be defined.</p>
<p>4. When aliases are hijacked, unloading a module doesn&#8217;t correct the problem because an alias that was overwritten by a module alias will simply become completely unavailable when the alias is removed as the module is unloaded.</p>
<p>As far as I am aware, this situation does not improve with the next version of PowerShell either, so it&#8217;s years away from getting better.</p>
<p>Believe it or not, even with these things in mind, I&#8217;m actually still pro aliases.&#160; I just think that some extra care/thought needs to be put into their definition.&#160; There is no real standard here that both satisfactorily addresses the issues identified above and that allows for consistency across companies/teams at this time.&#160; Given that is the current state of affairs, if you are considering aliases for your module I recommend one of the following approaches:</p>
<p>1. [SAFEST] Rather than trying to come up with something that can be shipped despite these issues, at this time I think aliases would be best addressed in a &quot;tips and tricks&quot; type of blog post, proposing a short script that defines some useful aliases for the module/snapin in question in order to allow admins to be able to deal with fires quickly using ad-hoc PowerShell commands via some aliases.&#160; Such a script should generate warnings whenever a name conflict is discovered so that users are aware when an alias either cannot be created or is overwritten.</p>
<p>2. [EXPERIMENTAL] Ship aliases with your module, but try to make sure they really are unique.&#160; For example, if you’re a vendor whose company name starts with Q, you could prefix all of your aliases with &quot;q&quot;.&#160; This is attractive because there are no verbs that start with &quot;q&quot;, so right from the start you&#8217;ve dramatically reduced the chance that you&#8217;ll have a conflict, setting yourselves up better to have aliases that belong to you.&#160; Then you would only have to coordinate within your company to make sure the aliases used across teams are unique.&#160; This isn’t foolproof though because there may be multiple products/vendors that adopt the same standard, and if the name of your company or product starts with G, the likelihood of a conflict would be much higher (the alias prefix used for &quot;get-*&quot; cmdlets is &quot;g&quot;) so you may want to choose a pair of letters instead.&#160; Regardless, you&#8217;ve likely reduced the risk, and you could generate a warning whenever you run into a conflict that prevents an alias from being created.</p>
<p>3. [RECOMMENDED] Lots of 1 and a little bit of 2: use unique alias names that work for your product team/company, but don&#8217;t ship them with the module.&#160; Instead, push them out as a value add on a blog post, and see how the community responds.&#160; At the same time work with MVPs and Microsoft to get these issues addressed such that a shorthand system for command names does work.&#160; Some MVPs, already proposed a few things to the Microsoft PowerShell team that could help here (aliases for module names for one &#8212; think PS\gsv for a core PowerShell version of Get-Service or EX\gu for the Get-User cmdlet that comes with the Microsoft Exchange module or AD\gu for the Get-User cmdlet that comes with the Microsoft Active Directory module, and so on), but more discussions need to happen and this will take more time.</p>
<p>I recommend the third option because given the current issues with alias hijacking and with no support for disambiguation, it seems to be the best solution for now (from my perspective at least).&#160; If you have come up with other alternatives that resolve these issues, please share them with the community so that this improves going forward.</p>
<p>Hope this helps,</p>
<p>Kirk out.</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2b5f7e32-5541-4122-b392-b23aaf4e027d" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/PowerShell" rel="tag">PowerShell</a>,<a href="http://technorati.com/tags/PoSh" rel="tag">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic" rel="tag">Poshoholic</a>,<a href="http://technorati.com/tags/Essential+PowerShell" rel="tag">Essential PowerShell</a>,<a href="http://technorati.com/tags/alias" rel="tag">alias</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2012/01/05/essential-powershell-to-alias-or-not-to-alias-that-is-the-question/feed/</wfw:commentRss>
			<slash:comments>15</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>PowerShell MVP for 2012</title>
		<link>https://poshoholic.com/2012/01/04/powershell-mvp-for-2012/</link>
					<comments>https://poshoholic.com/2012/01/04/powershell-mvp-for-2012/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Wed, 04 Jan 2012 17:51:39 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Microsoft MVP]]></category>
		<category><![CDATA[PoSh]]></category>
		<category><![CDATA[Poshoholic]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/?p=740</guid>

					<description><![CDATA[Every year around Christmas I anxiously await the New Year to see if I receive the Microsoft MVP award again that year.&#160; Well that email came on January 1, 2012, and I’m quite thrilled about this one because it’s a milestone this time (year 5 as a PowerShell MVP).&#160; Thanks to the community for being&#8230; <a class="more-link" href="https://poshoholic.com/2012/01/04/powershell-mvp-for-2012/">Continue reading <span class="screen-reader-text">PowerShell MVP for&#160;2012</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Every year around Christmas I anxiously await the New Year to see if I receive the Microsoft MVP award again that year.&#160; Well that email came on January 1, 2012, and I’m quite thrilled about this one because it’s a milestone this time (year 5 as a PowerShell MVP).&#160; Thanks to the community for being so great to work with, and thanks to Microsoft both for recognizing individual efforts with the MVP program and for creating such great products like Windows PowerShell!&#160; Work has never been so much fun!</p>
<p>Kirk out.</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5ee81159-5537-461a-8750-95d6cfe48fab" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/PowerShell" rel="tag">PowerShell</a>,<a href="http://technorati.com/tags/PoSh" rel="tag">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic" rel="tag">Poshoholic</a>,<a href="http://technorati.com/tags/Microsoft+MVP" rel="tag">Microsoft MVP</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2012/01/04/powershell-mvp-for-2012/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>PowerSE 2.5.3 is now available</title>
		<link>https://poshoholic.com/2011/10/14/powerse-2-5-3-is-now-available/</link>
					<comments>https://poshoholic.com/2011/10/14/powerse-2-5-3-is-now-available/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Fri, 14 Oct 2011 15:02:05 +0000</pubDate>
				<category><![CDATA[Devfarm]]></category>
		<category><![CDATA[PowerSE]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PowerVI]]></category>
		<category><![CDATA[PowerWF]]></category>
		<category><![CDATA[PoSh]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/2011/10/14/powerse-2-5-3-is-now-available/</guid>

					<description><![CDATA[A little over a week ago we released PowerSE 2.5.3 to the web.&#160; You can download the latest release here.&#160; This release includes many great improvements to the PowerSE product, many of which were requested by you, so thanks for your feedback and please keep it coming! No time limit for freeware With this release,&#8230; <a class="more-link" href="https://poshoholic.com/2011/10/14/powerse-2-5-3-is-now-available/">Continue reading <span class="screen-reader-text">PowerSE 2.5.3 is now&#160;available</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>A little over a week ago we released <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE 2.5.3</a> to the web.&#160; You can download the latest release <a href="http://powerwf.com/products/powerse.aspx" target="_blank">here</a>.&#160; This release includes many great improvements to the <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> product, many of which were requested by you, so thanks for your feedback and please keep it coming!</p>
<h4>No time limit for freeware</h4>
<p>With this release, we’ve removed the requirement to re-download this product every 60 days.&#160; This was our number one feature request since we made <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> a freeware product.&#160; Now when you download <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> 2.5.3, it is truly freeware and you can use it as long as you like!</p>
<h4>PowerVI Integration</h4>
<p>Since <a href="http://powerwf.com/products/powerscripter.aspx" target="_blank">PowerVI</a> has joined the Devfarm family of products, we have now improved the integration between <a href="http://powerwf.com/products/powerscripter.aspx" target="_blank">PowerVI</a> and <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> and <a href="http://powerwf.com/products/powerwf.aspx" target="_blank">PowerWF</a>. This enables easier authoring and testing of VMware automation scripts and workflows before you publish them to be integrated in the vSphere client, and it highlights one of the greatest values of the Devfarm products – the rich integration between them that make everything much easier.</p>
<h4><strong>Tabs to spaces support</strong></h4>
<p>We’ve added support for configuring how tabs are used in the <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> Script Editor.&#160; If you want spaces inserted when you press the Tab key while editing scripts, all you need to do is to set $psise.Settings.AutoConvertTabsToSpaces to $true in the embedded console.&#160; If you want the tab size to be something other than the default value of 4, you simply set $psise.Settings.TabSize to the number of spaces you want to use for tab characters.&#160; These only need to be set once, so you can simply make the calls in the embedded console and then you’ll always have it configured that way going forward.</p>
<h4>Enhanced history pane</h4>
<p>The history pane in <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> has always been useful, but now it’s much better!&#160; With the history pane in <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> 2.5.3, you can identify which commands were successful and which were not, all at a glance by looking at the icon.&#160; You can also tell which commands were allowed to run to completion and which were cancelled.&#160; Most importantly, you can identify the duration of any command that you run, so if you are trying to get the most performance from your scripts, this is an easy way to compare the performance for several related commands so that your scripts run as fast as they can.</p>
<h4>Greatly improved support for international environments</h4>
<p>In previous releases of <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a>, there were a number of defects preventing international keyboard layouts (i.e. those other than “US English”) from working properly in the embedded console.&#160; Those defects have been fixed, so now you can use the embedded console with international keyboards just fine.</p>
<p>We also added support for Unicode characters to the embedded console, making it easier for customers to get the output they expect regardless of where they happen to be.</p>
<h4>Multi-select support in the File|Open dialog</h4>
<p>With <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> 2.5.3, you can open multiple files in one folder at once by simply selecting the files you want before you click on the Open button.&#160; This can be a big timesaver when you are working with modules containing many files!</p>
<h4>Smarter variable Intellisense</h4>
<p>When you enter a variable name in a script, it can be difficult to determine if you are entering the name of an existing variable or if you are creating a new variable.&#160; Previous releases would sometimes complete a variable name incorrectly when you were in fact creating a new variable name.&#160; This shouldn’t be a problem any longer, because we now allow you to enter new variable names and the auto-completion should only happen when you want it to happen.</p>
<h4>Proper ps1xml file support</h4>
<p>In <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> 2.5.3, if you are working with ps1xml files, you will now get proper Intellisense as well as auto-completion of xml elements as you would expect.</p>
<h4>Fast clearing of the embedded console window</h4>
<p>In today’s era of PowerShell, we all want to do more in less time, so much so that even typing in cls in the embedded console and pressing Enter can be cumbersome when you do it repeatedly.&#160; <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> 2.5.3 allows you to clear the embedded console window at any time by simply pressing Ctrl+Del.</p>
<h4>And more…</h4>
<p>This is just a short list of some of the key changes we have made in this release.&#160; There are others that I want to talk about, but I’m going to save a few for follow-up blog posts.&#160; We’ve been spending a lot of time on <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> recently, and between our hard work and your great feedback, we’ve built a fantastic, best-in-class PowerShell script editor!&#160; If you write PowerShell scripts, I encourage you to give this release a try, and be sure to let us know what you think!&#160; Also, if you have any questions, feel free to leave me a note on my blog or pop over to <a href="http://www.devfarm.com">www.devfarm.com</a> and ask us directly in the chat window.&#160; We’re always listening!</p>
<p>Thanks,</p>
<p>Kirk out.</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ec8effe3-115b-4187-ad5b-c7669e46eec4" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/PowerShell" rel="tag">PowerShell</a>,<a href="http://technorati.com/tags/PoSh" rel="tag">PoSh</a>,<a href="http://technorati.com/tags/PowerSE" rel="tag">PowerSE</a>,<a href="http://technorati.com/tags/PowerWF" rel="tag">PowerWF</a>,<a href="http://technorati.com/tags/PowerVI" rel="tag">PowerVI</a>,<a href="http://technorati.com/tags/Devfarm" rel="tag">Devfarm</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2011/10/14/powerse-2-5-3-is-now-available/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>Seasons of change: new Product Manager for PowerWF&#8482; and PowerSE at Devfarm Software</title>
		<link>https://poshoholic.com/2011/09/06/seasons-of-change-new-product-manager-for-powerwf-and-powerse-at-devfarm-software/</link>
					<comments>https://poshoholic.com/2011/09/06/seasons-of-change-new-product-manager-for-powerwf-and-powerse-at-devfarm-software/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Tue, 06 Sep 2011 19:24:56 +0000</pubDate>
				<category><![CDATA[Devfarm]]></category>
		<category><![CDATA[PowerSE]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PowerWF]]></category>
		<category><![CDATA[PoSh]]></category>
		<category><![CDATA[Poshoholic]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/2011/09/06/seasons-of-change-new-product-manager-for-powerwf-and-powerse-at-devfarm-software/</guid>

					<description><![CDATA[I always enjoy this time of year.&#160; There is something about the transition that happens over Labour Day weekend that always gets me excited.&#160; Maybe it’s a lingering feeling of anticipation over the new year at school or university from years gone by, a feeling that I can still appreciate these days as I watch&#8230; <a class="more-link" href="https://poshoholic.com/2011/09/06/seasons-of-change-new-product-manager-for-powerwf-and-powerse-at-devfarm-software/">Continue reading <span class="screen-reader-text">Seasons of change: new Product Manager for PowerWF&#8482; and PowerSE at Devfarm&#160;Software</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>I always enjoy this time of year.&#160; There is something about the transition that happens over Labour Day weekend that always gets me excited.&#160; Maybe it’s a lingering feeling of anticipation over the new year at school or university from years gone by, a feeling that I can still appreciate these days as I watch my kids getting excited about their education and the new activities they will sign up for this fall.&#160; Regardless, it’s always a fun time of year for me.</p>
<p>This year though I have some extra reasons of my own to be even more excited.&#160; As of this morning, I am now working as Product Manager for the <a href="http://powerwf.com/" target="_blank">PowerWF</a> and <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> products at <a href="http://devfarm.com" target="_blank">Devfarm Software</a>!&#160; I am absolutely thrilled about this new position!&#160; <a href="http://devfarm.com" target="_blank">Devfarm</a> has a great team and a great set of products, and I’m really happy to be able to help them drive those products forward.</p>
<p>With this news, today marks the end of a month that included some vacation time, some time to step back and refocus, and some time for reflection on what to do next.&#160; During this time I received a ton of support from friends and followers in the PowerShell community, and for that I am very grateful.&#160; This support helped one particular sentiment that I came across stay with me:</p>
<blockquote>
<p>You know for a (while) I (wondered if) going back to the amazing experience of (PowerShell) wouldn&#8217;t be a good idea, but really now I&#8217;ve come completely around because (software can be) stressful and hard to make but ultimately what makes (it) fun is the people that you work with, and the fact that (I’m) going to be working with a lot of the old gang, with a lot of friends, and obviously making some new friends is really the point of being here, so I&#8217;m extremely thrilled.<sup>1</sup></p>
</blockquote>
<p>This really represents how I have felt since my departure from my last job as Product Manager for PowerGUI.&#160; I really love PowerShell as a technology, but as great as that technology is, it just wouldn’t be the same without the community that surrounds it.&#160; PowerShell is blessed to have a tremendous community, and I am very, very proud to be able to continue to participate in that same community as a Product Manager for some really cool products that use PowerShell, as a PowerShell MVP, and as a geek who fell in love with technology a long time ago.</p>
<p>Now that I’ve found my new direction and focus, it’s time to get down to business.&#160; Whether you’re a current user of <a href="http://powerwf.com/" target="_blank">PowerWF</a> or <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a> or someone who is interested in trying <a href="http://powerwf.com/" target="_blank">PowerWF</a> or <a href="http://powerwf.com/products/powerse.aspx" target="_blank">PowerSE</a>, I’d love to connect with you to hear what you like (or don’t like) about these products as well as what you would like to see added to them in the future.&#160; Feel free to reach out to me at any time either in my blog comments or by using the <a href="https://poshoholic.com/contact-me/" target="_blank">Contact Me</a> form on my blog.&#160; I’m really looking forward to working with you.</p>
<p>Kirk out.</p>
<p><sup>1 </sup>Paraphrased from Peter Jackson’s speech on the first day of filming for “The Hobbit”; his exact speech can be heard here: <a href="http://www.youtube.com/watch?v=LqzJ1LFh6x0&amp;hd=1&amp;t=9m15s" target="_blank">http://www.youtube.com/watch?v=LqzJ1LFh6x0&amp;hd=1&amp;t=9m15s</a>.</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5f9bbae1-902c-4ffe-a94a-e87e264238b2" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/PowerShell" rel="tag">PowerShell</a>,<a href="http://technorati.com/tags/PoSh" rel="tag">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic" rel="tag">Poshoholic</a>,<a href="http://technorati.com/tags/PowerWF" rel="tag">PowerWF</a>,<a href="http://technorati.com/tags/PowerSE" rel="tag">PowerSE</a>,<a href="http://technorati.com/tags/Devfarm" rel="tag">Devfarm</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2011/09/06/seasons-of-change-new-product-manager-for-powerwf-and-powerse-at-devfarm-software/feed/</wfw:commentRss>
			<slash:comments>15</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>
	</item>
		<item>
		<title>One for the road: Stepping away from PowerGUI&#174;</title>
		<link>https://poshoholic.com/2011/07/28/one-for-the-road/</link>
					<comments>https://poshoholic.com/2011/07/28/one-for-the-road/#comments</comments>
		
		<dc:creator><![CDATA[Kirk Munro]]></dc:creator>
		<pubDate>Fri, 29 Jul 2011 04:01:30 +0000</pubDate>
				<category><![CDATA[PowerGUI]]></category>
		<category><![CDATA[PowerGUI Pro]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PoSh]]></category>
		<category><![CDATA[Poshoholic]]></category>
		<guid isPermaLink="false">http://kirkmunro.wordpress.com/2011/07/28/one-for-the-road/</guid>

					<description><![CDATA[Today was one of my most difficult days in my 7½+ year career at Quest Software.&#160; The same week that I was given a performance raise (I got that email on Monday), this afternoon I got a phone call from the director over my business unit letting me know that my position has been cut&#8230; <a class="more-link" href="https://poshoholic.com/2011/07/28/one-for-the-road/">Continue reading <span class="screen-reader-text">One for the road: Stepping away from&#160;PowerGUI&#174;</span> <span class="meta-nav" aria-hidden="true">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Today was one of my most difficult days in my 7½+ year career at Quest Software.&#160; The same week that I was given a performance raise (I got that email on Monday), this afternoon I got a phone call from the director over my business unit letting me know that my position has been cut effective immediately.&#160; Part of a book balancing effort it seems &#8211;&#160; funny (or not so much) how life works sometimes.</p>
<p>I’ve accomplished a lot while working at Quest, and spent a ton of professional and personal energy on the company and its products, particularly <a title="PowerGUI.org" href="http://www.powergui.org" target="_blank">PowerGUI</a> (far too much energy if you ask my wife, and today I must say I’m tending to agree).</p>
<p>Since I started working with the PowerGUI team at Quest back in 2007 (back in the version 1.0.x days) I have:</p>
<ul>
<li>been awarded the Microsoft MVP award for my community support Windows PowerShell four years in a row </li>
<li>received recognition as a Quest Software expert in Windows Management (only 1% of the company employees have received this recognition) </li>
<li>provided feedback and direction over the product and its features through 3 major release cycles and many minor releases </li>
<li>supported the product and the community as a PowerPack developer, then as a PowerShell Solutions Architect, and most recently as the Product Manager (although I never could get those other positions backfilled so I ended up wearing all three hats most of the time) </li>
<li>released dozens of extensions for the product, including PowerPacks for platforms such as Active Directory, VMware, Hyper-V, and Exchange, and Add-ons such as the <a title="PowerGUI Script Editor Essentials Add-on" href="http://www.powergui.org/entry.jspa?externalID=2952" target="_blank">Script Editor Essentials</a> Add-on or others for specific features such as script signing, transcription, the PowerShell blue console theme, and many more </li>
<li>pushed the number of commercial features in PowerGUI Pro from two when I took over as Product Manager to over six in the current version with many more on the way </li>
<li>initiated strategic partnerships with key enterprises such as NetApp and Intel and helped them create their own PowerPacks for their platforms </li>
<li>helped drive traffic to the <a title="PowerGUI.org" href="http://www.powergui.org/entry.jspa?externalID=3523" target="_blank">powergui.org</a> site through my blog and through social media as we grew the number of downloads from 100000 to over 1.2 million </li>
<li>provided feedback and direction to internal teams at Quest with PowerShell support in their products </li>
<li>successfully presented well-received PowerShell-focused sessions at many user groups and also at conferences such as Microsoft TechEd, the TEC conference, the PowerShell Deep Dive (a mini-conference in the TEC conference), and TechDays Canada </li>
<li>been elected as President for the <a href="http://powershellcommunity.org" target="_blank">PowerShellCommunity.org</a> site </li>
<li>coordinated and provided direction over the first ever PowerShell Deep Dive conference</li>
</ul>
<p>Unfortunately, most of that is now a legacy as it came to an abrupt end today.&#160; I’m still a PowerShell MVP, and I will still be involved with the PowerShell community, however my work on PowerGUI has stopped for now.</p>
<p>Before I step back from this though, and before I reorganize/refocus my efforts onto more important things, I wanted to share one more new PowerGUI feature that I recently created for the community that I have spent so much time with these past 4 years.&#160; I still have a strong affinity for PowerGUI and a lot of my heart and soul has gone into this product, and this feature is just a small example of that effort.&#160; The new feature comes as part of the <a title="PowerGUI Script Editor Call Stack Window Add-on" href="http://www.powergui.org/entry.jspa?categoryID=387&amp;externalID=3641" target="_blank">Call Stack Window add-on</a> that I just published in the PowerGUI Add-on library.&#160; Here’s a screenshot showing you what this add-on looks like in action:</p>
<p><a title="PowerGUI Script Editor Call Stack Window Add-on" href="http://www.powergui.org/entry.jspa?categoryID=387&amp;externalID=3641" target="_blank"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="PowerGUI Script Editor Call Stack Window" border="0" alt="PowerGUI Script Editor Call Stack Window" src="https://poshoholic.com/wp-content/uploads/2011/07/debugwindows-callstack.png?w=604&#038;h=422" width="604" height="422" /></a></p>
<p>This add-on adds a call stack window to your PowerGUI Script Editor every time you start debugging a script. Working with a call stack while you debug anything beyond the most simple of scripts is essential because it provides you with a list of all nested calls that led up to the current line of script in your debug session. You can use this to determine where functions are being called from by setting a breakpoint inside a function and then walking up the call stack to see the script used to call the function. Also, this window has double-click support, so if you would like to go to any location in the call stack, simply double-click on the location you wish to see and the add-on will take you there, even if the file in question isn’t open at the time.</p>
<p>I was considering putting this feature in the Pro version in a future release, but that is beyond my control now so I decided I’d share what I have today and let you guys have fun with it.&#160; Since I created the feature in this add-on, it’s been an incredibly useful feature to me and I hope you guys enjoy it as well.&#160; To get this Add-on, simply select Tools | Find Add-ons Online in your PowerGUI Script Editor and search for “Call Stack”.</p>
<p>That will most likely be my last PowerGUI-centric post for a while, and it will be my last post for at least a week while I take a much needed vacation before moving on to new things.</p>
<p>Thank you for your continued support through the past four years.&#160; I hope this post finds you well.</p>
<p>Sincerely,</p>
<p>Kirk Munro    <br />Former Product Manager of PowerGUI Pro and PowerGUI</p>
<p>P.S. If you are in need of someone with my skills, either as a Product Manager, a PowerShell MVP, an expert in Windows management (with a strong focus on Active Directory and Exchange although I’ve also gotten deeply involved in virtualization with Hyper-V and VMware as well), a social media/community site manager, or as a freelance writer, my schedule has all of a sudden become much less busy and I’m interested in filling up that time with new work once I come back from vacation, so please get in touch.</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0178f967-c3c1-4ee6-a57f-3874a8d83b3f" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/PowerShell" rel="tag">PowerShell</a>,<a href="http://technorati.com/tags/PoSh" rel="tag">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic" rel="tag">Poshoholic</a>,<a href="http://technorati.com/tags/PowerGUI+Pro" rel="tag">PowerGUI Pro</a>,<a href="http://technorati.com/tags/PowerGUI" rel="tag">PowerGUI</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://poshoholic.com/2011/07/28/one-for-the-road/feed/</wfw:commentRss>
			<slash:comments>34</slash:comments>
		
		
		
		<media:content url="https://1.gravatar.com/avatar/d6343fee1903a0ef9eea9ebae9543bbb3a2403cc6d8c37146e3642c15669a920?s=96&#38;d=https%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Poshoholic</media:title>
		</media:content>

		<media:content url="https://poshoholic.com/wp-content/uploads/2011/07/debugwindows-callstack.png" medium="image">
			<media:title type="html">PowerGUI Script Editor Call Stack Window</media:title>
		</media:content>
	</item>
	</channel>
</rss>
