tag:blogger.com,1999:blog-82036995365444909402024-03-13T14:57:33.452-04:00FatBeard's Adventures in PowerShellAnonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.comBlogger97125tag:blogger.com,1999:blog-8203699536544490940.post-15013125232588369502012-08-18T14:20:00.000-04:002012-08-18T14:20:08.115-04:00PowerShell V3 - $PSDefaultParameterValuesOne of the new features of PowerShell V3 that I find very helpful is having the ability to automatically pass <a href="http://technet.microsoft.com/en-us/library/hh847819.aspx" target="_blank">default parameters to cmdlets or advanced functions.</a><br />
<div>
<br /></div>
<div>
Here are a few snippets of code that shows how to manipulate them. Simply include your default parameters in your profile and script on!<br />
<br /></div>
<pre class="PowerShellColorizedScript"><span style="color: darkgreen;"># Intitial creation (perhaps place in profile)</span>
<span style="color: orangered;">$PSDefaultParameterValues</span><span style="color: darkgrey;">=</span><span style="color: black;">@{</span>
<span style="color: darkred;">"Send-MailMessage:SMTPServer"</span><span style="color: darkgrey;">=</span><span style="color: darkred;">"smtp.osumc.edu"</span><span style="color: black;">;</span>
<span style="color: darkred;">"Send-MailMessage:From"</span><span style="color: darkgrey;">=</span><span style="color: darkred;">"Automated.Email@osumc.edu"</span><span style="color: black;">;</span>
<span style="color: darkred;">"Get-Eventlog:logname"</span><span style="color: darkgrey;">=</span><span style="color: darkred;">"Security"</span><span style="color: black;">;</span>
<span style="color: black;">}</span>
<span style="color: darkgreen;"># Add another one</span>
<span style="color: orangered;">$PSDefaultParameterValues</span><span style="color: darkgrey;">.</span><span style="color: black;">Add</span><span style="color: black;">(</span><span style="color: darkred;">"Send-MailMessage:Bcc"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"PhatBeard@osumc.edu"</span><span style="color: black;">)</span>
<span style="color: darkgreen;"># opps, need to modify the email address</span>
<span style="color: orangered;">$PSDefaultParameterValues</span><span style="color: darkgrey;">[</span><span style="color: darkred;">"Send-MailMessage:Bcc"</span><span style="color: darkgrey;">]</span><span style="color: darkgrey;">=</span><span style="color: darkred;">"FatBeard@osumc.edu"</span>
<span style="color: darkgreen;"># Add another one (straight out of Get-Help) that utilizes a scriptblock</span></pre>
<pre class="PowerShellColorizedScript"><span style="color: orangered;">$PSDefaultParameterValues</span><span style="color: darkgrey;">+=</span><span style="color: black;">@{</span><span style="color: darkred;">"Format-Table:AutoSize"</span><span style="color: darkgrey;">=</span><span style="color: black;">{</span><span style="color: darkblue;">if</span> <span style="color: black;">(</span><span style="color: orangered;">$host</span><span style="color: darkgrey;">.</span><span style="color: black;">Name</span> <span style="color: darkgrey;">–eq</span> <span style="color: darkred;">"ConsoleHost"</span><span style="color: black;">)</span><span style="color: black;">{</span><span style="color: orangered;">$true</span><span style="color: black;">}</span><span style="color: black;">}</span><span style="color: black;">}</span>
<span style="color: darkgreen;"># Remove one</span>
<span style="color: orangered;">$PSDefaultParameterValues</span><span style="color: darkgrey;">.</span><span style="color: black;">Remove</span><span style="color: black;">(</span><span style="color: darkred;">"Get-Eventlog:logname"</span><span style="color: black;">)</span>
<span style="color: darkgreen;"># Remove all of them</span>
<span style="color: orangered;">$PSDefaultParameterValues</span><span style="color: darkgrey;">.</span><span style="color: black;">Clear</span><span style="color: black;">(</span><span style="color: black;">)</span>
<span style="color: darkgreen;"># Temporarily disable all parameters</span>
<span style="color: orangered;">$PSDefaultParameterValues</span><span style="color: darkgrey;">.</span><span style="color: black;">Add</span><span style="color: black;">(</span><span style="color: darkred;">"Disabled"</span><span style="color: darkgrey;">,</span> <span style="color: orangered;">$true</span><span style="color: black;">)</span>
<span style="color: darkgreen;"># Remove the temporary disable</span>
<span style="color: orangered;">$PSDefaultParameterValues</span><span style="color: darkgrey;">.</span><span style="color: black;">Remove</span><span style="color: black;">(</span><span style="color: darkred;">"Disabled"</span><span style="color: black;">)</span></pre>
Enjoy!
Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com0tag:blogger.com,1999:blog-8203699536544490940.post-29835662437607822382012-08-14T21:30:00.001-04:002012-08-14T21:30:25.360-04:00Windows PowerShell for Developers by Douglas Finke; O’Reilly Media<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-LWy2LWz3NtM/UCr67QWgk6I/AAAAAAAAAU0/PzYJVjzjwCo/s1600/finke.gif" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" mda="true" src="http://1.bp.blogspot.com/-LWy2LWz3NtM/UCr67QWgk6I/AAAAAAAAAU0/PzYJVjzjwCo/s1600/finke.gif" /></a></div>
It is not often that a technical book makes you rethink how you think. Doug Finke (a Microsoft Most Valuable Professional) has achieved just that with this concise PowerShell reference.<br />
<br />
He starts out our journey describing PowerShell as a glue language that is as programmable as Perl, Python and Ruby and takes its cues from Unix Shells. The next few steps describe getting started, and include a brief tour. He then shifts into high gear as we learn about template engines, adding PowerShell to our GUI apps and creating graphical applications within PowerShell.<br />
<br />
The chapter on “Writing Little Languages in PowerShell” was a welcome paradigm shift for me. Having virtually no experience with Domain Specific Languages (DSL), it was a fun ride as Doug demonstrated how to create a better XML and a creating a DSL using Graphviz. The lessons in this chapter alone were worth the price of the book.<br />
<br />
He completes our tour with coverage of integration with COM (Component Object Model – specifically Microsoft Excel) and some of highlights of PowerShell V3 (Workflows, JSON).<br />
<br />
This was an enjoyable invigorating read; in fact, I went through it multiple times. I appreciate the developer-centric perspective that Doug displayed throughout the text. Whether you are a seasoned developer or a weekend hacker, if you have any interest in PowerShell, I encourage you to pick up “Windows PowerShell for Developers”.<br />
<br />
Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com0tag:blogger.com,1999:blog-8203699536544490940.post-75457755514275746192012-08-07T15:46:00.001-04:002012-08-07T15:50:23.468-04:00PowerShell, Diskpart and Exchange (Oh my!)Was given the opportunity to work a bit on an Exchange 2007 - 2010 migration. I was asked if supplied a csv that contained Server and folders could the following be scripted:<br />
<ul>
<li>Step 1 - Create a mount point to hold the drives (M:)</li>
<li>Step 2 - Create a series of folders on the above drive</li>
<li>Step 3 - Create a series of volumes to be used to hold the database and log files</li>
</ul>
After a bit of research, it seemed feasible using a combination of PowerShell and DiskPart.<br />
It took me a few tries to get the hang of the necessary DiskPart commands to string together to pipe, my experience with disks has primarily been with the GUI, so I able to add a bit more to my command line toolbelt.<br />
<br />
So once the DiskPart commands were figured out, all that needed to be done is run these on the (new)Exchange servers. Enter Invoke-Command - you should be hearing cheering, whistling and much applause as this is darn near the most useful cmdlet in PowerShell V2.<br />
<br />
Following is a script that could be used to create 100s of volumes.<br />
<br />
<pre class="PowerShellColorizedScript"><span style="color: darkgreen;">############## Step 1 ##############</span>
<span style="color: darkgreen;"># Create the mount point for the drives</span>
<span style="color: darkgreen;"># We create a script block consisting of the commands we need to pipe to Diskpart</span>
<span style="color: orangered;">$cmds</span> <span style="color: darkgrey;">=</span> <span style="color: darkred;">"`"Select Disk 2`""</span><span style="color: darkgrey;">,</span>
<span style="color: darkred;">"`"create partition primary`""</span><span style="color: darkgrey;">,</span>
<span style="color: darkred;">"`"assign letter=m`""</span><span style="color: darkgrey;">,</span>
<span style="color: darkred;">"`"format fs = ntfs unit=64k quick label='Databases'`""</span>
<span style="color: orangered;">$string</span> <span style="color: darkgrey;">=</span> <span style="color: teal;">[string]</span><span style="color: darkgrey;">::</span><span style="color: black;">Join</span><span style="color: black;">(</span><span style="color: darkred;">","</span><span style="color: darkgrey;">,</span><span style="color: orangered;">$cmds</span><span style="color: black;">)</span>
<span style="color: orangered;">$sb</span> <span style="color: darkgrey;">=</span> <span style="color: orangered;">$ExecutionContext</span><span style="color: darkgrey;">.</span><span style="color: black;">InvokeCommand</span><span style="color: darkgrey;">.</span><span style="color: black;">NewScriptBlock</span><span style="color: black;">(</span><span style="color: darkred;">"$string | DiskPart"</span><span style="color: black;">)</span>
<span style="color: darkgreen;"># Iterate over the 6 Exchange Servers using Invoke-Command to run or</span>
<span style="color: darkgreen;"># script block on each server</span>
<span style="color: purple;">1</span><span style="color: darkgrey;">..</span><span style="color: purple;">6</span> <span style="color: darkgrey;">|</span> <span style="color: blue;">foreach</span> <span style="color: black;">{</span>
<span style="color: blue;">Invoke-Command</span> <span style="color: navy;">-ComputerName</span> <span style="color: darkred;">"ex10mbox-vp0$_"</span> <span style="color: navy;">-ScriptBlock</span> <span style="color: orangered;">$sb</span>
<span style="color: black;">}</span>
<span style="color: darkgreen;">############## Step 2 ##############</span>
<span style="color: darkgreen;"># Using a supplied CSV file, create our directories</span>
<span style="color: orangered;">$folders</span> <span style="color: darkgrey;">=</span> <span style="color: blue;">Import-Csv</span> <span style="color: navy;">-Path</span> <span style="color: blueviolet;">C:\temp\BrentFolders.csv</span>
<span style="color: orangered;">$folders</span> <span style="color: darkgrey;">|</span> <span style="color: blue;">foreach</span> <span style="color: black;">{</span>
<span style="color: orangered;">$path</span> <span style="color: darkgrey;">=</span> <span style="color: darkred;">"\\$($_.server)\M$\$($_.folder)"</span>
<span style="color: darkblue;">if</span><span style="color: black;">(</span><span style="color: darkgrey;">-not</span><span style="color: black;">(</span><span style="color: blue;">Test-Path</span> <span style="color: navy;">-Path</span> <span style="color: orangered;">$path</span><span style="color: black;">)</span><span style="color: black;">)</span> <span style="color: black;">{</span>
<span style="color: blue;">New-Item</span> <span style="color: navy;">-Path</span> <span style="color: orangered;">$path</span> <span style="color: navy;">-ItemType</span> <span style="color: blueviolet;">Directory</span>
<span style="color: black;">}</span>
<span style="color: black;">}</span>
<span style="color: darkgreen;">############## Step 3 ##############</span>
<span style="color: darkgreen;"># Create the 10 volumes that will be used to hold the individual database and log files.</span>
<span style="color: orangered;">$disk</span> <span style="color: darkgrey;">=</span> <span style="color: purple;">3</span>
<span style="color: darkblue;">foreach</span> <span style="color: black;">(</span><span style="color: orangered;">$folder</span> <span style="color: darkblue;">in</span> <span style="color: orangered;">$folders</span><span style="color: black;">)</span> <span style="color: black;">{</span>
<span style="color: darkblue;">if</span><span style="color: black;">(</span><span style="color: orangered;">$i</span> <span style="color: darkgrey;">-eq</span> <span style="color: purple;">13</span><span style="color: black;">)</span><span style="color: black;">{</span><span style="color: orangered;">$i</span><span style="color: darkgrey;">=</span><span style="color: purple;">3</span><span style="color: black;">}</span>
<span style="color: orangered;">$cmds</span> <span style="color: darkgrey;">=</span> <span style="color: darkred;">"`"select disk $disk`""</span><span style="color: darkgrey;">,</span>
<span style="color: darkred;">"`"online disk`""</span><span style="color: darkgrey;">,</span>
<span style="color: darkred;">"`"attributes disk clear readonly`""</span><span style="color: darkgrey;">,</span>
<span style="color: darkred;">"`"convert mbr`""</span><span style="color: darkgrey;">,</span>
<span style="color: darkred;">"`"create partition primary`""</span><span style="color: darkgrey;">,</span>
<span style="color: darkred;">"`"assign mount=M:\$($folder.Folder)`""</span><span style="color: darkgrey;">,</span>
<span style="color: darkred;">"`"format fs = ntfs unit=64k quick label=$($Folder.Folder)`""</span>
<span style="color: orangered;">$disk</span><span style="color: darkgrey;">++</span>
<span style="color: orangered;">$string</span> <span style="color: darkgrey;">=</span> <span style="color: teal;">[string]</span><span style="color: darkgrey;">::</span><span style="color: black;">Join</span><span style="color: black;">(</span><span style="color: darkred;">","</span><span style="color: darkgrey;">,</span><span style="color: orangered;">$cmds</span><span style="color: black;">)</span>
<span style="color: orangered;">$sb</span> <span style="color: darkgrey;">=</span> <span style="color: orangered;">$ExecutionContext</span><span style="color: darkgrey;">.</span><span style="color: black;">InvokeCommand</span><span style="color: darkgrey;">.</span><span style="color: black;">NewScriptBlock</span><span style="color: black;">(</span><span style="color: darkred;">"$string | DiskPart"</span><span style="color: black;">)</span>
<span style="color: blue;">Invoke-Command</span> <span style="color: navy;">-ComputerName</span> <span style="color: orangered;">$folder</span><span style="color: darkgrey;">.</span><span style="color: black;">Server</span> <span style="color: navy;">-ScriptBlock</span> <span style="color: orangered;">$sb</span>
<span style="color: black;">}</span>
</pre>
<div class="PowerShellColorizedScript">
This could also be utilzed for SQL Server rollouts, etc.</div>
<div class="PowerShellColorizedScript">
<br /></div>
<div class="PowerShellColorizedScript">
Enjoy!</div>
<div class="PowerShellColorizedScript">
<br /></div>Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com1tag:blogger.com,1999:blog-8203699536544490940.post-71628462263177438972012-08-01T19:14:00.001-04:002012-08-01T19:14:55.667-04:00"Introducing Regular Expressions" By Michael Fitzgerald; O'Reilly Media<div class="separator" style="clear: both; text-align: left;">
<a href="http://4.bp.blogspot.com/-4lrzzMFRFvo/UBmZWHifeDI/AAAAAAAAAUk/H9_-gqGv0Lk/s1600/cat.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-4lrzzMFRFvo/UBmZWHifeDI/AAAAAAAAAUk/H9_-gqGv0Lk/s1600/cat.gif" /></a></div>
<br />
Michael Fitzgerald achieves his goal of introducing the reader to Regular Expressions. He clearly states his intent and his expected audience in the introduction. In addition to the inductive approach to teaching the basics of Regular Expressions to the reader, he takes the opportunity to introduce a plethora of (free) tools. They include but are not limited to the following:<br />
<br />
<ul>
<li><a href="http://regexpal.com/" target="_blank">Regexpal</a></li>
<li><a href="http://gskinner.com/RegExr/" target="_blank">RegExr</a></li>
<li><a href="http://regexhero.net/tester/" target="_blank">RegexHero</a></li>
<li><a href="http://regex.larsolavtorvik.com/" target="_blank">Regex</a></li>
</ul>
<div>
The chapters build upon each other starting with the basics:</div>
<div>
<ul>
<li>Simple Pattern Matching</li>
<li>Boundaries</li>
<li>Alternation, Groups and Backreferences</li>
<li>Character Classes</li>
<li>Matching Unicode and Other Characters</li>
<li>Quantifiers</li>
<li>Lookarounds</li>
</ul>
</div>
<div>
The lessons learned in the chapters listed above are put to use in Chapter 9, "Marking up a Document with HTML".</div>
<div>
<br /></div>
<div>
In addition to learning the basics of Regular Expressions, the reader gets (re)introduced to Samuel Taylor Coleridge's "The Rime of the Ancyent Marinere". A nice change from the standard, technical examples.</div>
<div>
<br /></div>
<div>
This concise, book is worth the investment if you are new to Regular Expressions. </div>
<div>
<br /></div>
<div>
<span style="font-family: Verdana, Lucida Grande, sans-serif; font-size: x-small;"><span style="line-height: 19px;"><a href="http://shop.oreilly.com/product/0636920012337.do" target="_blank">Introducing Regular Expressions</a></span></span></div>
<div>
<br /></div>
<div>
<br /></div>Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com2tag:blogger.com,1999:blog-8203699536544490940.post-67563094264949447232012-06-25T14:05:00.002-04:002014-06-12T14:17:19.717-04:00PowerShell and Bass GuitarI recently decided to try my hand at a musical instrument. The bass guitar seemed like a good fit for me so I picked it up started a with a few lessons. I quickly realized that in order to have any success with it, I needed to memorize the fret-board. Given my affinity for PowerShell, I decided to blend the two. Following is a script that I threw in my profile to prompt me upon start-up for a few notes. <br />
<br />
<pre class="PowerShellColorizedScript"><span style="color: darkblue;">function</span> <span style="color: blueviolet;">Get-BassNote</span> <span style="color: black;">{</span>
<span style="color: darkblue;">param</span><span style="color: black;">(</span><span style="color: orangered;">$Count</span><span style="color: darkgrey;">=</span><span style="color: purple;">2</span><span style="color: black;">)</span>
<span style="color: orangered;">$BassNotes</span> <span style="color: darkgrey;">=</span> <span style="color: black;">@{</span>
<span style="color: darkred;">"Fret0"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">@{</span>
<span style="color: darkred;">"String1"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">E</span><span style="color: black;">}</span>
<span style="color: darkred;">"String2"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">A</span><span style="color: black;">}</span>
<span style="color: darkred;">"String3"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">D</span><span style="color: black;">}</span>
<span style="color: darkred;">"String4"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">G</span><span style="color: black;">}</span> <span style="color: black;">}</span>
<span style="color: darkred;">"Fret1"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">@{</span>
<span style="color: darkred;">"String1"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">F</span><span style="color: black;">}</span>
<span style="color: darkred;">"String2"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">A#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String3"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">D#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String4"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">G#</span><span style="color: black;">}</span> <span style="color: black;">}</span>
<span style="color: darkred;">"Fret2"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">@{</span>
<span style="color: darkred;">"String1"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">F#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String2"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">B</span><span style="color: black;">}</span>
<span style="color: darkred;">"String3"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">E</span><span style="color: black;">}</span>
<span style="color: darkred;">"String4"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">A</span><span style="color: black;">}</span> <span style="color: black;">}</span>
<span style="color: darkred;">"Fret3"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">@{</span>
<span style="color: darkred;">"String1"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">G</span><span style="color: black;">}</span>
<span style="color: darkred;">"String2"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">C</span><span style="color: black;">}</span>
<span style="color: darkred;">"String3"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">F</span><span style="color: black;">}</span>
<span style="color: darkred;">"String4"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">A#</span><span style="color: black;">}</span> <span style="color: black;">}</span>
<span style="color: darkred;">"Fret4"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">@{</span>
<span style="color: darkred;">"String1"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">G#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String2"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">C#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String3"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">F#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String4"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">B</span><span style="color: black;">}</span> <span style="color: black;">}</span>
<span style="color: darkred;">"Fret5"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">@{</span>
<span style="color: darkred;">"String1"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">A</span><span style="color: black;">}</span>
<span style="color: darkred;">"String2"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">D</span><span style="color: black;">}</span>
<span style="color: darkred;">"String3"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">G</span><span style="color: black;">}</span>
<span style="color: darkred;">"String4"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">C</span><span style="color: black;">}</span> <span style="color: black;">}</span>
<span style="color: darkred;">"Fret6"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">@{</span>
<span style="color: darkred;">"String1"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{A#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String2"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{D#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String3"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{G#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String4"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{C#</span><span style="color: black;">}</span> <span style="color: black;">}</span>
<span style="color: darkred;">"Fret7"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">@{</span>
<span style="color: darkred;">"String1"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">B</span><span style="color: black;">}</span>
<span style="color: darkred;">"String2"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">E</span><span style="color: black;">}</span>
<span style="color: darkred;">"String3"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">A</span><span style="color: black;">}</span>
<span style="color: darkred;">"String4"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">D</span><span style="color: black;">}</span> <span style="color: black;">}</span>
<span style="color: darkred;">"Fret8"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">@{</span>
<span style="color: darkred;">"String1"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">C</span><span style="color: black;">}</span>
<span style="color: darkred;">"String2"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">F</span><span style="color: black;">}</span>
<span style="color: darkred;">"String3"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">A#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String4"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">D#</span><span style="color: black;">}</span> <span style="color: black;">}</span>
<span style="color: darkred;">"Fret9"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">@{</span>
<span style="color: darkred;">"String1"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">C#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String2"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">F#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String3"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">B</span><span style="color: black;">}</span>
<span style="color: darkred;">"String4"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">E</span><span style="color: black;">}</span> <span style="color: black;">}</span>
<span style="color: darkred;">"Fret10"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">@{</span>
<span style="color: darkred;">"String1"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">D</span><span style="color: black;">}</span>
<span style="color: darkred;">"String2"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">G</span><span style="color: black;">}</span>
<span style="color: darkred;">"String3"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">C</span><span style="color: black;">}</span>
<span style="color: darkred;">"String4"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">F</span><span style="color: black;">}</span> <span style="color: black;">}</span>
<span style="color: darkred;">"Fret11"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">@{</span>
<span style="color: darkred;">"String1"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">D#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String2"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">G#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String3"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">C#</span><span style="color: black;">}</span>
<span style="color: darkred;">"String4"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">F#</span><span style="color: black;">}</span> <span style="color: black;">}</span>
<span style="color: darkred;">"Fret12"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">@{</span>
<span style="color: darkred;">"String1"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">E</span><span style="color: black;">}</span>
<span style="color: darkred;">"String2"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">A</span><span style="color: black;">}</span>
<span style="color: darkred;">"String3"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">D</span><span style="color: black;">}</span>
<span style="color: darkred;">"String4"</span> <span style="color: darkgrey;">=</span> <span style="color: black;">{</span><span style="color: blue;">G</span><span style="color: black;">}</span> <span style="color: black;">}</span>
<span style="color: black;">}</span>
<span style="color: darkblue;">for</span> <span style="color: black;">(</span><span style="color: orangered;">$i</span><span style="color: darkgrey;">=</span><span style="color: purple;">1</span><span style="color: black;">;</span> <span style="color: orangered;">$i</span><span style="color: darkgrey;">-le</span><span style="color: orangered;">$Count</span><span style="color: black;">;</span> <span style="color: orangered;">$i</span><span style="color: darkgrey;">++</span><span style="color: black;">)</span><span style="color: black;">{</span>
<span style="color: orangered;">$fretNumber</span> <span style="color: darkgrey;">=</span> <span style="color: blue;">Get-Random</span> <span style="color: navy;">-Minimum</span> <span style="color: purple;">0</span> <span style="color: navy;">-Maximum</span> <span style="color: purple;">12</span>
<span style="color: orangered;">$stringNumber</span> <span style="color: darkgrey;">=</span> <span style="color: blue;">Get-Random</span> <span style="color: navy;">-Minimum</span> <span style="color: purple;">1</span> <span style="color: navy;">-Maximum</span> <span style="color: purple;">4</span>
<span style="color: teal;">[string]</span><span style="color: orangered;">$Answer</span> <span style="color: darkgrey;">=</span> <span style="color: orangered;">$BassNotes</span><span style="color: darkgrey;">.</span><span style="color: darkred;">"Fret$($FretNumber)"</span><span style="color: darkgrey;">.</span><span style="color: darkred;">"String$($StringNumber)"</span>
<span style="color: orangered;">$prompt</span> <span style="color: darkgrey;">=</span> <span style="color: darkred;">"What is the note for string $($stringNumber), fret $($fretNumber)"</span>
<span style="color: darkblue;">do</span> <span style="color: black;">{</span> <span style="color: orangered;">$Response</span> <span style="color: darkgrey;">=</span> <span style="color: blue;">Read-Host</span> <span style="color: orangered;">$Prompt</span> <span style="color: black;">}</span>
<span style="color: darkblue;">until</span> <span style="color: black;">(</span><span style="color: orangered;">$Answer</span> <span style="color: darkgrey;">-eq</span> <span style="color: orangered;">$Response</span><span style="color: black;">)</span>
<span style="color: black;">}</span>
<span style="color: black;">}</span></pre>
<pre class="PowerShellColorizedScript"><span style="color: black;">
</span></pre>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-9r8omZcy01o/T-ioN6PrtDI/AAAAAAAAAUU/WAYEo5UAXa4/s1600/bass.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-9r8omZcy01o/T-ioN6PrtDI/AAAAAAAAAUU/WAYEo5UAXa4/s320/bass.PNG" height="41" width="320" /></a></div>
<pre class="PowerShellColorizedScript"><span style="color: black;">
</span></pre>
<pre class="PowerShellColorizedScript">Rock on!</pre>
<pre class="PowerShellColorizedScript"></pre>
Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com6tag:blogger.com,1999:blog-8203699536544490940.post-55326813423872096832012-04-16T17:16:00.000-04:002012-04-17T08:33:57.082-04:00Speed Reading with PowerShell<div class="ExternalClass7A807EEEA9904D999A279085F39AA612">
<div class="ExternalClassD7DB8E57390340C8AD212601CEB74305 ms-rteThemeFontFace-2 ms-rteFontSize-3">
Many of you have had to read in large text files for processing in PowerShell. The Get-Content cmdlet is perfect for this. However, it can be very sloooow with large files. There are multiple ways to speed this up. For example, we could dive into .NET using the [System.IO.File]::ReadAllLines() method. For simplicity, let's stick with the Get-Content cmdlet. Following is an example that demonstrates a couple different techniques, the one to focus on is the use of the "-ReadCount" parameter.<br />
<br />
<pre class="PowerShellColorizedScript"><span style="color: darkgreen;"># define some random nouns, verbs and adverbs</span>
<span style="color: orangered;">$noun</span> <span style="color: darkgrey;">=</span> <span style="color: darkred;">"Ed"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"Hal"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"Jeff"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"Doug"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"Don"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"Kirk","Dmitry"</span>
<span style="color: orangered;">$verb</span> <span style="color: darkgrey;">=</span> <span style="color: darkred;">"ran"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"walked"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"drank"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"ate"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"threw","scripted"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"snored"</span>
<span style="color: orangered;">$adverb</span> <span style="color: darkgrey;">=</span> <span style="color: darkred;">"quickly"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"randomly"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"erratically"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"slowly"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"slovenly"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"loudly"</span>
<span style="color: darkgreen;"># create an array with 10,000 random sentences </span>
<span style="color: orangered;">$content</span> <span style="color: darkgrey;">=</span> <span style="color: purple;">1</span><span style="color: darkgrey;">..</span><span style="color: purple;">10000</span> <span style="color: darkgrey;">|</span> <span style="color: blue;">foreach</span> <span style="color: black;">{</span>
<span style="color: darkred;">"{0} {1} {2}."</span> <span style="color: darkgrey;">-f</span> <span style="color: black;">(</span><span style="color: orangered;">$noun</span><span style="color: darkgrey;">|</span><span style="color: blue;">Get-Random</span><span style="color: black;">)</span><span style="color: darkgrey;">,</span><span style="color: black;">(</span><span style="color: orangered;">$verb</span><span style="color: darkgrey;">|</span><span style="color: blue;">Get-Random</span><span style="color: black;">)</span><span style="color: darkgrey;">,</span><span style="color: black;">(</span><span style="color: orangered;">$adverb</span><span style="color: darkgrey;">|</span><span style="color: blue;">Get-Random</span><span style="color: black;">)</span>
<span style="color: black;">}</span>
<span style="color: darkgreen;"># save our array to a text file</span>
<span style="color: orangered;">$path</span> <span style="color: darkgrey;">=</span> <span style="color: darkred;">"c:\temp\RandomSentences.txt"</span>
<span style="color: orangered;">$content</span> <span style="color: darkgrey;">|</span> <span style="color: blue;">Out-File</span> <span style="color: navy;">-FilePath</span> <span style="color: orangered;">$path</span>
<span style="color: darkgreen;"># read in the files and measure the time taken.</span>
<span style="color: black;">(</span><span style="color: blue;">measure-command</span> <span style="color: navy;">-Expression</span> <span style="color: black;">{</span> <span style="color: blue;">Get-Content</span> <span style="color: navy;">-Path</span> <span style="color: orangered;">$path</span> <span style="color: black;">}</span><span style="color: black;">)</span><span style="color: darkgrey;">.</span><span style="color: black;">TotalMilliseconds</span></pre>
<pre class="PowerShellColorizedScript"><span style="color: black;">(</span><span style="color: blue;">measure-command</span> <span style="color: black;">{</span> <span style="color: blue;">Get-Content</span> <span style="color: orangered;">$path</span> <span style="color: navy;">-ReadCount</span> <span style="color: purple;">10</span> <span style="color: black;">}</span><span style="color: black;">)</span><span style="color: darkgrey;">.</span><span style="color: black;">TotalMilliseconds</span></pre>
<pre class="PowerShellColorizedScript"><span style="color: black;">(</span><span style="color: blue;">measure-command</span> <span style="color: black;">{</span> <span style="color: blue;">Get-Content</span> <span style="color: orangered;">$path</span> <span style="color: navy;">-ReadCount</span> <span style="color: purple;">100</span><span style="color: black;">}</span><span style="color: black;">)</span><span style="color: darkgrey;">.</span><span style="color: black;">TotalMilliseconds</span></pre>
<pre class="PowerShellColorizedScript"><span style="color: black;">(</span><span style="color: blue;">measure-command</span> <span style="color: black;">{</span> <span style="color: blue;">Get-Content</span> <span style="color: orangered;">$path</span> <span style="color: navy;">-ReadCount</span> <span style="color: purple;">1000</span><span style="color: black;">}</span><span style="color: black;">)</span><span style="color: darkgrey;">.</span><span style="color: black;">TotalMilliseconds</span></pre>
</div>
<span class="ms-rteThemeFontFace-2 ms-rteFontSize-3"><br /></span><br />
<span class="ms-rteFontSize-3">
</span><span class="ms-rteThemeFontFace-2 ms-rteFontSize-3">
The results....
</span><br />
<pre class="ms-rteThemeFontFace-2 ms-rteFontSize-3">164.6186
24.5987
19.7441
16.2411
</pre>
<span class="ms-rteFontSize-3" style="text-decoration: underline;"></span><span class="ms-rteThemeFontFace-2 ms-rteFontSize-3"></span><br />
<div class="ExternalClass7A807EEEA9904D999A279085F39AA612" style="text-decoration: underline;">
<span class="ms-rteThemeFontFace-2 ms-rteFontSize-3"><span class="ms-rteThemeFontFace-2 ms-rteFontSize-3"><br /></span></span><br />
<span class="ms-rteThemeFontFace-2 ms-rteFontSize-3"><span class="ms-rteThemeFontFace-2 ms-rteFontSize-3">Explanation</span></span></div>
<span class="ms-rteThemeFontFace-2 ms-rteFontSize-3">
</span><br />
<div class="ExternalClass7A807EEEA9904D999A279085F39AA612">
<span class="ms-rteThemeFontFace-2 ms-rteFontSize-3"><span class="ms-rteThemeFontFace-2 ms-rteFontSize-3">The Get-Content cmdlet does more behind the scenes then just present the data. There are a properties being populated as it reads in the file. By default, this happens for each line as it it read. For large files, this overhead can be reduced by setting the -ReadCount parameter. With this parameter set, you will only be manipulating the behind the scenes properties in a collection size that is equal to the number you set the -ReadCount attribute to.<br /> </span></span></div>
<span class="ms-rteThemeFontFace-2 ms-rteFontSize-3">
Hope this helps!</span>
</div>Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com0tag:blogger.com,1999:blog-8203699536544490940.post-32603438850534976882012-03-02T15:51:00.002-05:002012-03-02T16:02:02.341-05:00Limit your use of the pipe<span><span style="font-size: 100%;">There have been many posts about the proper </span>utilization of the powerful pipe. Filtering left to avoid piping to the Where-Object is always a good idea. Following is another example that demonstrates that judicious use of the pipe is a best practice. </span><div><span> </span><div>We are going to define 3 scriptblocks that simply count to 100,000 and measure the time it takes them to run. <div><pre class="PowerShellColorizedScript"><span style="color:#ff4500">$limit</span> <span style="color:#a9a9a9">=</span> <span style="color:#800080">100000</span> <br /><span style="color:#ff4500">$test1</span> <span style="color:#a9a9a9">=</span> <span style="color:#000000">{</span> <span style="color:#00008b">foreach</span> <span style="color:#000000">(</span><span style="color:#ff4500">$num</span> <span style="color:#00008b">in</span> <span style="color:#800080">1</span><span style="color:#a9a9a9">..</span><span style="color:#ff4500">$limit</span> <span style="color:#000000">)</span> <span style="color:#000000">{</span><span style="color:#ff4500">$num</span><span style="color:#000000">}</span> <span style="color:#000000">}</span> <br /><span style="color:#ff4500">$test2</span> <span style="color:#a9a9a9">=</span> <span style="color:#000000">{</span> <span style="color:#00008b">for</span><span style="color:#000000">(</span><span style="color:#ff4500">$x</span><span style="color:#a9a9a9">=</span><span style="color:#800080">1</span><span style="color:#000000">;</span> <span style="color:#ff4500">$x</span> <span style="color:#a9a9a9">-le</span> <span style="color:#ff4500">$limit</span><span style="color:#000000">;</span> <span style="color:#ff4500">$x</span><span style="color:#a9a9a9">++</span><span style="color:#000000">)</span> <span style="color:#000000">{</span><span style="color:#ff4500">$x</span><span style="color:#000000">}</span> <span style="color:#000000">}</span> <br /><span style="color:#ff4500">$test3</span> <span style="color:#a9a9a9">=</span> <span style="color:#000000">{</span> <span style="color:#800080">1</span><span style="color:#a9a9a9">..</span><span style="color:#ff4500">$limit</span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">foreach</span><span style="color:#000000">{</span><span style="color:#ff4500">$_</span><span style="color:#000000">}</span> <span style="color:#000000">}</span> <br /> <br /><span style="color:#8b0000">"ForEach: {0} seconds"</span> <span style="color:#a9a9a9">-f</span> <span style="color:#000000">(</span><span style="color:#0000ff">Measure-Command</span> <span style="color:#ff4500">$test1</span><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">TotalSeconds</span> <br /><span style="color:#8b0000">"For: {0} seconds"</span> <span style="color:#a9a9a9">-f</span> <span style="color:#000000">(</span><span style="color:#0000ff">Measure-Command</span> <span style="color:#ff4500">$test2</span><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">TotalSeconds</span> <br /><span style="color:#8b0000">"Pipe: {0} seconds"</span> <span style="color:#a9a9a9">-f</span> <span style="color:#000000">(</span><span style="color:#0000ff">Measure-Command</span> <span style="color:#ff4500">$test3</span><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">TotalSeconds</span></pre></div></div></div>On my machine these were the results:<pre>ForEach: 0.0348825 seconds<br />For: 0.2490948 seconds<br />Pipe: 6.7627934 seconds<br /></pre><br />Enjoy!Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com0tag:blogger.com,1999:blog-8203699536544490940.post-8700533856676437142012-02-20T16:10:00.003-05:002012-02-20T16:25:14.706-05:00PowerShell and MongoDBI was exploring <a href="http://www.mongodb.org/">MongoDB</a> last weekend and was a bit skeptical at first. The relational model (I used to teach it) is so ingrained into my way of thinking. Like the florescent bulbs in my garage during the Winter, the light slowly started to brighten. I can now see a lot of uses for a schema free database (especially as a tool for prototyping). After playing around with the JavaScript interface, I decided to see what PowerShell could do with it.<br /><br />Luckily, there is a driver available for <a href="http://www.mongodb.org/display/DOCS/CSharp+Language+Center">download</a>. <div><br /></div><div>Assuming you have MongoDB, the C# driver and PowerShell installed, you can play around with the following code:</div><pre class="PowerShellColorizedScript"><span style="color:#006400"># Add a reference to our dll</span> <br /><span style="color:#0000ff">Add-Type</span> <span style="color:#000080">-Path</span> <span style="color:#8b0000">'C:\Program Files (x86)\MongoDB\CSharpDriver 1.3.1\MongoDB.Driver.dll'</span> <br /> <br /><span style="color:#006400"># Name our test db (not actually created until we insert)</span> <br /><span style="color:#ff4500">$db</span> <span style="color:#a9a9a9">=</span> <span style="color:#008080">[MongoDB.Driver.MongoDatabase]</span><span style="color:#a9a9a9">::</span><span style="color:#000000">Create</span><span style="color:#000000">(</span><span style="color:#8b0000">'mongodb://localhost/PowerShellMongoTest'</span><span style="color:#000000">)</span><span style="color:#000000">;</span> <br /> <br /><span style="color:#006400"># Name or test collection</span> <br /><span style="color:#ff4500">$coll</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$database</span><span style="color:#a9a9a9">[</span><span style="color:#8b0000">"Stuff"</span><span style="color:#a9a9a9">]</span> <br /> <br /><span style="color:#006400"># Define a couple list </span> <br /><span style="color:#ff4500">$languages</span> <span style="color:#a9a9a9">=</span> <span style="color:#000000">@(</span><span style="color:#8b0000">"C#"</span><span style="color:#a9a9a9">,</span><span style="color:#8b0000">"Haskell"</span><span style="color:#a9a9a9">,</span><span style="color:#8b0000">"PowerShell"</span><span style="color:#a9a9a9">,</span><span style="color:#8b0000">"Python"</span><span style="color:#000000">)</span> <br /><span style="color:#ff4500">$beers</span> <span style="color:#a9a9a9">=</span> <span style="color:#000000">@(</span><span style="color:#8b0000">"Honkers Ale"</span><span style="color:#a9a9a9">,</span><span style="color:#8b0000">"Stella"</span><span style="color:#a9a9a9">,</span><span style="color:#8b0000">"Summer Shandy"</span><span style="color:#a9a9a9">,</span><span style="color:#8b0000">"Yuengling"</span><span style="color:#000000">)</span> <br /> <br /><span style="color:#006400"># Define our document</span> <br /><span style="color:#ff4500">$doc</span> <span style="color:#a9a9a9">=</span> <span style="color:#000000">@{</span><span style="color:#000000">FirstName</span><span style="color:#a9a9a9">=</span><span style="color:#8b0000">"Wes"</span><span style="color:#000000">;</span> <span style="color:#000000">LastName</span><span style="color:#a9a9a9">=</span><span style="color:#8b0000">"Stahler"</span><span style="color:#000000">;</span> <span style="color:#000000">Languages</span><span style="color:#a9a9a9">=</span><span style="color:#ff4500">$languages</span><span style="color:#000000">;</span> <span style="color:#000000">Beers</span><span style="color:#a9a9a9">=</span><span style="color:#ff4500">$beers</span><span style="color:#000000">}</span> <br /><span style="color:#ff4500">$collection</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Insert</span><span style="color:#000000">(</span><span style="color:#ff4500">$doc</span><span style="color:#000000">)</span> <br /><span style="color:#ff4500">$info</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$collection</span><span style="color:#a9a9a9">.</span><span style="color:#000000">FindAll</span><span style="color:#000000">(</span><span style="color:#000000">)</span> <br /><span style="color:#ff4500">$info</span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Format-Table</span> <span style="color:#000080">-AutoSize</span> <br /> <br /><span style="color:#006400">#$collection.RemoveAll()</span></pre><br />This yields:<br /><pre>Name Value<br />---- -----<br />_id 4f42b6798359da1e7ce51bfb<br />Beers {Honkers Ale, Stella, Summer Shandy, Yuengling}<br />LastName Stahler<br />Languages {C#, Haskell, PowerShell, Python}<br />FirstName Wes<br /></pre><br />I will be experimenting more with MongoDB.<br />Share your insights with me if you decide to explore it as well.<br /><br />Enjoy!Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com4tag:blogger.com,1999:blog-8203699536544490940.post-49355881002903115072012-02-07T15:09:00.002-05:002012-02-07T15:18:21.873-05:00Calling vbScript via PowerShellFollowing is an example of how to call a vbScript from PowerShell. I recently had to do something similar to this for a Postini SafeSender list conversion to Exchange 2007/AD. <div><br /></div><div>First the vbScript:</div><div><div>Saved as CallFromPowerShell.vbs</div><div><br /></div><div>Option Explicit</div><div>Dim strComputer, objWMI, OS</div><div><br /></div><div>strComputer = WSH.Arguments(0)</div><div><br /></div><div>On Error Resume Next</div><div>Set objWMI=GetObject("winmgmts://" & strComputer).InstancesOf("win32_operatingsystem")</div><div>If objWMI is nothing Then</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>WScript.Echo "Unable to connect to " & strComputer<span class="Apple-tab-span" style="white-space:pre"> </span></div><div>Else</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>For Each OS In objWMI</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wscript.Echo OS.Caption</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>Next</div><div>end If</div><div><br /></div></div><div>To call this from PowerShell:</div><br /><pre class="PowerShellColorizedScript"><span style="color:#ff4500">$computers</span> <span style="color:#a9a9a9">=</span> <span style="color:#8b0000">'fatbeard-vp01'</span><span style="color:#a9a9a9">,</span><span style="color:#8b0000">'fatbeard-vp02'</span><span style="color:#a9a9a9">,</span><span style="color:#8b0000">'fatbeard-vp03'</span> <br /><span style="color:#ff4500">$computers</span> <span style="color:#a9a9a9">|</span> <br /><span style="color:#0000ff">foreach</span> <span style="color:#000000">{</span><span style="color:#8b0000">"{0,20}`t{1}"</span> <span style="color:#a9a9a9">-f</span> <span style="color:#ff4500">$_</span><span style="color:#a9a9a9">,</span><span style="color:#000000">$(</span><span style="color:#0000ff">cscript.exe</span> <span style="color:#8a2be2">//nologo</span> <span style="color:#8a2be2">c:\temp\callfrompowershell.vbs</span> <span style="color:#ff4500">$_</span><span style="color:#000000">)</span> <span style="color:#000000">}</span></pre><br />Yields...<br /><pre>fatbeard-vp01 Microsoft Windows 7 Enterprise<br />fatbeard-vp02 Microsoft(R) Windows(R) Server 2003, Enterprise Edition<br />fatbeard-vp03 Unable to connect to fatbeard-vp03<br /></pre>Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com0tag:blogger.com,1999:blog-8203699536544490940.post-65072038841042047912012-02-06T19:41:00.003-05:002012-02-06T19:46:48.302-05:00Project Euler #89This one was fairly easy to do with PowerShell.<br />Problem 89 -<a href="http://projecteuler.net/problem=89"> " <span><span style="font-size: 15px; text-align: -webkit-auto; background-color: rgb(255, 255, 255);">Develop a method to express Roman numerals in minimal form.</span></span> "</a><br /><pre class="PowerShellColorizedScript"><span style="color:#ff4500">$pre</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$post</span> <span style="color:#a9a9a9">=</span> <span style="color:#800080">0</span> <br /><span style="color:#00008b">foreach</span> <span style="color:#000000">(</span><span style="color:#ff4500">$line</span> <span style="color:#00008b">in</span> <span style="color:#0000ff">Get-Content</span> <span style="color:#8a2be2">C:\temp\roman.txt</span><span style="color:#000000">)</span> <span style="color:#000000">{</span> <br /><span style="color:#ff4500">$pre</span> <span style="color:#a9a9a9">+=</span> <span style="color:#ff4500">$line</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Length</span> <br /><span style="color:#ff4500">$line</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$line</span> <span style="color:#a9a9a9">-replace</span><span style="color:#000000">(</span><span style="color:#8b0000">"DCCCC"</span><span style="color:#a9a9a9">,</span><span style="color:#8b0000">"CM"</span><span style="color:#000000">)</span> <br /><span style="color:#ff4500">$line</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$line</span> <span style="color:#a9a9a9">-replace</span><span style="color:#000000">(</span><span style="color:#8b0000">"LXXXX"</span><span style="color:#a9a9a9">,</span><span style="color:#8b0000">"XC"</span><span style="color:#000000">)</span> <br /><span style="color:#ff4500">$line</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$line</span> <span style="color:#a9a9a9">-replace</span><span style="color:#000000">(</span><span style="color:#8b0000">"VIIII"</span><span style="color:#a9a9a9">,</span><span style="color:#8b0000">"IX"</span><span style="color:#000000">)</span> <br /><span style="color:#ff4500">$line</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$line</span> <span style="color:#a9a9a9">-replace</span><span style="color:#000000">(</span><span style="color:#8b0000">"IIII"</span><span style="color:#a9a9a9">,</span><span style="color:#8b0000">"IV"</span><span style="color:#000000">)</span> <br /><span style="color:#ff4500">$line</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$line</span> <span style="color:#a9a9a9">-replace</span><span style="color:#000000">(</span><span style="color:#8b0000">"XXXX"</span><span style="color:#a9a9a9">,</span><span style="color:#8b0000">"XL"</span><span style="color:#000000">)</span> <br /><span style="color:#ff4500">$line</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$line</span> <span style="color:#a9a9a9">-replace</span><span style="color:#000000">(</span><span style="color:#8b0000">"CCCC"</span><span style="color:#a9a9a9">,</span><span style="color:#8b0000">"CD"</span><span style="color:#000000">)</span> <br /><span style="color:#ff4500">$post</span> <span style="color:#a9a9a9">+=</span> <span style="color:#ff4500">$line</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Length</span> <br /><span style="color:#000000">}</span> <br /><span style="color:#ff4500">$pre</span><span style="color:#a9a9a9">-</span><span style="color:#ff4500">$post</span></pre>Enjoy!Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com0tag:blogger.com,1999:blog-8203699536544490940.post-64934456568359507692012-01-24T08:26:00.003-05:002012-01-24T08:46:57.494-05:00PowerShell - Let SQL sort it out<div>I came across a piece of code yesterday that provided a learning opportunity. The code was a simple SQL query that returned a list of computers from a database. The code I saw, had PowerShell handling the sort after the computers were retrieved from the SQL database. While this works, it is not a best practise. In fact, it something that Don Jones has often mentioned - <a href="http://technet.microsoft.com/en-us/magazine/2009.09.windowspowershell.aspx">Filter Left, Format Right.</a> Look below to see the performance difference of letting SQL Server handle the sort.<br /><pre class="PowerShellColorizedScript"><span style="color:#8b0000">"Filter Left: {0} seconds"</span> <span style="color:#a9a9a9">-f</span> <span style="color:#000000">(</span><span style="color:#0000ff">Measure-Command</span> <span style="color:#000080">-Expression</span> <span style="color:#000000">{</span> <br /> <span style="color:#ff4500">$qry</span> <span style="color:#a9a9a9">=</span> <span style="color:#8b0000">"select name from vcomputer where [IsManaged] ='1' order by name"</span> <br /> <span style="color:#ff4500">$Altiris</span> <span style="color:#a9a9a9">=</span> <span style="color:#0000ff">Invoke-Sqlcmd</span> <span style="color:#000080">-ServerInstance</span> <span style="color:#8a2be2">SQL01</span> <span style="color:#000080">-Database</span> <span style="color:#8a2be2">Altiris</span> <span style="color:#000080">-Query</span> <span style="color:#ff4500">$qry</span> <br /><span style="color:#000000">}</span><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">TotalSeconds</span> <br /> <br /><span style="color:#8b0000">"Filter Right: {0} seconds"</span> <span style="color:#a9a9a9">-f</span> <span style="color:#000000">(</span><span style="color:#0000ff">Measure-Command</span> <span style="color:#000080">-Expression</span> <span style="color:#000000">{</span> <br /> <span style="color:#ff4500">$qry</span> <span style="color:#a9a9a9">=</span> <span style="color:#8b0000">"select name from vcomputer where [IsManaged] ='1'"</span> <br /> <span style="color:#ff4500">$Altiris</span> <span style="color:#a9a9a9">=</span> <span style="color:#0000ff">Invoke-Sqlcmd</span> <span style="color:#000080">-ServerInstance</span> <span style="color:#8a2be2">SQL01</span> <span style="color:#000080">-Database</span> <span style="color:#8a2be2">Altiris</span> <span style="color:#000080">-Query</span> <span style="color:#ff4500">$qry</span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">sort</span> <br /><span style="color:#000000">}</span><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">TotalSeconds</span></pre><a href="http://1.bp.blogspot.com/-sPRXHegpgkw/Tx60QbgnsdI/AAAAAAAAATA/tjyu08oXHNs/s1600/20120124.PNG"><img style="WIDTH: 279px; HEIGHT: 39px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5701192372653109714" border="0" alt="" src="http://1.bp.blogspot.com/-sPRXHegpgkw/Tx60QbgnsdI/AAAAAAAAATA/tjyu08oXHNs/s400/20120124.PNG" /></a> </div><div><br /></div><br />As you can see, this is a significant difference! <br />Like Active Directory, let the server that is good at filtering or sorting handle the work for you.<br /><br />Enjoy!Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com1tag:blogger.com,1999:blog-8203699536544490940.post-2219518258412999802012-01-23T14:06:00.004-05:002012-01-23T14:09:31.532-05:00Creating an LDIF file with PowerShellOccasionally, I am asked to create a large batch of users for our eDirectory environment. Following is an example on how to create 500 test users (gotta love Here-Strings).<br /><pre class="PowerShellColorizedScript"><span style="color:#ff4500">$path</span> <span style="color:#a9a9a9">=</span> <span style="color:#8b0000">"c:\temp\LDIF$(get-date -Format yyyyMMdd).txt"</span> <br /><span style="color:#0000ff">New-Item</span> <span style="color:#000080">-Path</span> <span style="color:#ff4500">$path</span> <span style="color:#000080">-ItemType</span> <span style="color:#8a2be2">File</span> <span style="color:#000080">-Force</span> <br /><span style="color:#0000ff">Add-Content</span> <span style="color:#000080">-Value</span> <span style="color:#8b0000">"version: 1"</span> <span style="color:#000080">-Path</span> <span style="color:#ff4500">$path</span> <br /> <br /><span style="color:#800080">100</span><span style="color:#a9a9a9">..</span><span style="color:#800080">600</span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Foreach</span> <span style="color:#000000">{</span> <br /> <span style="color:#ff4500">$value</span> <span style="color:#a9a9a9">=</span> <span style="color:#8b0000">@"<br /><br />dn: cn=PSFTTest$_,ou=users,o=OSUMC<br />changetype: add<br />userPassword: P@ssw0rd<br />uid: PSFTTest$_<br />givenName: First$_<br />fullName: First$_ Last$_<br />sn: Last$_<br />objectClass: inetOrgPerson<br />objectClass: organizationalPerson<br />objectClass: Person<br />objectClass: Top<br />cn: PSFTTest$_<br />"@</span> <br /><span style="color:#0000ff">Add-Content</span> <span style="color:#000080">-Value</span> <span style="color:#ff4500">$value</span> <span style="color:#000080">-Path</span> <span style="color:#ff4500">$path</span> <br /><span style="color:#000000">}</span> <br /></pre><br />Enjoy!Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com0tag:blogger.com,1999:blog-8203699536544490940.post-1748492105249458012012-01-23T09:09:00.007-05:002012-01-23T09:46:58.512-05:00PowerShell - Project Euler Problem 102I am always pleased when I can use PowerShell to solve a <a href="http://projecteuler.net/">Project Euler</a> problem. This one was straightforward. You are supplied with a <a href="http://projecteuler.net/project/triangles.txt">text file</a> containing 1000 random triangular coordinates and you need to determine how many of the triangles contain the origin (0,0). There are multiple ways to attack this, I went for he easier approach: if the area of the supplied triangle is equal to the 3 triangles created using the origin, then we know that the triangle contains the origin. I used Heron's Formula to calculate the area. <div><br /></div><div>Following is the code used to find the answer.</div><br /><pre class="PowerShellColorizedScript"><span style="color:#006400"><# Get side lengths </span><br /><span style="color: rgb(0, 100, 0); ">$LengthAB = Length of AB = SquareRoot of (Ax - Bx)^2 + (Ay - By)^2<br>$LengthAC = Length of AC = SquareRoot of (Ax - Cx)^2 + (Ay - Cy)^2<br>$LengthBC = Length of BC = SquareRoot of (Bx - Cx)^2 + (By - Cy)^2<br><br />$s = .5($LengthAB +$LengthAC +$LengthAC)<br>$Area = SQRT($s($s-$LengthAB)($s-$LengthAC)($s-$LengthBC) #></span><span style="color: rgb(0, 100, 0); "> </span></pre><pre class="PowerShellColorizedScript"><span style="color:#006400"><span style="color:#00008b">function</span> <span style="color:#8a2be2">Get-LengthOfSide</span> <span style="color:#000000">{</span> <br /><span style="color:#00008b">param</span><span style="color:#000000">(</span><span style="color:#008080">[Array]</span><span style="color:#ff4500">$X</span><span style="color:#a9a9a9">,</span><span style="color:#008080">[Array]</span><span style="color:#ff4500">$Y</span><span style="color:#000000">)</span> <br /> <br /><span style="color:#00008b">return</span> <span style="color:#008080">[Math]</span><span style="color:#a9a9a9">::</span><span style="color:#000000">sqrt</span><span style="color:#000000">(</span> <span style="color:#008080">[Math]</span><span style="color:#a9a9a9">::</span><span style="color:#000000">pow</span><span style="color:#000000">(</span><span style="color:#000000">(</span><span style="color:#ff4500">$X</span><span style="color:#a9a9a9">[</span><span style="color:#800080">0</span><span style="color:#a9a9a9">]</span><span style="color:#a9a9a9">-</span><span style="color:#ff4500">$Y</span><span style="color:#a9a9a9">[</span><span style="color:#800080">0</span><span style="color:#a9a9a9">]</span><span style="color:#000000">)</span><span style="color:#a9a9a9">,</span><span style="color:#800080">2</span><span style="color:#000000">)</span> <span style="color:#a9a9a9">+</span> <span style="color:#008080">[Math]</span><span style="color:#a9a9a9">::</span><span style="color:#000000">pow</span><span style="color:#000000">(</span><span style="color:#000000">(</span><span style="color:#ff4500">$X</span><span style="color:#a9a9a9">[</span><span style="color:#800080">1</span><span style="color:#a9a9a9">]</span><span style="color:#a9a9a9">-</span><span style="color:#ff4500">$Y</span><span style="color:#a9a9a9">[</span><span style="color:#800080">1</span><span style="color:#a9a9a9">]</span><span style="color:#000000">)</span><span style="color:#a9a9a9">,</span><span style="color:#800080">2</span><span style="color:#000000">)</span><span style="color:#000000">)</span> <br /><span style="color:#000000">}</span> <br /><br /><span style="color:#00008b">function</span> <span style="color:#8a2be2">Get-AreaOfTriangle</span> <span style="color:#000000">{</span> <br /><span style="color:#00008b">param</span><span style="color:#000000">(</span><span style="color:#008080">[Array]</span><span style="color:#ff4500">$X</span><span style="color:#a9a9a9">,</span><span style="color:#008080">[Array]</span><span style="color:#ff4500">$Y</span><span style="color:#a9a9a9">,</span> <span style="color:#008080">[Array]</span><span style="color:#ff4500">$Z</span><span style="color:#000000">)</span> <br /> <br /><span style="color:#ff4500">$LengthAB</span> <span style="color:#a9a9a9">=</span> <span style="color:#0000ff">Get-LengthOfSide</span> <span style="color:#000080">-X</span> <span style="color:#ff4500">$X</span> <span style="color:#000080">-Y</span> <span style="color:#ff4500">$Y</span> <br /><span style="color:#ff4500">$LengthAC</span> <span style="color:#a9a9a9">=</span> <span style="color:#0000ff">Get-LengthOfSide</span> <span style="color:#000080">-X</span> <span style="color:#ff4500">$X</span> <span style="color:#000080">-Y</span> <span style="color:#ff4500">$Z</span> <br /><span style="color:#ff4500">$LengthBC</span> <span style="color:#a9a9a9">=</span> <span style="color:#0000ff">Get-LengthOfSide</span> <span style="color:#000080">-X</span> <span style="color:#ff4500">$Y</span> <span style="color:#000080">-Y</span> <span style="color:#ff4500">$Z</span> <br /><span style="color:#ff4500">$s</span> <span style="color:#a9a9a9">=</span> <span style="color:#800080">.5</span><span style="color:#a9a9a9">*</span><span style="color:#000000">(</span><span style="color:#ff4500">$LengthAB</span><span style="color:#a9a9a9">+</span><span style="color:#ff4500">$LengthAC</span><span style="color:#a9a9a9">+</span><span style="color:#ff4500">$LengthBC</span><span style="color:#000000">)</span> <br /><span style="color:#ff4500">$Area</span> <span style="color:#a9a9a9">=</span> <span style="color:#008080">[Math]</span><span style="color:#a9a9a9">::</span><span style="color:#000000">sqrt</span><span style="color:#000000">(</span> <span style="color:#ff4500">$s</span><span style="color:#a9a9a9">*</span><span style="color:#000000">(</span><span style="color:#ff4500">$s</span><span style="color:#a9a9a9">-</span><span style="color:#ff4500">$LengthAB</span><span style="color:#000000">)</span><span style="color:#a9a9a9">*</span><span style="color:#000000">(</span><span style="color:#ff4500">$s</span><span style="color:#a9a9a9">-</span><span style="color:#ff4500">$LengthAC</span><span style="color:#000000">)</span><span style="color:#a9a9a9">*</span><span style="color:#000000">(</span><span style="color:#ff4500">$s</span><span style="color:#a9a9a9">-</span><span style="color:#ff4500">$LengthBC</span><span style="color:#000000">)</span> <span style="color:#000000">)</span> <br /><span style="color:#00008b">return</span> <span style="color:#ff4500">$Area</span> <br /><span style="color:#000000">}</span> <br /><br /><span style="color:#ff4500">$path</span> <span style="color:#a9a9a9">=</span> <span style="color:#8b0000">'C:\Users\stah06\Documents\triangles.txt'</span> <br /><span style="color:#ff4500">$uri</span> <span style="color:#a9a9a9">=</span> <span style="color:#8b0000">'http://projecteuler.net/project/triangles.txt'</span> <br /><br /><span style="color:#006400"># Using Invoke-WebRequest (PowerShell V3)</span> <br /><span style="color:#006400">#Invoke-WebRequest -Uri $uri -OutFile $path</span> <br /><br /><span style="color:#006400"># Using System.Net.WebClient (PowerShell V2)</span> <br /><span style="color:#ff4500">$web</span> <span style="color:#a9a9a9">=</span> <span style="color:#0000ff">New-Object</span> <span style="color:#8a2be2">System.Net.WebClient</span> <br /><span style="color:#ff4500">$web</span><span style="color:#a9a9a9">.</span><span style="color:#000000">DownloadFile</span><span style="color:#000000">(</span><span style="color:#ff4500">$uri</span><span style="color:#a9a9a9">,</span> <span style="color:#ff4500">$path</span><span style="color:#000000">)</span> <br /><br /><span style="color:#ff4500">$match</span> <span style="color:#a9a9a9">=</span> <span style="color:#800080">0</span> <br /><span style="color:#0000ff">Get-Content</span> <span style="color:#ff4500">$path</span> <span style="color:#a9a9a9">|</span> <br /><span style="color:#0000ff">foreach</span> <span style="color:#000000">{</span> <br /><span style="color:#ff4500">$A</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">split</span><span style="color:#000000">(</span><span style="color:#8b0000">","</span><span style="color:#000000">)</span><span style="color:#a9a9a9">[</span><span style="color:#800080">0</span><span style="color:#a9a9a9">]</span><span style="color:#a9a9a9">,</span><span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">split</span><span style="color:#000000">(</span><span style="color:#8b0000">","</span><span style="color:#000000">)</span><span style="color:#a9a9a9">[</span><span style="color:#800080">1</span><span style="color:#a9a9a9">]</span> <br /><span style="color:#ff4500">$B</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">split</span><span style="color:#000000">(</span><span style="color:#8b0000">","</span><span style="color:#000000">)</span><span style="color:#a9a9a9">[</span><span style="color:#800080">2</span><span style="color:#a9a9a9">]</span><span style="color:#a9a9a9">,</span><span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">split</span><span style="color:#000000">(</span><span style="color:#8b0000">","</span><span style="color:#000000">)</span><span style="color:#a9a9a9">[</span><span style="color:#800080">3</span><span style="color:#a9a9a9">]</span> <br /><span style="color:#ff4500">$C</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">split</span><span style="color:#000000">(</span><span style="color:#8b0000">","</span><span style="color:#000000">)</span><span style="color:#a9a9a9">[</span><span style="color:#800080">4</span><span style="color:#a9a9a9">]</span><span style="color:#a9a9a9">,</span><span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">split</span><span style="color:#000000">(</span><span style="color:#8b0000">","</span><span style="color:#000000">)</span><span style="color:#a9a9a9">[</span><span style="color:#800080">5</span><span style="color:#a9a9a9">]</span> <br /><span style="color:#ff4500">$D</span> <span style="color:#a9a9a9">=</span> <span style="color:#800080">0</span><span style="color:#a9a9a9">,</span><span style="color:#800080">0</span> <br /><br /><span style="color:#ff4500">$TriangleABC</span> <span style="color:#a9a9a9">=</span> <span style="color:#0000ff">Get-AreaOfTriangle</span> <span style="color:#000080">-X</span> <span style="color:#ff4500">$A</span> <span style="color:#000080">-Y</span> <span style="color:#ff4500">$B</span> <span style="color:#000080">-Z</span> <span style="color:#ff4500">$C</span> <br /><span style="color:#ff4500">$TriangleABD</span> <span style="color:#a9a9a9">=</span> <span style="color:#0000ff">Get-AreaOfTriangle</span> <span style="color:#000080">-X</span> <span style="color:#ff4500">$A</span> <span style="color:#000080">-Y</span> <span style="color:#ff4500">$B</span> <span style="color:#000080">-Z</span> <span style="color:#ff4500">$D</span> <br /><span style="color:#ff4500">$TriangleACD</span> <span style="color:#a9a9a9">=</span> <span style="color:#0000ff">Get-AreaOfTriangle</span> <span style="color:#000080">-X</span> <span style="color:#ff4500">$A</span> <span style="color:#000080">-Y</span> <span style="color:#ff4500">$C</span> <span style="color:#000080">-Z</span> <span style="color:#ff4500">$D</span> <br /><span style="color:#ff4500">$TriangleBCD</span> <span style="color:#a9a9a9">=</span> <span style="color:#0000ff">Get-AreaOfTriangle</span> <span style="color:#000080">-X</span> <span style="color:#ff4500">$B</span> <span style="color:#000080">-Y</span> <span style="color:#ff4500">$C</span> <span style="color:#000080">-Z</span> <span style="color:#ff4500">$D</span> <br /> <br /><span style="color:#ff4500">$SumofTriangles</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$TriangleABD</span> <span style="color:#a9a9a9">+</span><span style="color:#ff4500">$TriangleACD</span> <span style="color:#a9a9a9">+</span> <span style="color:#ff4500">$TriangleBCD</span> <br /> <br /><span style="color:#00008b">if</span> <span style="color:#000000">(</span> <span style="color:#008080">[math]</span><span style="color:#a9a9a9">::</span><span style="color:#000000">abs</span><span style="color:#000000">(</span><span style="color:#ff4500">$TriangleABC</span> <span style="color:#a9a9a9">-</span><span style="color:#ff4500">$SumofTriangles</span><span style="color:#000000">)</span> <span style="color:#a9a9a9">-lt</span> <span style="color:#800080">.5</span><span style="color:#000000">)</span> <span style="color:#000000">{</span> <br /> <span style="color:#006400">#"{0} {1}" -f $TriangleABC, $SumofTriangles</span> <br /> <span style="color:#ff4500">$match</span><span style="color:#a9a9a9">++</span> <br /><span style="color:#000000">}</span> <br /><span style="color:#000000">}</span> <br /><br /><span style="color:#ff4500">$match</span> <br /></span></pre><br /><br />Enjoy!Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com0tag:blogger.com,1999:blog-8203699536544490940.post-34614487062332908282012-01-19T15:35:00.021-05:002012-01-19T18:42:17.405-05:00Will Rogers PhenomenonFollowing is a example of the Will Rogers phenomenon. This discussion was a tangent from a water-cooler discussion of the Monty Hall problem (much more interesting).<br /><br /><pre class="PowerShellColorizedScript"><span style="color:#006400;">‹#<br /></span><span style="color:#006400;">The Will Rogers phenomenon occurs when the averages<br /></span><span style="color:#006400;">of 2 groups are raised by moving one item from one<br />to the other.Note: Data may not be truly<br />representative of actual figures. #›</span><br /><br /><span style="color:#006400;"># Sample IQs</span><br /><span style="color:#ff4500;">$Ohio</span> <span style="color:#a9a9a9;">=</span> <span style="color:#800080;">110</span><span style="color:#a9a9a9;">,</span><span style="color:#800080;">105</span><span style="color:#a9a9a9;">,</span><span style="color:#800080;">115</span><span style="color:#a9a9a9;">,</span><span style="color:#800080;">120</span><br /><span style="color:#ff4500;">$StateUpNorth</span> <span style="color:#a9a9a9;">=</span> <span style="color:#800080;">90</span><span style="color:#a9a9a9;">,</span><span style="color:#800080;">95</span><span style="color:#a9a9a9;">,</span><span style="color:#800080;">85</span><span style="color:#a9a9a9;">,</span><span style="color:#800080;">90</span><br /><br /><span style="color:#006400;"># Initial State (pun intended...)</span><br /><span style="color:#8b0000;">"Average Ohio IQ before move is: {0}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#000000;">(</span><span style="color:#ff4500;">$Ohio |</span> <span style="color:#a9a9a9;"></span><br /> <span style="color:#0000ff;">Measure-Object</span> <span style="color:#000080;">-Average</span><span style="color:#000000;">)</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">Average</span><br /><br /><span style="color:#8b0000;">"Average StateUpNorth IQ before move is: {0}`n"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#000000;">(</span><span style="color:#ff4500;">$StateUpNorth |</span> <span style="color:#a9a9a9;"></span><br /> <span style="color:#0000ff;">Measure-Object</span> <span style="color:#000080;">-Average</span><span style="color:#000000;">)</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">Average</span><br /><br /><span style="color:#006400;"># Rumoured to be in the Toledo area...</span><br /><span style="color:#ff4500;">$LowestOhioIQ</span> <span style="color:#a9a9a9;">=</span> <span style="color:#000000;">(</span><span style="color:#ff4500;">$Ohio</span> <span style="color:#a9a9a9;"></span> <span style="color:#0000ff;">sort</span><span style="color:#000000;">)</span><span style="color:#a9a9a9;">[</span><span style="color:#800080;">0</span><span style="color:#a9a9a9;">]</span><br /><br /><span style="color:#006400;"># Remove from Ohio</span><br /><span style="color:#ff4500;">$Ohio</span> <span style="color:#a9a9a9;">=</span> <span style="color:#000000;">@(</span><span style="color:#ff4500;">$ohio</span><span style="color:#a9a9a9;"></span> <span style="color:#0000ff;">where</span> <span style="color:#000000;">{</span><span style="color:#ff4500;">$_</span> <span style="color:#a9a9a9;">-ne</span> <span style="color:#ff4500;">$LowestOhioIQ</span><span style="color:#000000;">}</span><span style="color:#000000;">)</span><br /><br /><span style="color:#006400;"># Add to State up North (Ann Arbor area)</span><br /><span style="color:#ff4500;">$StateUpNorth</span><span style="color:#a9a9a9;">+=</span> <span style="color:#ff4500;">$LowestOhioIQ<br /></span><br /><span style="color:#006400;"># Final State</span><br /><span style="color:#8b0000;">"Average Ohio IQ after move is: {0}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#000000;">(</span><span style="color:#ff4500;">$Ohio |</span> <span style="color:#a9a9a9;"></span><br /> <span style="color:#0000ff;">Measure-Object</span> <span style="color:#000080;">-Average</span><span style="color:#000000;">)</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">Average</span><br /><br /><span style="color:#8b0000;">"Average StateUpNorth IQ after move is: {0}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#000000;">(</span><span style="color:#ff4500;">$StateUpNorth |</span> <span style="color:#a9a9a9;"></span><br /> <span style="color:#0000ff;">Measure-Object</span> <span style="color:#000080;">-Average</span><span style="color:#000000;">)</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">Average</span></pre><br /><a href="http://3.bp.blogspot.com/-KyvhLvJ6lac/Tximjx1dqNI/AAAAAAAAASw/uH0gn-qFGbc/s1600/20120119.PNG"><img style="WIDTH: 400px; HEIGHT: 95px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5699488462040574162" border="0" alt="" src="http://3.bp.blogspot.com/-KyvhLvJ6lac/Tximjx1dqNI/AAAAAAAAASw/uH0gn-qFGbc/s400/20120119.PNG" /></a><br /><br />Enjoy!Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com2tag:blogger.com,1999:blog-8203699536544490940.post-42864861843050222872012-01-18T14:52:00.005-05:002012-01-18T15:02:37.821-05:00More Training Questions: Connect to different domainAt a recent internal PowerShell training session, I was asked how to connect to a different domain. Following are a couple ways to accomplish this (using <a href="http://www.quest.com/powershell/activeroles-server.aspx">Quest cmdlets </a>or the ActiveDirectory Module):<br /><br /># Quest cmdlets<br />Add-PSSnapin Quest.ActiveRoles.ADManagement<br />$cred = Get-Credential 'ExtDomain.Local\FatBeard'<br />Connect-QADService -Service ExtDomain.Local -Cred $cred<br /><br />Get-QADUser<br /><br /># Active Directory Module<br />Import-Module ActiveDirectory<br />New-PSDrive –Name ExtDomain<br />–PSProvider ActiveDirectory<br />–Server ExtDomain.Local<br />–credential (Get-Credential ‘ExtDomain.Local\FatBeard’)<br />–root ‘//RootDSE/’<br /><br />Get-ADUser -filter *<br /><br />Enjoy!Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com1tag:blogger.com,1999:blog-8203699536544490940.post-88449405360151695682012-01-18T13:02:00.016-05:002012-01-18T13:32:20.788-05:00Training Questions: Date and Numeric Formatting with PowerShellAt a recent internal training session, I was asked how to format dates in PowerShell. A little later I was asked how to format numbers, and later still I was asked if it was possible to right justify strings. Following is the example I used to demonstrate the formating capabilities:<br /><br /><pre class="PowerShellColorizedScript"><span style="font-size:78%;"><span style="color:#0000ff;">Get-ADUser</span> <span style="color:#8a2be2;">SamAccountName</span> <span style="color:#000080;">-Properties</span> <span style="color:#8a2be2;">WhenCreated </span>| <span style="color:#a9a9a9;"></span><br /><span style="color:#0000ff;">Select</span> <span style="color:#8a2be2;">SamAccountName</span><span style="color:#a9a9a9;">,</span><span style="color:#8a2be2;">WhenCreated</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">Name</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"ShortDate"</span><span style="color:#000000;">;</span> <span style="color:#000000;">Expression</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:d}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"LongDate"</span><span style="color:#000000;">;</span><span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:D}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">L</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"FullDateShortTime"</span><span style="color:#000000;">;</span><span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:f}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"FullDateLongTime"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:F}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"GeneralDateShortTime"</span><span style="color:#000000;">;</span><span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:g}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"GeneralDateLongTime"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:G}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"Month"</span><span style="color:#000000;">;</span><span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:M MM MMM MMMM}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"Day"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:d dd ddd dddd}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"Year"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:y yy yyy yyyy}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"Hour"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:h hh H HH}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"Minute"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:m mm}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"Second"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:s ss}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"AM/PM"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:t tt}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"CustomDateTime1"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:M/d/yy h:m:s tt}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"CustomDateTime2"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:dddd, MMMM yyyy - HH:mm:ss}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">WhenCreated</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><br /> <br /><span style="color:#0000ff;">Get-WmiObject</span> <span style="color:#000080;">-Class</span> <span style="color:#8a2be2;">win32_logicalDisk</span> <span style="color:#000080;">-Filter</span> <span style="color:#8b0000;">"DeviceID='C:'" </span>| <span style="color:#a9a9a9;"></span><br /><span style="color:#0000ff;">Select</span> <span style="color:#8a2be2;">DeviceID</span><span style="color:#a9a9a9;">,</span> <span style="color:#8a2be2;">FreeSpace</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"FreeSpaceDecimal"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:d}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">FreeSpace</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"FreeSpaceScientific1"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:E}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">FreeSpace</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"FreeSpaceScientific2"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:E1}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">FreeSpace</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"FreeSpaceFixed1"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:F1}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">FreeSpace</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"FreeSpaceFixed2"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:F5}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">FreeSpace</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"FreeSpaceGeneral"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:G3}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">FreeSpace</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"FreeSpaceNumber"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:N3}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">FreeSpace</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"FreeSpacePercent"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:P}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#000000;">(</span><span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">FreeSpace</span><span style="color:#a9a9a9;">/</span><span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">Size</span><span style="color:#000000;">)</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><span style="color:#a9a9a9;">,</span><br /> <span style="color:#000000;">@{</span><span style="color:#000000;">N</span><span style="color:#a9a9a9;">=</span><span style="color:#8b0000;">"FreeSpaceGB"</span><span style="color:#000000;">;</span> <span style="color:#000000;">E</span><span style="color:#a9a9a9;">=</span><span style="color:#000000;">{</span> <span style="color:#8b0000;">"{0:N0} GB"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#000000;">(</span><span style="color:#ff4500;">$_</span><span style="color:#a9a9a9;">.</span><span style="color:#000000;">FreeSpace</span><span style="color:#a9a9a9;">/</span><span style="color:#800080;">1GB</span><span style="color:#000000;">)</span><span style="color:#000000;">}</span> <span style="color:#000000;">}</span><br /><br /><span style="color:#ff4500;">$myString</span> <span style="color:#a9a9a9;">=</span> <span style="color:#8b0000;">"Yuengling"</span><br /><span style="color:#8b0000;">"{0,10}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$myString</span><br /><span style="color:#8b0000;">"{0,15}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$myString</span><br /><span style="color:#8b0000;">"{0,20}"</span> <span style="color:#a9a9a9;">-f</span> <span style="color:#ff4500;">$myString</span></span></pre><br />Results:<br /><a href="http://4.bp.blogspot.com/-Rh-hpTcXw0Y/TxcOuCiSQNI/AAAAAAAAASU/LRrl0-jxe9c/s1600/20120118.PNG"><img style="WIDTH: 391px; HEIGHT: 400px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5699040037578096850" border="0" alt="" src="http://4.bp.blogspot.com/-Rh-hpTcXw0Y/TxcOuCiSQNI/AAAAAAAAASU/LRrl0-jxe9c/s400/20120118.PNG" /></a><br /><br />Enjoy!Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com1tag:blogger.com,1999:blog-8203699536544490940.post-23443846742720121082011-09-27T15:23:00.009-04:002011-09-27T15:46:04.289-04:00PowerShell ActiveDirectory Module vs Quest.ActiveRoles.ADManagement SnapinI have used the Quest.ActiveRoles.ADManagement snapin for a few years and have enjoyed their ease of use. Now that we have migrated our domain controllers to 2008 R2, I often use the ActiveDirectory Module. In fact, I end up using both and see no reason to pick one over the other.<div><br /></div><div>Being of curious nature, I wanted to compare the time it took for a standard query to run using both approaches. Following is a comparison of:</div><div><ul><li>Quest.ActiveRoles.ADManagement snapin with Where-Object</li><li>Quest.ActiveRoles.ADManagement snapin with LDAP Filter</li><li>ActiveDirectory Module with Filter parameter</li><li>ActiveDirectory Module with LDAP Filter</li></ul></div><div>The query is looking for "stale" servers and runs 10 times for each one and averages the result.<br /><br /><pre class="PowerShellColorizedScript"><span class="Apple-style-span"><span style="color:#006400"># Add required snapin and module</span> <br /><span style="color:#0000ff">Add-PSSnapin</span> <span style="color:#8a2be2">Quest.ActiveRoles.ADManagement</span> <span style="color:#000080">-ErrorAction</span> <span style="color:#8a2be2">SilentlyContinue</span> <br /><span style="color:#0000ff">Import-Module</span> <span style="color:#8a2be2">ActiveDirectory</span> <span style="color:#000080">-ErrorAction</span> <span style="color:#8a2be2">SilentlyContinue</span> <br /><br /><span style="color:#ff4500">$d</span> <span style="color:#a9a9a9">=</span> <span style="color:#000000">(</span><span style="color:#000000">(</span><span style="color:#0000ff">Get-Date</span><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">AddDays</span><span style="color:#000000">(</span><span style="color:#800080">-90</span><span style="color:#000000">)</span><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">ToFileTime</span><span style="color:#000000">(</span><span style="color:#000000">)</span> <br /><span style="color:#ff4500">$LDAP</span> <span style="color:#a9a9a9">=</span> <span style="color:#8b0000">"(&(OperatingSystem=*Server*)(pwdLastSet<=$d)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"</span> <br /><span style="color:#ff4500">$server</span> <span style="color:#a9a9a9">=</span> <span style="color:#8b0000">"DC-P01"</span> <br /><br /><span style="color:#006400"># Quest.ActiveRoles.ADManagement with Where-Object</span> <br /><span style="color:#ff4500">$QAD_Where</span> <span style="color:#a9a9a9">=</span> <span style="color:#000000">(</span><span style="color:#800080">1</span><span style="color:#a9a9a9">..</span><span style="color:#800080">10</span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">foreach</span> <span style="color:#000000">{</span> <br /><span style="color:#000000">(</span><span style="color:#0000ff">Measure-Command</span> <span style="color:#000080">-Expression</span> <span style="color:#000000">{</span> <br /><span style="color:#0000ff">Get-QADComputer</span> <span style="color:#000080">-Service</span> <span style="color:#8a2be2">DC-P01</span> <span style="color:#000080">-OSName</span> <span style="color:#8b0000">'*Server*'</span> <span style="color:#000080">-PasswordNotChangedFor</span> <span style="color:#800080">90</span> <span style="color:#000000">`<br /></span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Where-Object</span> <span style="color:#000000">{</span><span style="color:#a9a9a9">-not</span> <span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">AccountIsDisabled</span><span style="color:#000000">}</span><span style="color:#000000">}</span><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">TotalSeconds</span> <br /><span style="color:#000000">}</span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Measure-Object</span> <span style="color:#000080">-Average</span> <br /><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Average</span> <br /><br /><span style="color:#006400"># Quest.ActiveRoles.ADManagement with LDAP filter</span> <br /><span style="color:#ff4500">$QAD_LDAP</span> <span style="color:#a9a9a9">=</span> <span style="color:#000000">(</span><span style="color:#800080">1</span><span style="color:#a9a9a9">..</span><span style="color:#800080">10</span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">foreach</span> <span style="color:#000000">{</span> <br /><span style="color:#000000">(</span><span style="color:#0000ff">Measure-Command</span> <span style="color:#000080">-Expression</span> <span style="color:#000000">{</span> <br /><span style="color:#0000ff">Get-QADComputer</span> <span style="color:#000080">-Service</span> <span style="color:#ff4500">$server</span> <span style="color:#000080">-LDAPFilter</span> <span style="color:#ff4500">$LDAP</span> <span style="color:#000000">}</span><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">TotalSeconds</span> <br /><span style="color:#000000">}</span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Measure-Object</span> <span style="color:#000080">-Average</span> <br /><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Average</span> <br /><br /><span style="color:#006400"># Active Directory Module with Filter parameter</span> <br /><span style="color:#ff4500">$AD_Filter</span> <span style="color:#a9a9a9">=</span> <span style="color:#000000">(</span><span style="color:#800080">1</span><span style="color:#a9a9a9">..</span><span style="color:#800080">10</span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">foreach</span> <span style="color:#000000">{</span> <br /><span style="color:#000000">(</span><span style="color:#0000ff">Measure-Command</span> <span style="color:#000080">-Expression</span> <span style="color:#000000">{</span> <br /><span style="color:#0000ff">Get-ADComputer</span> <span style="color:#000080">-Server</span> <span style="color:#ff4500">$server</span> <span style="color:#000080">-Filter</span> <span style="color:#000000">{</span> <span style="color:#000000">(</span><span style="color:#0000ff">OperatingSystem</span> <span style="color:#000080">-like</span> <span style="color:#8b0000">"*Server*"</span><span style="color:#000000">)</span> <span style="color:#a9a9a9">-AND</span> <br /><span style="color:#000000">(</span><span style="color:#0000ff">PasswordLastSet</span> <span style="color:#000080">-le</span> <span style="color:#ff4500">$d</span><span style="color:#000000">)</span> <span style="color:#a9a9a9">-AND</span> <span style="color:#000000">(</span><span style="color:#0000ff">Enabled</span> <span style="color:#000080">-eq</span> <span style="color:#ff4500">$True</span><span style="color:#000000">)</span><span style="color:#000000">}</span><span style="color:#000000">}</span><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">TotalSeconds</span> <br /><span style="color:#000000">}</span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Measure-Object</span> <span style="color:#000080">-Average</span> <br /><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Average</span> <br /><br /><span style="color:#006400"># Active Directory Module with LDAP Filter</span> <br /><span style="color:#ff4500">$AD_LDAP</span> <span style="color:#a9a9a9">=</span> <span style="color:#000000">(</span><span style="color:#800080">1</span><span style="color:#a9a9a9">..</span><span style="color:#800080">10</span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">foreach</span> <span style="color:#000000">{</span> <br /><span style="color:#000000">(</span><span style="color:#0000ff">Measure-Command</span> <span style="color:#000080">-Expression</span> <span style="color:#000000">{</span> <br /><span style="color:#0000ff">Get-ADComputer</span> <span style="color:#000080">-Server</span> <span style="color:#ff4500">$server</span> <span style="color:#000080">-LDAPFilter</span> <span style="color:#ff4500">$LDAP</span><span style="color:#000000">}</span><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">TotalSeconds</span> <br /><span style="color:#000000">}</span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Measure-Object</span> <span style="color:#000080">-Average</span> <br /><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Average</span> <br /><br /><span style="color:#8b0000">"Quest.ActiveRoles.ADManagement with Where-Object took {0:N2} seconds."</span> <span style="color:#a9a9a9">-f</span> <span style="color:#ff4500">$QAD_Where</span> <br /><span style="color:#8b0000">"Quest.ActiveRoles.ADManagement with LDAPFilter took {0:N2} seconds."</span> <span style="color:#a9a9a9">-f</span> <span style="color:#ff4500">$QAD_LDAP</span> <br /><span style="color:#8b0000">"Active Directory Module with filter took {0:N2} seconds."</span> <span style="color:#a9a9a9">-f</span> <span style="color:#ff4500">$AD_Filter</span> <br /><span style="color:#8b0000">"Active Directory Module with LDAPFilter took {0:N2} seconds."</span> <span style="color:#a9a9a9">-f</span> <span style="color:#ff4500">$AD_LDAP</span></span></pre></div><br />The results (for the most part) are not surprising.<br />Quest.ActiveRoles.ADManagement with Where-Object took 4.97 seconds.<br />Quest.ActiveRoles.ADManagement with LDAPFilter took 4.19 seconds.<br />Active Directory Module with filter took 3.20 seconds.<br />Active Directory Module with LDAPFilter took 3.21 seconds.<div><br /></div><div>At some point, I need to run this again with a long running query.</div><div><br /></div><div>Is this consistent with your results?</div><div><br /></div><div>Enjoy!</div>Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com0tag:blogger.com,1999:blog-8203699536544490940.post-87827557500602856102011-08-29T13:07:00.012-04:002011-08-29T14:59:45.757-04:00PowerShell and Benford's Law<span class="Apple-style-span">Was reading through a <a href="http://www.r-bloggers.com/benfords-law-or-the-first-digit-law/">statistics blog</a> (R) the other day when I read a posting on Benford's law. The definition according to the blog is:
<br />
<br />"</span><span class="Apple-style-span" style="color: rgb(68, 68, 68); font-family: 'Times New Roman'; font-size: 14px; line-height: 18px; background-color: rgb(255, 255, 255); "><b>Benford's law</b>, also called the <i>first-digit law</i></span><span class="Apple-style-span" style="color: rgb(68, 68, 68); font-family: 'Times New Roman'; font-size: 14px; line-height: 18px; background-color: rgb(255, 255, 255); ">, states that in lists of numbers from many (but not all) real-life sources of data, the leading digit is distributed in a specific, non-uniform way. According to this law, the first digit is 1 about 30% of the time, and larger digits occur as the leading digit with lower and lower frequency, to the point where 9 as a first digit occurs less than 5% of the time."
<br /></span><div><span class="Apple-style-span">
<br /></span></div><div>The probabilities are distributed as demonstration here.</div><div>
<br /><a href="http://1.bp.blogspot.com/-ipHAcmKXAoQ/TlvenzlokLI/AAAAAAAAAQM/dgtUbFuZJqQ/s1600/bedford2.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="cursor:pointer; cursor:hand;width: 400px; height: 269px;" src="http://1.bp.blogspot.com/-ipHAcmKXAoQ/TlvenzlokLI/AAAAAAAAAQM/dgtUbFuZJqQ/s400/bedford2.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5646351333283369138" /></a>
<br /></div><div><span class="Apple-style-span">
<br /></span></div><div><span class="Apple-style-span">This seemed counter-intuitive and I wanted to validate it myself. Let's look at the leading digit of all the txt files in one of my directories. Enter PowerShell.....</span></div><pre class="PowerShellColorizedScript"><span style="color:#006400"># Explore Benford's Law</span>
<br /><span style="color:#ff4500">$array</span><span style="color:#a9a9a9">=</span><span style="color:#000000">@(</span><span style="color:#000000">)</span>
<br /><span style="color:#00008b">foreach</span> <span style="color:#000000">(</span><span style="color:#ff4500">$item</span> <span style="color:#00008b">in</span> <span style="color:#000000">(</span><span style="color:#0000ff">Get-ChildItem</span> <span style="color:#000080">-Path</span> <span style="color:#8a2be2">p:\</span> <span style="color:#000080">-Filter</span> <span style="color:#8a2be2">*.txt</span> <span style="color:#000080">-Recurse</span><span style="color:#000000">)</span><span style="color:#000000">)</span>
<br /><span style="color:#000000">{</span>
<br /><span style="color:#ff4500">$array</span><span style="color:#a9a9a9">+=</span> <span style="color:#ff4500">$item</span><span style="color:#a9a9a9">.</span><span style="color:#000000">length</span><span style="color:#a9a9a9">.</span><span style="color:#000000">toString</span><span style="color:#000000">(</span><span style="color:#000000">)</span><span style="color:#a9a9a9">[</span><span style="color:#800080">0</span><span style="color:#a9a9a9">]</span>
<br /><span style="color:#000000">}</span>
<br />
<br /><span style="color:#ff4500">$array</span> <span style="color:#000000">`
<br /></span><span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Group-Object</span> <span style="color:#000080">-NoElement</span> <span style="color:#000000">`
<br /></span><span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Sort-Object</span> <span style="color:#8a2be2">count</span> <span style="color:#000080">-Descending</span> <span style="color:#000000">`
<br /></span><span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Format-Table</span> <span style="color:#000000">@{</span><span style="color:#000000">label</span><span style="color:#a9a9a9">=</span><span style="color:#8b0000">”#”</span><span style="color:#000000">;</span><span style="color:#000000">expression</span><span style="color:#a9a9a9">=</span><span style="color:#000000">{</span><span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Name</span><span style="color:#000000">}</span><span style="color:#000000">}</span><span style="color:#a9a9a9">,</span>
<br /><span style="color:#000000">@{</span><span style="color:#000000">label</span><span style="color:#a9a9a9">=</span><span style="color:#8b0000">”Count”</span><span style="color:#000000">;</span><span style="color:#000000">expression</span><span style="color:#a9a9a9">=</span><span style="color:#000000">{</span><span style="color:#8b0000">"{0:%##}"</span> <span style="color:#a9a9a9">-f</span> <span style="color:#000000">$(</span><span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Count</span><span style="color:#a9a9a9">/</span><span style="color:#ff4500">$array</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Count</span><span style="color:#000000">)</span><span style="color:#000000">}</span><span style="color:#000000">}</span><span style="color:#a9a9a9">,</span>
<br /><span style="color:#000000">@{</span><span style="color:#000000">label</span><span style="color:#a9a9a9">=</span><span style="color:#8b0000">”Histogram”</span><span style="color:#000000">;</span><span style="color:#000000">expression</span><span style="color:#a9a9a9">=</span><span style="color:#000000">{</span><span style="color:#8b0000">“▄”</span> <span style="color:#a9a9a9">*</span> <span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Count</span><span style="color:#000000">}</span><span style="color:#000000">}</span> <span style="color:#000080">-autosize</span></pre><a href="http://4.bp.blogspot.com/-aSe5-1GHE7c/TlvdNf3tpUI/AAAAAAAAAQE/furaB3_lHP0/s1600/bedford1.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="cursor:pointer; cursor:hand;width: 400px; height: 222px;" src="http://4.bp.blogspot.com/-aSe5-1GHE7c/TlvdNf3tpUI/AAAAAAAAAQE/furaB3_lHP0/s400/bedford1.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5646349781802263874" /></a><div>
<br /></div><div>I consider this a validation, but lets try one another example, this time looking at leading digits on the workingset of the processes on my desktop:</div>
<br /><pre class="PowerShellColorizedScript"><span style="color:#ff4500">$array</span><span style="color:#a9a9a9">=</span><span style="color:#000000">@(</span><span style="color:#000000">)</span>
<br /><span style="color:#00008b">foreach</span><span style="color:#000000">(</span><span style="color:#ff4500">$a</span> <span style="color:#00008b">in</span> <span style="color:#000000">(</span><span style="color:#0000ff">Get-Process</span><span style="color:#000000">)</span><span style="color:#000000">)</span>
<br /><span style="color:#000000">{</span>
<br /><span style="color:#ff4500">$array</span><span style="color:#a9a9a9">+=</span> <span style="color:#ff4500">$a</span><span style="color:#a9a9a9">.</span><span style="color:#000000">WorkingSet</span><span style="color:#a9a9a9">.</span><span style="color:#000000">toString</span><span style="color:#000000">(</span><span style="color:#000000">)</span><span style="color:#a9a9a9">[</span><span style="color:#800080">0</span><span style="color:#a9a9a9">]</span>
<br /><span style="color:#000000">}</span>
<br />
<br /><span style="color:#ff4500">$array</span> <span style="color:#000000">`
<br /></span><span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Group-Object</span> <span style="color:#000080">-NoElement</span> <span style="color:#000000">`
<br /></span><span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Sort-Object</span> <span style="color:#8a2be2">count</span> <span style="color:#000080">-Descending</span> <span style="color:#000000">`
<br /></span><span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Format-Table</span> <span style="color:#000000">@{</span><span style="color:#000000">label</span><span style="color:#a9a9a9">=</span><span style="color:#8b0000">”#”</span><span style="color:#000000">;</span><span style="color:#000000">expression</span><span style="color:#a9a9a9">=</span><span style="color:#000000">{</span><span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Name</span><span style="color:#000000">}</span><span style="color:#000000">}</span><span style="color:#a9a9a9">,</span>
<br /><span style="color:#000000">@{</span><span style="color:#000000">label</span><span style="color:#a9a9a9">=</span><span style="color:#8b0000">”Count”</span><span style="color:#000000">;</span><span style="color:#000000">expression</span><span style="color:#a9a9a9">=</span><span style="color:#000000">{</span><span style="color:#8b0000">"{0:%##}"</span> <span style="color:#a9a9a9">-f</span> <span style="color:#000000">$(</span><span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Count</span><span style="color:#a9a9a9">/</span><span style="color:#ff4500">$array</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Count</span><span style="color:#000000">)</span><span style="color:#000000">}</span><span style="color:#000000">}</span><span style="color:#a9a9a9">,</span>
<br /><span style="color:#000000">@{</span><span style="color:#000000">label</span><span style="color:#a9a9a9">=</span><span style="color:#8b0000">”Histogram”</span><span style="color:#000000">;</span><span style="color:#000000">expression</span><span style="color:#a9a9a9">=</span><span style="color:#000000">{</span><span style="color:#8b0000">“▄”</span> <span style="color:#a9a9a9">*</span> <span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Count</span><span style="color:#000000">}</span><span style="color:#000000">}</span> <span style="color:#000080">-autosize</span></pre><a href="http://1.bp.blogspot.com/-s5FdLLKTxp4/Tlvfm8gwoyI/AAAAAAAAAQU/4vxgHmv4Cmk/s1600/bedford3.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="cursor:pointer; cursor:hand;width: 400px; height: 224px;" src="http://1.bp.blogspot.com/-s5FdLLKTxp4/Tlvfm8gwoyI/AAAAAAAAAQU/4vxgHmv4Cmk/s400/bedford3.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5646352418010604322" /></a><div>
<br /></div><div>Again, this seems to hold true. Now that I have examples of Benford's law, I feel compelled to try and understand it. Wish me luck!</div><div>
<br /></div><div> </div><div>
<br /></div>Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com3tag:blogger.com,1999:blog-8203699536544490940.post-53717656413673649172011-08-25T16:06:00.009-04:002011-08-25T16:29:36.372-04:00Setting user LogonWorkstations and LogonHours in Active Directory<div class="ExternalClassA3A7ADB37B224E678D5EF0708E05D6DE"> <div class="ExternalClass48074D3B08184D40B8F8DB4A77492536 ms-rteFontSize-2 ms-rteThemeFontFace-2"> <p class="ms-rteThemeForeColor-2-0"><span><span>If you find the need to add restrictions to a user in Active Directory, specifically LogonWorkstations and logonHours then the following script will serve as a template.</span></span></p> <p class="ms-rteThemeForeColor-2-0"><span>A few notes:
<br />- We are using the ActiveDirectory module
<br />- We are using a set list of workstations
<br />- We are using a template approach for the logon hours </span></p> <pre class="PowerShellColorizedScript"><span><span><span style="color: #0000ff">Import-Module</span> <span style="color: #8a2be2">ActiveDirectory</span> <span style="color: #000080">-ErrorAction</span> <span style="color: #8a2be2">SilentlyContinue</span>
<br />
<br /><span style="color: #006400"># Define the list of workstations we want to allow access </span>
<br /><span style="color: #ff4500">$WorkStations</span> <span style="color: #a9a9a9">=</span> <span style="color: #8b0000">"Workstation1,Workstation2,Workstation3"</span>
<br /><span style="color: #ff4500">$WorkStations</span><span style="color: #a9a9a9">+=</span> <span style="color: #8b0000">"Workstation4,Workstation5,Workstation6"</span>
<br /><span style="color: #ff4500">$WorkStations</span><span style="color: #a9a9a9">+=</span> <span style="color: #8b0000">"Workstation7,Workstation8,Workstation9"</span>
<br />
<br /><span style="color: #006400"># Create the logonHours array</span>
<br /><span style="color: #008080">[array]</span><span style="color: #ff4500">$logonHours</span> <span style="color: #a9a9a9">=</span> <span style="color: #000000">(</span><span style="color: #0000ff">Get-ADUser</span> <span style="color: #8a2be2">test010</span> <span style="color: #000080">-Properties</span> <span style="color: #8a2be2">logonHours</span><span style="color: #000000">)</span><span style="color: #a9a9a9">.</span><span style="color: #000000">logonHours</span>
<br />
<br /><span style="color: #006400"># Iterate over users and assign accordingly</span>
<br /><span style="color: #00008b">foreach</span> <span style="color: #000000">(</span><span style="color: #ff4500">$user</span> <span style="color: #00008b">in</span> <span style="color: #0000ff">Get-Content</span> <span style="color: #8a2be2">C:\temp\users.txt</span><span style="color: #000000">)</span> <span style="color: #000000">{</span>
<br /><span style="color: #0000ff">Get-ADUser</span> <span style="color: #000080">-Identity</span> <span style="color: #ff4500">$user</span> <span style="color: #a9a9a9">|</span> </span></span><span><span><span style="color: #000000">`
<br /></span> <span style="color: #0000ff">Set-ADUser</span> <span style="color: #000080">-LogonWorkstations</span> <span style="color: #ff4500">$Workstations</span> <span style="color: #000080">-Add</span> <span style="color: #000000">@{</span><span style="color: #000000">logonhours</span><span style="color: #a9a9a9">=</span><span style="color: #ff4500">$logonHours</span><span style="color: #000000">}</span>
<br /><span style="color: #000000">}</span></span></span></pre>Checking our results shows that the logonHours were set exactly to what our template was.</div>
<br /><a href="http://2.bp.blogspot.com/-8t0zBho7mCI/TlaveURMMaI/AAAAAAAAAP8/ngvxqkR6W6w/s1600/logon1.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="cursor:pointer; cursor:hand;width: 400px; height: 247px;" src="http://2.bp.blogspot.com/-8t0zBho7mCI/TlaveURMMaI/AAAAAAAAAP8/ngvxqkR6W6w/s400/logon1.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5644892118327243170" /></a><div class="ExternalClass48074D3B08184D40B8F8DB4A77492536 ms-rteFontSize-2 ms-rteThemeFontFace-2">
<br /></div><div class="ExternalClass48074D3B08184D40B8F8DB4A77492536 ms-rteFontSize-2 ms-rteThemeFontFace-2">Enjoy!
<br />
<br /></div></div> Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com2tag:blogger.com,1999:blog-8203699536544490940.post-64425013317475756322011-06-23T14:50:00.002-04:002011-06-23T14:53:03.094-04:00Printer exploration with PowerShellFollowing are a few printing related PowerShell one-liners that I demonstrated for a few colleagues at work. -Enjoy!<pre class="PowerShellColorizedScript"><span style="color:#006400"># List all printer drivers on a specific server</span> <br /><span style="color:#0000ff">Get-WmiObject</span> <span style="color:#000080">-Class</span> <span style="color:#8a2be2">Win32_PrinterDriver</span> <span style="color:#000080">-ComputerName</span> <span style="color:#8a2be2">PrintServer</span> <span style="color:#000000">`<br /></span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Sort-Object</span> <span style="color:#8a2be2">Name</span> <span style="color:#000000">`<br /></span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Select-Object</span> <span style="color:#8a2be2">Name</span><span style="color:#a9a9a9">,</span> <span style="color:#8a2be2">DriverPath</span> <br /> <br /><span style="color:#006400"># List all properties of a specifc printer driver on a server</span> <br /><span style="color:#0000ff">Get-WmiObject</span> <span style="color:#8a2be2">Win32_PrinterDriver</span> <span style="color:#000080">-ComputerName</span> <span style="color:#8a2be2">PrintServer</span> <span style="color:#000080">-Filter</span> <span style="color:#8b0000">"Name='Lexmark Universal XL,3,Windows x64'"</span> <br /> <br /><span style="color:#006400"># List Printers for a specific server</span> <br /><span style="color:#0000ff">Get-WmiObject</span> <span style="color:#8a2be2">Win32_Printer</span> <span style="color:#000080">-ComputerName</span> <span style="color:#8a2be2">PrintServer</span> <span style="color:#000000">`<br /></span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Sort-Object</span> <span style="color:#8a2be2">Name</span> <span style="color:#000000">`<br /></span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Select-Object</span> <span style="color:#8a2be2">Name</span><span style="color:#a9a9a9">,</span> <span style="color:#8a2be2">DriverName</span><span style="color:#a9a9a9">,</span> <span style="color:#8a2be2">PortName</span><span style="color:#a9a9a9">,</span> <span style="color:#8a2be2">ShareName</span> <br /> <br /><span style="color:#006400"># List a specific printer on a server</span> <br /><span style="color:#0000ff">Get-WmiObject</span> <span style="color:#8a2be2">Win32_Printer</span> <span style="color:#000080">-ComputerName</span> <span style="color:#8a2be2">PrintServer</span> <span style="color:#000080">-Filter</span> <span style="color:#8b0000">"Name='P-UHC6000M-IRC2550'"</span> <br /> <br /><span style="color:#006400"># List info on print jobs</span> <br /><span style="color:#0000ff">Get-WmiObject</span> <span style="color:#8a2be2">Win32_PrintJob</span> <span style="color:#000080">-ComputerName</span> <span style="color:#8a2be2">PrintServer</span> <span style="color:#000000">`<br /></span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Select-Object</span> <span style="color:#8a2be2">Document</span><span style="color:#a9a9a9">,</span> <span style="color:#8a2be2">Owner</span><span style="color:#a9a9a9">,</span> <br /> <span style="color:#000000">@{</span><span style="color:#000000">Label</span><span style="color:#a9a9a9">=</span><span style="color:#8b0000">"Status"</span><span style="color:#000000">;</span><span style="color:#000000">Expression</span><span style="color:#a9a9a9">=</span><span style="color:#000000">{</span><span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">JobStatus</span><span style="color:#000000">}</span><span style="color:#000000">}</span><span style="color:#a9a9a9">,</span> <br /> <span style="color:#000000">@{</span><span style="color:#000000">Label</span><span style="color:#a9a9a9">=</span><span style="color:#8b0000">"PageCount"</span><span style="color:#000000">;</span><span style="color:#000000">Expression</span><span style="color:#a9a9a9">=</span><span style="color:#000000">{</span><span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">TotalPages</span><span style="color:#000000">}</span><span style="color:#000000">}</span><span style="color:#a9a9a9">,</span> <br /> <span style="color:#000000">@{</span><span style="color:#000000">Label</span><span style="color:#a9a9a9">=</span><span style="color:#8b0000">"DateSubmitted"</span><span style="color:#000000">;</span><span style="color:#000000">Expression</span><span style="color:#a9a9a9">=</span><span style="color:#000000">{</span><span style="color:#008080">[System.Management.ManagementDateTimeconverter]</span><span style="color:#a9a9a9">::</span><span style="color:#000000">ToDateTime</span><span style="color:#000000">(</span><span style="color:#ff4500">$_</span><span style="color:#a9a9a9">.</span><span style="color:#000000">TimeSubmitted</span><span style="color:#000000">)</span><span style="color:#000000">}</span><span style="color:#000000">}</span> <br /> <br /><span style="color:#006400"># List current number of jobs in each print queue</span> <br /><span style="color:#0000ff">Get-WmiObject</span> <span style="color:#000080">-Class</span> <span style="color:#8a2be2">Win32_PerfFormattedData_Spooler_PrintQueue</span> <span style="color:#000080">-Computer</span> <span style="color:#8a2be2">PrintServer</span> <span style="color:#000080">-Filter</span> <span style="color:#8b0000">"Name <> '_Total' and Jobs > 0"</span> <span style="color:#000000">`<br /></span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Sort</span> <span style="color:#8a2be2">Jobs</span> <span style="color:#000080">-Descending</span> <span style="color:#000000">`<br /></span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Select</span> <span style="color:#8a2be2">name</span><span style="color:#a9a9a9">,</span> <span style="color:#8a2be2">jobs</span> <span style="color:#000000">`<br /></span> <span style="color:#a9a9a9">|</span> <span style="color:#0000ff">Format-Table</span> <span style="color:#000080">-AutoSize</span></pre>Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com0tag:blogger.com,1999:blog-8203699536544490940.post-15071662480719996412011-02-05T14:58:00.005-05:002011-02-05T15:22:18.480-05:00PowerShell doesn't cure insomniaHad a bit of trouble sleeping last night, when I noticed that there was a perceptible difference in the amount of light the digital clock emanates.<div><br /><div><img src="http://2.bp.blogspot.com/_GKoVmIIMvWw/TU2xMM9qJ6I/AAAAAAAAAN4/w-Z_0yLFELg/s200/time.gif" style="cursor:pointer; cursor:hand;width: 200px; height: 127px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5570303137323558818" /></div><div><br /></div><div>It got me wondering what time displays the most light. Sure I could have manually figured it out, but isn't more exciting to write a script?<div><br /></div><div>Here it is:</div><pre class="PowerShellColorizedScript"><span style="color:#006400"><# Define a lookup table for the </span><span style="color:#006400">amount </span><span style="color:#006400">of light "bars" each number displays. #></span> </pre><pre class="PowerShellColorizedScript"><span style="color:#ff4500">$hash</span> <span style="color:#a9a9a9">=</span> <span style="color:#000000">@{</span><span style="color:#8b0000">"1"</span><span style="color:#a9a9a9">=</span><span style="color:#800080">2</span><span style="color:#000000">;</span><span style="color:#8b0000">"2"</span><span style="color:#a9a9a9">=</span><span style="color:#800080">5</span><span style="color:#000000">;</span><span style="color:#8b0000">"3"</span><span style="color:#a9a9a9">=</span><span style="color:#800080">5</span><span style="color:#000000">;</span><span style="color:#8b0000">"4"</span><span style="color:#a9a9a9">=</span><span style="color:#800080">4</span><span style="color:#000000">;</span> <br /> <span style="color:#8b0000">"5"</span><span style="color:#a9a9a9">=</span><span style="color:#800080">5</span><span style="color:#000000">;</span><span style="color:#8b0000">"6"</span><span style="color:#a9a9a9">=</span><span style="color:#800080">6</span><span style="color:#000000">;</span><span style="color:#8b0000">"7"</span><span style="color:#a9a9a9">=</span><span style="color:#800080">3</span><span style="color:#000000">;</span><span style="color:#8b0000">"8"</span><span style="color:#a9a9a9">=</span><span style="color:#800080">7</span><span style="color:#000000">;</span> <br /> <span style="color:#8b0000">"9"</span><span style="color:#a9a9a9">=</span><span style="color:#800080">5</span><span style="color:#000000">;</span><span style="color:#8b0000">"0"</span><span style="color:#a9a9a9">=</span><span style="color:#800080">6</span><span style="color:#000000">;</span><span style="color:#8b0000">":"</span><span style="color:#a9a9a9">=</span><span style="color:#800080">0</span><span style="color:#000000">}</span> <br /><span style="color:#ff4500">$max</span><span style="color:#a9a9a9">=</span><span style="color:#800080">0</span> <br /><span style="color:#00008b">for</span> <span style="color:#000000">(</span><span style="color:#ff4500">$hour</span> <span style="color:#a9a9a9">=</span> <span style="color:#800080">1</span><span style="color:#000000">;</span> <span style="color:#ff4500">$hour</span> <span style="color:#a9a9a9">-le</span> <span style="color:#800080">12</span><span style="color:#000000">;</span> <span style="color:#ff4500">$hour</span><span style="color:#a9a9a9">++</span><span style="color:#000000">)</span> <span style="color:#000000">{</span> <br /><span style="color:#00008b">for</span> <span style="color:#000000">(</span><span style="color:#ff4500">$minute</span> <span style="color:#a9a9a9">=</span> <span style="color:#800080">0</span><span style="color:#000000">;</span><span style="color:#ff4500">$minute</span> <span style="color:#a9a9a9">-lt</span> <span style="color:#800080">60</span><span style="color:#000000">;</span> <span style="color:#ff4500">$minute</span><span style="color:#a9a9a9">++</span><span style="color:#000000">)</span> <span style="color:#000000">{</span> <br /> <span style="color:#ff4500">$time</span> <span style="color:#a9a9a9">=</span> <span style="color:#8b0000">"{0}:{1:0#}"</span> <span style="color:#a9a9a9">-f</span> <span style="color:#ff4500">$hour</span><span style="color:#a9a9a9">,</span> <span style="color:#ff4500">$minute</span> <br /> <span style="color:#ff4500">$timeArray</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$time</span><span style="color:#a9a9a9">.</span><span style="color:#000000">ToCharArray</span><span style="color:#000000">(</span><span style="color:#000000">)</span> <br /> <span style="color:#ff4500">$sum</span><span style="color:#a9a9a9">=</span><span style="color:#800080">0</span> <br /> <span style="color:#00008b">foreach</span> <span style="color:#000000">(</span><span style="color:#ff4500">$char</span> <span style="color:#00008b">in</span> <span style="color:#ff4500">$timeArray</span><span style="color:#000000">)</span> <span style="color:#000000">{</span> <br /> <span style="color:#ff4500">$sum</span><span style="color:#a9a9a9">+=</span> <span style="color:#ff4500">$hash</span><span style="color:#a9a9a9">[</span><span style="color:#008080">[string]</span><span style="color:#ff4500">$char</span><span style="color:#a9a9a9">]</span> <br /> <span style="color:#000000">}</span> <br /> <span style="color:#00008b">if</span> <span style="color:#000000">(</span><span style="color:#ff4500">$sum</span> <span style="color:#a9a9a9">-gt</span> <span style="color:#ff4500">$max</span><span style="color:#000000">)</span> <span style="color:#000000">{</span> <br /> <span style="color:#ff4500">$max</span><span style="color:#a9a9a9">,</span> <span style="color:#ff4500">$maxTime</span> <span style="color:#a9a9a9">=</span><span style="color:#ff4500">$sum</span><span style="color:#a9a9a9">,</span> <span style="color:#ff4500">$time</span> <br /> <span style="color:#000000">}</span> <br /><span style="color:#000000">}</span> <br /><span style="color:#000000">}</span> <br /><span style="color:#8b0000">"{0}`t{1}"</span><span style="color:#a9a9a9">-f</span> <span style="color:#ff4500">$max</span><span style="color:#a9a9a9">,</span> <span style="color:#ff4500">$maxTime</span></pre>Enjoy!</div></div>Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com2tag:blogger.com,1999:blog-8203699536544490940.post-34100388263968527602011-02-05T08:45:00.002-05:002011-02-05T08:51:46.724-05:00Project Euler 112A brute force attack on <a href="http://projecteuler.net/index.php?section=problems&id=112">Project Euler #112</a>. I suspect there is a more efficient algorithm for this (not using string conversions), but this works.<br /><pre class="PowerShellColorizedScript"><span style="color:#00008b">function</span> <span style="color:#8a2be2">Test-Bouncy</span> <span style="color:#000000">{</span> <br /> <span style="color:#00008b">param</span><span style="color:#000000">(</span><span style="color:#008080">[int]</span><span style="color:#ff4500">$num</span><span style="color:#000000">)</span> <br /> <span style="color:#ff4500">$up</span><span style="color:#a9a9a9">=</span><span style="color:#ff4500">$down</span><span style="color:#a9a9a9">=</span><span style="color:#ff4500">$false</span> <br /> <span style="color:#ff4500">$numArray</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$num</span><span style="color:#a9a9a9">.</span><span style="color:#000000">ToString</span><span style="color:#000000">(</span><span style="color:#000000">)</span><span style="color:#a9a9a9">.</span><span style="color:#000000">ToCharArray</span><span style="color:#000000">(</span><span style="color:#000000">)</span> <br /> <span style="color:#ff4500">$length</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$numArray</span><span style="color:#a9a9a9">.</span><span style="color:#000000">Length</span> <br /> <span style="color:#00008b">for</span><span style="color:#000000">(</span><span style="color:#ff4500">$i</span><span style="color:#a9a9a9">=</span><span style="color:#800080">1</span><span style="color:#000000">;</span> <span style="color:#ff4500">$i</span> <span style="color:#a9a9a9">-lt</span> <span style="color:#ff4500">$length</span><span style="color:#000000">;</span> <span style="color:#ff4500">$i</span><span style="color:#a9a9a9">++</span><span style="color:#000000">)</span> <span style="color:#000000">{</span> <br /> <span style="color:#00008b">if</span> <span style="color:#000000">(</span><span style="color:#ff4500">$numArray</span><span style="color:#a9a9a9">[</span><span style="color:#ff4500">$i</span><span style="color:#a9a9a9">-</span><span style="color:#800080">1</span><span style="color:#a9a9a9">]</span> <span style="color:#a9a9a9">-lt</span> <span style="color:#ff4500">$numArray</span><span style="color:#a9a9a9">[</span><span style="color:#ff4500">$i</span><span style="color:#a9a9a9">]</span><span style="color:#000000">)</span> <span style="color:#000000">{</span> <br /> <span style="color:#ff4500">$up</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$true</span> <br /> <span style="color:#000000">}</span> <br /> <span style="color:#00008b">elseif</span> <span style="color:#000000">(</span><span style="color:#ff4500">$numArray</span><span style="color:#a9a9a9">[</span><span style="color:#ff4500">$i</span><span style="color:#a9a9a9">-</span><span style="color:#800080">1</span><span style="color:#a9a9a9">]</span> <span style="color:#a9a9a9">-gt</span> <span style="color:#ff4500">$numArray</span><span style="color:#a9a9a9">[</span><span style="color:#ff4500">$i</span><span style="color:#a9a9a9">]</span><span style="color:#000000">)</span> <span style="color:#000000">{</span> <br /> <span style="color:#ff4500">$down</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$true</span> <br /> <span style="color:#000000">}</span> <br /> <span style="color:#00008b">if</span> <span style="color:#000000">(</span><span style="color:#ff4500">$up</span> <span style="color:#a9a9a9">-and</span> <span style="color:#ff4500">$down</span><span style="color:#000000">)</span> <span style="color:#000000">{</span> <br /> <span style="color:#00008b">return</span> <span style="color:#ff4500">$true</span> <br /> <span style="color:#000000">}</span> <br /> <span style="color:#000000">}</span> <br /> <span style="color:#00008b">return</span> <span style="color:#ff4500">$false</span> <br /><span style="color:#000000">}</span> <br /> <br /><span style="color:#ff4500">$isBouncy</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$ratio</span> <span style="color:#a9a9a9">=</span> <span style="color:#800080">0</span> <br /><span style="color:#ff4500">$x</span> <span style="color:#a9a9a9">=</span> <span style="color:#800080">1</span> <br /><span style="color:#00008b">while</span> <span style="color:#000000">(</span><span style="color:#ff4500">$ratio</span> <span style="color:#a9a9a9">-lt</span> <span style="color:#800080">.99</span><span style="color:#000000">)</span> <span style="color:#000000">{</span> <br /> <span style="color:#00008b">if</span><span style="color:#000000">(</span><span style="color:#0000ff">Test-Bouncy</span> <span style="color:#ff4500">$x</span><span style="color:#000000">)</span> <span style="color:#000000">{</span> <br /> <span style="color:#ff4500">$isBouncy</span><span style="color:#a9a9a9">++</span> <br /> <span style="color:#ff4500">$ratio</span> <span style="color:#a9a9a9">=</span> <span style="color:#ff4500">$isBouncy</span><span style="color:#a9a9a9">/</span><span style="color:#ff4500">$x</span> <br /> <span style="color:#000000">}</span> <br /> <span style="color:#ff4500">$x</span><span style="color:#a9a9a9">++</span> <br /><span style="color:#000000">}</span> <br /> <br /><span style="color:#8b0000">"{0}`t{1}"</span> <span style="color:#a9a9a9">-f</span> <span style="color:#000000">(</span><span style="color:#ff4500">$x</span><span style="color:#a9a9a9">-</span><span style="color:#800080">1</span><span style="color:#000000">)</span><span style="color:#a9a9a9">,</span><span style="color:#ff4500">$ratio</span></pre><pre class="PowerShellColorizedScript"><span class="Apple-style-span" style="font-family: Georgia, serif; white-space: normal; font-size: 16px; ">Enjoy!</span></pre>Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com0tag:blogger.com,1999:blog-8203699536544490940.post-82308038892049880682010-10-20T14:47:00.004-04:002010-10-20T17:00:56.128-04:00Getting Database counts per Exchange Server via PowerShellWas recently asked to generate a report of the total count of items per Exchange database per server. This one-liner (broken up for readability), takes care of it.<br /><pre class='PowerShellColorizedScript'><span style='color:#0000ff'>Get-MailboxServer</span> <span style='color:#a9a9a9'>|</span> <span style='color:#0000ff'>Get-MailboxStatistics</span> <span style='color:#a9a9a9'>|</span> <span style='color:#000000'>`<br /></span><span style='color:#0000ff'>Sort-Object</span> <span style='color:#8a2be2'>DatabaseName</span> <span style='color:#a9a9a9'>|</span> <span style='color:#000000'>`<br /></span><span style='color:#0000ff'>Select</span> <span style='color:#8a2be2'>DatabaseName</span><span style='color:#a9a9a9'>,</span> <span style='color:#8a2be2'>ItemCount</span> <span style='color:#a9a9a9'>|</span> <span style='color:#000000'>`<br /></span><span style='color:#0000ff'>Group-Object</span> <span style='color:#000080'>-Property</span> <span style='color:#8a2be2'>DatabaseName</span> <span style='color:#a9a9a9'>|</span> <span style='color:#000000'>`<br /></span><span style='color:#0000ff'>Foreach</span> <span style='color:#000000'>{</span> <br /> <span style='color:#ff4500'>$items</span> <span style='color:#a9a9a9'>=</span> <span style='color:#000000'>(</span><span style='color:#ff4500'>$_</span><span style='color:#a9a9a9'>.</span><span style='color:#000000'>Group</span> <span style='color:#a9a9a9'>|</span> <span style='color:#0000ff'>Measure-Object</span> <span style='color:#000080'>-Property</span> <span style='color:#8a2be2'>ItemCount</span> <span style='color:#000080'>-sum</span><span style='color:#000000'>)</span><span style='color:#a9a9a9'>.</span><span style='color:#000000'>Sum</span> <br /> <span style='color:#8b0000'>"{0}`t{1:N0}"</span> <span style='color:#a9a9a9'>-f</span> <span style='color:#ff4500'>$_</span><span style='color:#a9a9a9'>.</span><span style='color:#000000'>Name</span><span style='color:#a9a9a9'>,</span><span style='color:#ff4500'>$items</span> <br /><span style='color:#000000'>}</span></pre>This will generate something like the following:<br /><table border="1"><tbody><tr><td>Exchange01-DB01</td><td>1,372,127</td></tr><tr><td>Exchange01-DB02</td><td>1,522,356</td></tr><tr><td>Exchange01-DB03</td><td>1,406,486</td></tr><tr><td>Exchange01-DB04</td><td>1,345,962</td></tr><tr><td>Exchange01-DB05</td><td>1,330,690</td></tr><tr><td>Exchange01-DB06</td><td>1,392,853</td></tr><tr><td>Exchange01-DB07</td><td>1,318,130</td></tr><tr><td>.....</td><td>.....</td></tr></tbody></table><br /><br />Enjoy!Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com1tag:blogger.com,1999:blog-8203699536544490940.post-63264246511231068702010-10-07T14:49:00.012-04:002010-10-07T15:11:44.018-04:00Managing Proxy Settings with PowerShellI find myself changing proxy settings often on my laptop between various environments (Home, Production and Test). Generally this is no big deal. But today, I found myself switching multiple times as I was testing ISA and realized that PowerShell can easily take care of this.<br /><br /><div>At some point, I will wrap this into a GUI but for now, here is the script.<br /><br /></div><div>Note: I am using Jeff Hick's <a href="http://jdhitsolutions.com/blog/2010/10/test-registry-item/">Test-RegistryItem</a>.Enjoy!</div><pre class="PowerShellColorizedScript"><span style="color:#00008b"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">function</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8a2be2"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Set-Proxy</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">{</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">[</span></span></span><span style="color:#add8e6"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">cmdletbinding</span></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">(</span></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">)</span></span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">]</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#00008b"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Param</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">(</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">[</span></span></span><span style="color:#add8e6"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Parameter</span></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">(</span></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Position</span></span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">=</span></span></span><span style="color:#800080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">0</span></span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">,</span></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Mandatory</span></span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">=</span></span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$True</span></span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">,</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">HelpMessage</span></span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">=</span></span></span><span style="color:#8b0000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">"Enter either `"Home`", `"Production`" or `"Test`"."</span></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">)</span></span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">]</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">[</span></span></span><span style="color:#add8e6"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">ValidateNotNullOrEmpty</span></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">(</span></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">)</span></span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">]</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">[</span></span></span><span style="color:#add8e6"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">ValidateSet</span></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">(</span></span></span><span style="color:#8b0000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">"Home"</span></span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">,</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8b0000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">"Production"</span></span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">,</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8b0000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">"Test"</span></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">)</span></span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">]</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#008080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">[String]</span></span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$Location</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">)</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> <br /> </span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">=</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8b0000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">"HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$url</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#a9a9a9"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">=</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8b0000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">"http://autoconf.FatBeard.com/proxy.pac"</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> <br /> </span></span><span style="color:#00008b"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">switch</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">(</span></span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$location</span></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">)</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">{</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#8b0000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">"Home"</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">{</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#0000ff"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Set-ItemProperty</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Name</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8a2be2"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">ProxyEnable</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Value</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#800080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">0</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#00008b"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">if</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">(</span></span></span><span style="color:#0000ff"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Test-RegistryItem</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Property</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8a2be2"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">ProxyServer</span></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">)</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">{</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#0000ff"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Remove-ItemProperty</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Name</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8a2be2"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">ProxyServer</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">}</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#00008b"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">if</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">(</span></span></span><span style="color:#0000ff"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Test-RegistryItem</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Property</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8a2be2"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">AutoConfigURL</span></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">)</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">{</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#0000ff"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Remove-ItemProperty</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Name</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8a2be2"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">AutoConfigURL</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">}</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">}</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#8b0000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">"Production"</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">{</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#0000ff"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Set-ItemProperty</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Name</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8a2be2"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">ProxyEnable</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Value</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#800080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">0</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#0000ff"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Set-ItemProperty</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Name</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8a2be2"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">AutoConfigURL</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Value</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$url</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">}</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#8b0000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">"Test"</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">{</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#0000ff"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Set-ItemProperty</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Name</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8a2be2"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">ProxyEnable</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Value</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#800080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">1</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#0000ff"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Set-ItemProperty</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Name</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8a2be2"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">ProxyServer</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Value</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8b0000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">"TestProxy-vt01:8080"</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#00008b"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">if</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">(</span></span></span><span style="color:#0000ff"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Test-RegistryItem</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Property</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8a2be2"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">AutoConfigURL</span></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">)</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">{</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#0000ff"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">Remove-ItemProperty</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#ff4500"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">$path</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#000080"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">-Name</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> </span></span><span style="color:#8a2be2"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">AutoConfigURL</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">}</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">}</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /> </span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">}</span></span></span><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;"> <br /></span></span><span style="color:#000000"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: small;">}</span></span></span></pre>Enjoy!Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com1tag:blogger.com,1999:blog-8203699536544490940.post-24632062537691050472010-09-15T10:41:00.010-04:002010-09-15T11:17:33.395-04:00PowerShell & User Certificates<span class="Apple-style-span" style="font-size:medium;">I was recently asked if I could generate a report of user certificates. I recalled doing this with a .NET class a while back, here is that function:<br /></span><pre class="PowerShellColorizedScript"><span style="color:#00008b;"><span class="Apple-style-span" style="font-size:small;">function</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#8a2be2;"><span class="Apple-style-span" style="font-size:small;">Get-Certificate</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">{</span></span><span class="Apple-style-span" style="font-size:small;"> <br /></span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">[</span></span><span style="color:#add8e6;"><span class="Apple-style-span" style="font-size:small;">cmdletBinding</span></span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">(</span></span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">)</span></span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">]</span></span><span class="Apple-style-span" style="font-size:small;"> <br /></span><span style="color:#00008b;"><span class="Apple-style-span" style="font-size:small;">param</span></span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">(</span></span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">[</span></span><span style="color:#add8e6;"><span class="Apple-style-span" style="font-size:small;">Parameter</span></span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">(</span></span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">Position</span></span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">=</span></span><span style="color:#800080;"><span class="Apple-style-span" style="font-size:small;">0</span></span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">,</span></span><span class="Apple-style-span" style="font-size:small;"> <br /></span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">Mandatory</span></span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">=</span></span><span style="color:#ff4500;"><span class="Apple-style-span" style="font-size:small;">$True</span></span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">,</span></span><span class="Apple-style-span" style="font-size:small;"> <br /></span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">ValueFromPipeLine</span></span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">=</span></span><span style="color:#ff4500;"><span class="Apple-style-span" style="font-size:small;">$True</span></span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">)</span></span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">]</span></span><span class="Apple-style-span" style="font-size:small;"> <br /></span><span style="color:#008080;"><span class="Apple-style-span" style="font-size:small;">[String]</span></span><span style="color:#ff4500;"><span class="Apple-style-span" style="font-size:small;">$user</span></span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">)</span></span><span class="Apple-style-span" style="font-size:small;"> <br /> <br /></span><span style="color:#00008b;"><span class="Apple-style-span" style="font-size:small;">Begin</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">{</span></span><span class="Apple-style-span" style="font-size:small;"> <br /> </span><span style="color:#0000ff;"><span class="Apple-style-span" style="font-size:small;">Add-PSSnapin</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">`<br /></span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000080;"><span class="Apple-style-span" style="font-size:small;">-Name</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#8a2be2;"><span class="Apple-style-span" style="font-size:small;">Quest.ActiveRoles.ADManagement</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">`<br /></span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000080;"><span class="Apple-style-span" style="font-size:small;">-ErrorAction</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#8a2be2;"><span class="Apple-style-span" style="font-size:small;">SilentlyContinue</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">}</span></span><span class="Apple-style-span" style="font-size:small;"> <br /> <br /></span><span style="color:#00008b;"><span class="Apple-style-span" style="font-size:small;">Process</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">{</span></span><span class="Apple-style-span" style="font-size:small;"> <br /> </span><span style="color:#0000ff;"><span class="Apple-style-span" style="font-size:small;">Get-QADUser</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000080;"><span class="Apple-style-span" style="font-size:small;">-Identity</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#ff4500;"><span class="Apple-style-span" style="font-size:small;">$user</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">|</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">`<br /></span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#0000ff;"><span class="Apple-style-span" style="font-size:small;">Foreach</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">{</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#ff4500;"><span class="Apple-style-span" style="font-size:small;">$_</span></span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">.</span></span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">DirectoryEntry</span></span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">.</span></span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">userCertificate</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">}</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">|</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">`<br /></span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#0000ff;"><span class="Apple-style-span" style="font-size:small;">Foreach</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">{</span></span><span style="color:#008080;"><span class="Apple-style-span" style="font-size:small;">[System.Security.Cryptography.X509Certificates.X509Certificate2]</span></span><span style="color:#ff4500;"><span class="Apple-style-span" style="font-size:small;">$_</span></span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">}</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">|</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">`<br /></span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#0000ff;"><span class="Apple-style-span" style="font-size:small;">Select</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#8a2be2;"><span class="Apple-style-span" style="font-size:small;">Issuer</span></span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">,</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#8a2be2;"><span class="Apple-style-span" style="font-size:small;">Subject</span></span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">,</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#8a2be2;"><span class="Apple-style-span" style="font-size:small;">NotBefore</span></span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">,</span></span><span style="color:#8a2be2;"><span class="Apple-style-span" style="font-size:small;">NotAfter</span></span><span class="Apple-style-span" style="font-size:small;"> <br /></span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">}</span></span><span class="Apple-style-span" style="font-size:small;"> <br /></span><span style="color:#000000;"><span class="Apple-style-span" style="font-size:small;">}</span></span></pre><span class="Apple-style-span" style="font-size:medium;">However, assuming you have the most recent version of the </span><a href="http://www.quest.com/powershell/activeroles-server.aspx"><span class="Apple-style-span" style="font-size:medium;">Quest Active Directory cmdlets (1.4.0)</span></a><span class="Apple-style-span" style="font-size:medium;">, this becomes a trivial task.<br /></span><pre class="PowerShellColorizedScript"><span style="color:#0000ff;"><span class="Apple-style-span" style="font-size:small;">Get-QADUser</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#000080;"><span class="Apple-style-span" style="font-size:small;">-Identity</span></span><span class="Apple-style-span" style="font-size:small;"> FatBeard </span><span style="color:#a9a9a9;"><span class="Apple-style-span" style="font-size:small;">|</span></span><span class="Apple-style-span" style="font-size:small;"> </span><span style="color:#0000ff;"><span class="Apple-style-span" style="font-size:small;">Get-QADCertificate</span></span></pre><pre><span class="Apple-style-span" style="font-size:small;">IssuedBy IssuedTo ValidFrom ValidTo<br />-------- -------- --------- -------<br />OSUMC EnterpriseRoot CA Fat Beard 6/3/2010 6/3/2011<br />OSUMC EnterpriseRoot CA Fat Beard 11/9/2009 11/9/2010</span></pre><span class="Apple-style-span" style="font-size:medium;">Enjoy!</span>Anonymoushttp://www.blogger.com/profile/11429234705232767882noreply@blogger.com0