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... (continues...)
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.)
'Darren Gosbell' on Thu, 13 Jul 2006 12:05:10 GMT, sez: Dan Sullivan has a post here http://pluralsight.com/blogs/dan/archive/2005/12/29/17703.aspx on using Powershell (while it was still called Monad) with SQL Management Objects (SMO). This could probably be extended and wrapped into a provider.
And I have been working on a Powershell Provider that works with Analysis Services 2005 http://geekswithblogs.net/darrengosbell/archive/2006/05/07/AmoPsProvider.aspx
'Eber Irigoyen' on Thu, 13 Jul 2006 15:02:27 GMT, sez: dude this is cool, keep this little tutorials coming!
'lb' on Thu, 13 Jul 2006 21:41:56 GMT, sez: thanks darren and eber....
i wish i had time to tinker with this stuff more!
more tutorials will definitely be written, but don't think i have time to work on a powershell provider for db's... but i've been imagining just such a thing for about six years now... originally as a console app called "b*r*a*i*n" which never got off the ground...
'some dude' on Fri, 14 Jul 2006 06:15:41 GMT, sez: why is this exciting?
I guess it brings a teeny tiny bit of the power of the BASH Shell to Windows users.
'lb' on Sun, 16 Jul 2006 10:47:52 GMT, sez: "Creating a PowerShell Drive Provider"
http://windowssdk.msdn.microsoft.com/en-us/library/ms714614.aspx
"Creating a PowerShell Container Provider", http://windowssdk.msdn.microsoft.com/en-us/library/ms714652.aspx
"Designing Your PowerShell Provider"
http://windowssdk.msdn.microsoft.com/en-us/library/ms714601.aspx
volunteers needed...
'Matt Hamilton' on Fri, 20 Oct 2006 07:32:36 GMT, sez: How about a provider for the IE7 RSS feed store?
http://www.madprops.org/cs/blogs/mabster/archive/2006/10/20/A-Common-Feed-Store-PowerShell-Provider.aspx
'Timothy Lee Russell' on Mon, 17 Sep 2007 19:05:01 GMT, sez: Access the Amazon Simple Storage Service (S3) with the S3Nas PowerShell Provider:
http://s3nas.com/Default.aspx?tabid=53&EntryID=10
'assman' on Sat, 05 Jan 2008 00:31:32 GMT, sez: Bash shell is a piece of crap compared to Powershell. No actually Bash shell is just a piece of crap.
|