<?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/"
	>

<channel>
	<title>Ryan Cromwell &#187; Powershell</title>
	<atom:link href="http://blog.cromwellhaus.com/index.php/category/powershell/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.cromwellhaus.com</link>
	<description>Improving my craft...</description>
	<lastBuildDate>Tue, 07 Feb 2012 15:06:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Real World Webcast Series for TFS 2010</title>
		<link>http://blog.cromwellhaus.com/2011/02/real-world-webcast-series-for-tfs-2010/</link>
		<comments>http://blog.cromwellhaus.com/2011/02/real-world-webcast-series-for-tfs-2010/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 21:09:03 +0000</pubDate>
		<dc:creator>cromwellryan</dc:creator>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://blog.cromwellhaus.com/2011/02/real-world-webcast-series-for-tfs-2010/</guid>
		<description><![CDATA[I and a few coworkers are running a twice monthly web series starting February 10th.&#160; This series will touch on the opportunities we’ve been involved in to ease real world situations. If you are working with Team Foundation Server 2010 and are interested in making your life a little easier I invite you to come [...]]]></description>
			<content:encoded><![CDATA[<p>I and a few coworkers are running a twice monthly web series starting February 10th.&#160; This series will touch on the opportunities we’ve been involved in to ease real world situations.</p>
<p>If you are working with Team Foundation Server 2010 and are interested in making your life a little easier I invite you to come listen to what I and others have to say.&#160; We’ll do everything we can to keep the schedule tight to 1 hour, but we are always available offline.</p>
<p><strong><a href="https://www.clicktoattend.com/invitation.aspx?code=153495">Automating Team Foundation Server with PowerShell</a>&#160;</strong>Feb 10th, 12pm EST</p>
<p>System administration can be slow and inconsistent when performed manually, or quick and easy when automated. Learn to use PowerShell with TFS to script away that wasted time.</p>
<p>&#160;</p>
<p><a href="http://www.clicktoattend.com/?id=153441"><strong>Continuous Deployment with Team Build and MSDeploy</strong></a> Feb 24th, 12pm EST</p>
<p>Caffeine, pizza, and anxiety are regular tools for a production deployment. Watch and learn how Team Foundation Build 2010 and MSDeploy can turn the last hurdle of software development into a moment of Zen.</p>
<p>&#160;</p>
<p><a href="http://www.clicktoattend.com/?id=153440"><strong>Planning and Executing Manual Tests with Visual Studio Test Professional 2010</strong></a><strong>&#160;</strong>Mar 10th, 12pm EST</p>
<p>Visual Studio Test Professional 2010 makes a real impact on software quality. It’s an integrated testing solution that delivers a complete plan-test-track workflow. It allows the user to quickly identify quality-related bugs and easily report them with rich, actionable information. In this session, we&#8217;ll review test planning and manual testing with Visual Studio Test Professional 2010. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cromwellhaus.com/2011/02/real-world-webcast-series-for-tfs-2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>1 reason to stick with Windows Virtual PC</title>
		<link>http://blog.cromwellhaus.com/2009/07/1-reason-to-stick-with-windows-virtual-pc/</link>
		<comments>http://blog.cromwellhaus.com/2009/07/1-reason-to-stick-with-windows-virtual-pc/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 01:27:28 +0000</pubDate>
		<dc:creator>cromwellryan</dc:creator>
				<category><![CDATA[OS]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Virtual PC]]></category>

		<guid isPermaLink="false">/blogs/ryanc/archive/2009/07/09/1-reason-to-stick-with-windows-virtual-pc.aspx</guid>
		<description><![CDATA[For those who aren’t aware, Windows 7 (which I absolutely love) has the ability to mount and run native Virtual PC VHD’s.&#160; This is huge, but it isn’t exactly a cake walk.&#160; That is until now!&#160; DevHawk has provided a PowerShell script to make life beautiful.&#160; Never complain about your Virtual machine performance again… get [...]]]></description>
			<content:encoded><![CDATA[<p>For those who aren’t aware, Windows 7 (which I absolutely love) has the ability to mount and run native Virtual PC VHD’s.&#160; This is huge, but it <a href="http://www.hanselman.com/blog/LessVirtualMoreMachineWindows7AndTheMagicOfBootToVHD.aspx" target="_blank">isn’t exactly a cake walk</a>.&#160; That is until now!&#160; <a href="http://devhawk.net/#" target="_blank">DevHawk</a> has <a href="http://devhawk.net/2009/06/18/AddBcdVhdps1.aspx" target="_blank">provided a PowerShell script</a> to make life beautiful.&#160; Never complain about your Virtual machine performance again… get (all but disk) native performance.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cromwellhaus.com/2009/07/1-reason-to-stick-with-windows-virtual-pc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PowerShell Profile on Roaming Profile</title>
		<link>http://blog.cromwellhaus.com/2007/06/powershell-profile-on-roaming-profile/</link>
		<comments>http://blog.cromwellhaus.com/2007/06/powershell-profile-on-roaming-profile/#comments</comments>
		<pubDate>Wed, 27 Jun 2007 16:39:48 +0000</pubDate>
		<dc:creator>cromwellryan</dc:creator>
				<category><![CDATA[Powershell]]></category>

		<guid isPermaLink="false">/blogs/ryanc/archive/2007/06/27/powershell-profile-on-roaming-profile.aspx</guid>
		<description><![CDATA[NOTE:&#160;Impatience&#160;just leads to&#160;frustration. When I first starting playing with PowerShell here at the office, I was all excited to start adding little cmdlets to my personal profile and add to my stellar productivity (tongue firmly planted in check).&#160; This would hopefully reduce the net loss incurred by my learning PowerShell in the first place.&#160; So [...]]]></description>
			<content:encoded><![CDATA[<p>NOTE:&nbsp;Impatience&nbsp;just leads to&nbsp;frustration.</p>
<p>When I first starting playing with PowerShell here at the office, I was all excited to start adding little cmdlets to my personal profile and add to my stellar productivity (tongue firmly planted in check).&nbsp; This would hopefully reduce the net loss incurred by my learning PowerShell in the first place.&nbsp; </p>
<p>So I took the first step and created my empty profile:</p>
<blockquote><p><em>ps&gt; notepad $profile</em></p>
</blockquote>
<p>and added a nice little cmdlet to send email.&nbsp; This will replace that exe tool I&#8217;ve always used to send emails in batch files or just whenever I need to at the command prompt.</p>
<blockquote><p><em>$defaultSendMailHost = &#8220;emcrs71&#8243;<br />$defaultSendMailFrom = <a href="mailto:email@email.com">email@email.com</a> </em>
<p><em>function send-mail( [string] $to, [string] $subject, [string] $body )<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp; $smtp = new-object System.Net.Mail.SmtpClient<br />&nbsp;&nbsp;&nbsp;&nbsp; $smtp.Host = $defaultSendMailHost<br />&nbsp;&nbsp;&nbsp;&nbsp; $email = new-object System.Net.Mail.MailMessage<br />&nbsp;&nbsp;&nbsp;&nbsp; $email.From = $defaultSendMailFrom<br />&nbsp;&nbsp;&nbsp;&nbsp; $email.To.Add( $to )<br />&nbsp;&nbsp;&nbsp;&nbsp; $email.Subject = $subject<br />&nbsp;&nbsp;&nbsp;&nbsp; $email.Body = $body<br />&nbsp;&nbsp;&nbsp;&nbsp; $smtp.Send( $email )<br />}</em></p>
</blockquote>
<p>Start it up again and WHAM&#8230;&nbsp;</p>
<blockquote><p><font face="Courier" color="#ff0000">File \\&lt;server&gt;\&lt;username&gt;\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1&nbsp;cannot be loaded. The file \\&lt;server&gt;\&lt;username&gt;\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 is not digitally signed. The script will not execute on the system. Please see &#8220;get-help about_signing&#8221; for more details.</font></p>
</blockquote>
<p>Sign <em>my </em>scripts?!&nbsp; How dare you!&nbsp; I was too annoyed to deal with it and took the ever so appalling step of changing the PowerShell Short cut to point to a local folder on my C drive.&nbsp; Please don&#8217;t stop reading as I&#8217;ve learned from my mistakes and have rectified my ways.</p>
<p>A few weeks later I ran across the <a href="http://www.codeplex.com/PowerShellCX/">PowerShell Community Extensions</a>, which I highly recommend PowerShell-er install and, in fact, replaced my send-mail cmdlet above.&nbsp; PSCX has an option to install it&#8217;s own profile which I chose, but after that I started receiving the Digital Signing guff.&nbsp; </p>
<p>In the end, I did what any good PowerShell-er with a growing Profile should do.&nbsp; I created a cmdlet to sign my profile.&nbsp; Now I can open PS, type edit-profile (or use my ep alias), save it, and hit sign-profile (sp alias) and I&#8217;m good to go.&nbsp; Here it is: </p>
<blockquote><p>function edit-profile()<br />{<br />&nbsp;&nbsp;&nbsp; notepad $profile<br />}
<p>function sign-profile()<br />{<br />&nbsp;&nbsp;&nbsp; dir $Profiledir\*.ps1 | foreach-object { sign-script $_.FullName }<br />}
<p>function sign-script( $scriptsource ) <br />{<br />&nbsp;&nbsp;&nbsp; get-item $scriptsource <br />&nbsp;&nbsp;&nbsp; Set-AuthenticodeSignature $scriptsource @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]<br />}
<p>set-alias sm Send-SmtpMail<br />set-alias ep edit-profile<br />set-alias sp sign-profile</p>
</blockquote>
<p>Now there is a little part I left out and that&#8217;s creating yourself a certificate, but <a href="http://www.hanselman.com/blog/">Scott Hanselman</a> has a very good <a href="http://www.hanselman.com/blog/SigningPowerShellScripts.aspx">post</a> that will walk you through this.</p>
<p><a href="http://technorati.com/claim/rgidkvtvc8" rel="me">Technorati Profile</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cromwellhaus.com/2007/06/powershell-profile-on-roaming-profile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Signing your Powershell Profile Scripts</title>
		<link>http://blog.cromwellhaus.com/2007/04/signing-your-powershell-profile-scripts/</link>
		<comments>http://blog.cromwellhaus.com/2007/04/signing-your-powershell-profile-scripts/#comments</comments>
		<pubDate>Mon, 23 Apr 2007 21:38:49 +0000</pubDate>
		<dc:creator>cromwellryan</dc:creator>
				<category><![CDATA[Powershell]]></category>

		<guid isPermaLink="false">/blogs/ryanc/archive/2007/04/23/signing-your-powershell-profile-scripts.aspx</guid>
		<description><![CDATA[Running with Set-ExecutionPolicy as AllSigned or&#160;Restricted with a roaming profile?&#160; Here&#8217;s a cmdlet pair that will sign all the scripts in your profile directory.&#160; Makes life easier on me as I include a number of scripts into my main profile for readability: function sign-profile(){&#160;&#160;&#160; dir $Profiledir\*.ps1 &#124; foreach-object { sign-script $_.FullName }} function sign-script( $scriptsource [...]]]></description>
			<content:encoded><![CDATA[<p>Running with <a href="http://www.microsoft.com/technet/scriptcenter/topics/msh/cmdlets/set-executionpolicy.mspx">Set-ExecutionPolicy</a> as AllSigned or&nbsp;Restricted with a roaming profile?&nbsp; Here&#8217;s a cmdlet pair that will sign all the scripts in your profile directory.&nbsp; Makes life easier on me as I include a number of scripts into my main profile for readability:</p>
<blockquote><p><em>function sign-profile()<br />{<br />&nbsp;&nbsp;&nbsp; dir $Profiledir\*.ps1 | foreach-object { sign-script $_.FullName }<br />} </em></p>
<p><em>function sign-script( $scriptsource ) <br />{<br />&nbsp;&nbsp;&nbsp; get-item $scriptsource <br />&nbsp;&nbsp;&nbsp; Set-AuthenticodeSignature $scriptsource @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]<br />}</em></p>
</blockquote>
<p>And if you aren&#8217;t already using Powershell, stop wasting your time with the Command Prompt and <a href="http://www.microsoft.com/powershell/download">go get it</a>.&nbsp; Don&#8217;t forget the <a href="http://www.codeplex.com/PowerShellCX/">Powershell Community Extensions</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cromwellhaus.com/2007/04/signing-your-powershell-profile-scripts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

