PowerShell

Automating the world one-liner at a time…

Debugging Monad Scripts, Part 1: Teminating vs. Non-Terminating, ErrorRecord
Debugging Monad Scripts, Part 1: Teminating vs. Non-Terminating, ErrorRecord
Did your command or script fail and/or report an error?  We hope to have a proper script debugger in a future version, but until then, MSH has some handy features to help you figure out what went wrong.  In this series of blog entries, I will present some of those features.  Thanks to Jim Truher [MSFT], Bruce Payette [MSFT],
Image Conversion
Image Conversion
  I needed to convert some images from bmp to gif for a web site I've been working on.  I figured that I could script this pretty easy - here's what I came up with.  It's a little more general than I needed, and I thought it might be useful to others.  Anyway, it's useful to me.      # Convert one graphic
Duplicate Files 2
Duplicate Files 2
A long time ago I posted a filter (AddNote) for adding notes to objects.  Some time later I posted a function (Get-MD5) for calculating the MD5 hash of a file and somebody asked how that could be used in a script to list all the files in a given folder that are very likely the same.  I like that question because the answer it allo
Duplicate Files
Duplicate Files
Need a way to check if two files are the same?  Calculate a hash of the files.  Here is one way to do it:   ## Calculates the hash of a file and returns it as a string. function Get-MD5([System.IO.FileInfo] $file = $(throw 'Usage: Get-MD5 [System.IO.FileInfo]')) {   $stream = $null;   $cryptoServiceProvider = [Syste
Adding Notes
Adding Notes
  A while back I mentioned that there was a way of adding notes to objects in the shell. Here is one way to do it: ## Adds a note to the pipeline input. filter AddNote([string] $name, $value) { $mshObj = [System.Management.Automation.MshObject] $_; $note = new-object System.Management.AUtomation.MshNoteProperty $name, $value $mshObj.M
MshObject and Methods that take object
MshObject and Methods that take object
Every once in a while people ( including me) run into trouble calling methods that take object.  Why?  Well, as I told you earlier objects in MSH are wrapped by an invisible MshObject.  As it turns out that this invisible object is not always so invisible.  Take a look at the following:   MSH>$key = get-item . MS
Support for Existing apps in Monad
Support for Existing apps in Monad
Monad provides strong support for existing apps and technology.  If you use native cmdline exes, vbscripts, batch files, perl scripts etc to manage and maintain windows, you can pretty much use them the same way from monad as you would from cmd.exe.   For example, I am used to findstr.exe and xcopy.exe. I can use them from monad a
Did you know? #4
Did you know? #4
Did you know that you can access most of the Cmdlet base class APIs through script using the $executioncontext variable? -Jeff Jones
Did you know? #3
Did you know? #3
Did you know that you can put constraints on variables using the same attributes as cmdlet parameters?Unfortunately we had to postpone the language support for this but you can still do it using new-object.MSH > $a = "foo"MSH > $varA = get-variable aMSH > $varAName           &n
Did you know? #1
Did you know? #1
Did you know that you can access the content of a provider using the variable syntax? For instance, you can get and set the contents of a file just by doing the following:MSH > ${c:\temp\foo.txt} = "bar"MSH > ${c:\temp\foo.txt}barMSH > Note, the default encoding is used when setting the content in the filesystem in this way. Any pr