PowerShell Team

Automating the world one-liner at a time…

Latest posts

Dec 23, 2008
Post comments count 0
Post likes count 0

Advanced Functions and Test-LeapYear.ps1

PowerShell Team

Welcome to CTP3!  There are just an amazing amount of really important features in V2 but the one I want everyone to start using ASAP is Advanced Functions.  In CTP2 we called this cmdlets.  We dropped that term in favor of taking the idea of a FUNCTION and just making it more and more capable.  It is a bit of a misnomer in that you can have an "Advanced function" by just adding a single line to your script.  You'll be amazed what that single line gives you; but we'll explore that later.  This entry recaps where we are with functions and then begins to give you a feel for some of the...

Dec 23, 2008
Post comments count 0
Post likes count 0

More Advanced Functions – Get-Assembly and Get-ExportedType

PowerShell Team

Tyson Kopczynski has just published a great article Fun with PowerShell 2.0 Eventing!  That inspired to to write a script to automatically backup my modules directory.  I'm doing a lot of scripting this week and I don't want to lose my work if I make a mistake.  I thought I would write a scripting using PowerShell 2.0 Eventing to watch my directory and then make a backup copy automatically. The way to do this is with a FileSystem Watcher or something like that.  Here is where the story changes and why the title of this blog is not "Backup Your Modules Automatically with PS V2 Eventing". ...

Dec 23, 2008
Post comments count 0
Post likes count 0

PowerShell V2: ParameterSets

PowerShell Team

One of the great benefits of PowerShell V2 Advanced Functions is the ease in which you can support parametersets.  ParameterSets are, well, different SETS of valid parameters.  For instance you can say: Get-Process -id 0 Get-Process -Name *ss Those are 2 different parametersets for the Get-Process cmdlet.  Here is an example of how you would code parametersets using advanced functions: function test-param { param( [Parameter(ParameterSetName="p1",Position=0)] [DateTime] $d, [Parameter(ParameterSetName="p2", Position=0)] [int] $i )     switch ($PsCmdlet.ParameterSetName)  &n...

Dec 23, 2008
Post comments count 0
Post likes count 0

Windows PowerShell CTP2 to CTP3 Conversion Guide

PowerShell Team

I write a lot of scripts, and, since I blog some of what I write, my home computer has been running Windows PowerShell CTP2 since it came out.  Since CTP3 has a number of changes from CTP2, I've got to update my home script library to work with CTP3.  While this guide might not have every change that happened in between CTP2 and CTP3 (because I script with most, but not all, of PowerShell), I hope that this record of conversion steps helps everyone else moving from Windows PowerShell CTP2 to CTP3.  Oisin Grehan has posted a fairly complete list of cmdlet name changes on his blog, Nivot Ink.  T...

Dec 23, 2008
Post comments count 0
Post likes count 0

Dreaming In PowerShell V2 : Lottery Numbers with Get-Random

PowerShell Team

Tobias Weltner writes a blog called Dreaming In PowerShell, and he recently posted a way to get a list of unique lottery numbers with PowerShell.  Dreaming In PowerShell is a cool blog, and the post is interesting, but it makes an assertion that's no longer true in V2.  He uses System.Random to create the random numbers because he asserts that there isn't a cmdlet to Get random numbers.  Get-Random is a V2 cmdlet that can not only give you random numbers, but can give you unique random numbers within a range My CTP3 version is on the left, Tobias' V1 version is on the right: The core function...

Dec 15, 2008
Post comments count 0
Post likes count 0

Mount-SpecialFolders.ps1

PowerShell Team

The other day I showed you how you can use ENUMs.  I showed an example of how you can find all the SPECIALFOLDERs on a system.  Here is a script that I call Mount-SpecialFolders.ps1 which mounts all your special folders as PowerShell drives.   # Mount-SpecialFolders.ps1 # param($Folder="*", [SWITCH]$Verbose, [SWITCH]$PassThru) foreach ($f in [Enum]::GetValues([System.Environment+SpecialFolder]) |where {$_ -like $Folder}) {     $drive = New-PSDrive -Name $f -PSProvider FileSystem -Root ([Environment]::GetFolderPath($f)) -Scope Global -ErrorAction Silen...

Dec 14, 2008
Post comments count 0
Post likes count 0

What the Heck is an ENUM?

Radhika Tadinada

In my latest post Explore your [Environment] I said the following: PS> [System.Environment+SpecialFolder] IsPublic IsSerial Name                                     BaseType -------- -------- ----                                     -------- Fa...

Dec 13, 2008
Post comments count 0
Post likes count 0

Explore Your [Environment]

PowerShell Team

This topic is a little long but I strongly encourage you to walk through it and master the techniques it illustrates.  I can assure you that you'll will use them a couple thousand times in the next couple of years. .Net provides a wonderful class called System.Environment that tells you all about your environment.  It is well worth taking a few minutes to stop what you are doing and explore this class so that you understand its capabilities.  That way when a relevant issue comes up, you'll know that there is very simple way to get the answer.  First thing to remember is that they way you sp...

Dec 11, 2008
Post comments count 0
Post likes count 0

Gesticulating Ben Pearce

PowerShell Team

I gave a talk with Ben Pearce during IT Forum in Barcelona this year.  It was the first time I had ever given a talk with Ben as was shocked (and delighted) by his speaking style.  Ben is an awesome presenter.  Full Stop.  That said, one of his presentation techniques is to use of very energetic, very large, very expressive arm movements.  No until you understand this, you might think that Ben was having an seizure on stage.  (If you watch the first talk you see Ben starting the talk with some wild movements and when it my part of the intro - I just sorta stared at him not knowing ...