Babysteps in PowerShell part deux: Variables! Real Proper Variables!

Alright, I've been tinkering with PowerShell for a few evenings now, and the latest thing I've started to unravel is how variables work.

Variables are prefixed with a dollar sign. [This is probably an idea they got from the world's simplest code generator ;-) ].

And they seems to use implicit typing [aka 'Duck Typing']

Now watch as we get the basics sorted out, and prepare to move on to trickier things...


First we'll declare the variable 'Oswald', by assigning something to it:

PS C:\> $Oswald = "explorer"
OK let's see if that worked...
PS C:\> echo $Oswald  <-- echo is an alias for 'Write-Output'... 'print' is another alias for it
explorer   <-- Oswald's value is 'explorer'. Nice
Okay, now let's check what type of variable we've got:
PS C:\> $Oswald.gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object

Okay, now let's use the variable as a parameter:
PS C:\> get-process $Oswald

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    375      12    17584      26304    90    21.91   3068 explorer

Okay. Groovy stuff. But there's more to come...

Now for the Wicked Stuff!

Once Upon A PowerShell i went looking for a cmdLet to display a list of all the current drives.

I found one, 'Get-PSDrive' which does exactly that... but i was gobsmacked at what else it revealed!

'Power shell drives' are not just your boring old 'C:' etc -- they can be all sorts of hierarchical structures, such a registry keys, environment variables, functions(!) and more.

(I bet you can create your own powershell drives. [yep 'New-PSDrive', aka 'mount'] Now imagine one for navigating a relational database... hey there's a fun and magical challenge!)

PS C:\> cd Variable:  <-- 'cd' is an alias for 'Set-Location'
The way cool thing is that 'Variable' is a power shell drive, that 
shows you all the variables you have access to. A bit like exploring the 'locals' window 
while debugging in visual studio. Only they're not just local.

Let's look for all variables starting with 'O'... 
PS Variable:\> dir o* <-- 'dir' is an alias for 'Get-ChildItem'... 
                          ('ls' also does the trick)

Name                           Value
----                           -----
Oswald                         explorer <-- Here's Oswald!

PS Variable:\>

And there ends my learnings for tonight.

I'm thinkin powerSHELL is more like powerSHEAVEN!

(ah... power-puns.)


I'm currently writing a book about how to build your first product. If you want to build your first product, please sign up to be notified when the book is available.

(By the way, I read every comment and often respond.)

Your comment, please?

Your Name
Your Url (optional)
Note: I may edit, reuse or delete your comment. Don't be mean.