I was delivering my session today at the Alpharetta (Atlanta) PFE Technology Day, and needed to come up with a good way to give away a free book to the class.  Right before class I threw a little script together to use the random number capabilities of PowerShell.  The script is below:

 

 

$rand = new-object random

$ofstudents = 50

for ($i=1;$i -le 100;$i++)

{[math]::Round($rand.NextDouble()*$ofstudents,0)}

start-sleep -seconds 2

cls

write-host "And the Winner Is!!!!!"

start-sleep -seconds 5

(new-object -comobject wscript.shell).Popup($([math]::Round($rand.NextDouble()*$ofstudents,0)))

 

The key piece here is the use of the object type "random" which is system.random and can be found in the MSDN .Net documentation (http://msdn.microsoft.com/en-us/library/system.random.aspx).  Once the object is created, you use methods to actually get the numbers.  I have always like getting a decimal between 0 and 1 so that I can simply multiply it times the range I want to generate any number.  I am using the .NextDouble() method to get my numbers (http://msdn.microsoft.com/en-us/library/system.random.nextdouble.aspx).  In this case I multiply it times the number of students and round off the number.  I do this 100 times and the 101 first random number is the winner.

I took this opportunity as well to use the old wscript.shell .Popup() method to created a little popup box for the winner display.  Like most of my posts, this is not rocket science here, but it was a fun little way to demo a simple PowerShell script that uses random numbers and an old COM object while giving away some SWAG...yes it was Ed Wilson's PowerShell Step-By-Step book :)

 

 

This posting is provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm.