PowerShell Team

PowerShell Team, PowerShell

PowerShell is a task-based command-line shell and scripting language built on .NET. PowerShell helps system administrators and power-users rapidly automate tasks that manage operating systems (Linux, macOS, and Windows) and processes.

Post by this author

Days till Xmas

My daughter loves christmas.  She often asks me, "how long is it till christmas?"  The problem with that is that I'm one of those people that can barely remember what year it is much less the date.  Well, it is one thing to be a flawed person and its another thing to disappoint your daughter.  Monad to the rescue! Here ...

Finding which parameters are used the most

We are in the process of cleaning up our Cmdlets and ensuring that they are consistent.  One of the things we want to do is the ensure that we provide Aliases for ParameterNames.  As a general rule, parameternames are not pithy.  That is great for reading scripts but can be a pain during interactive sessions.  You only ...

Invoking Scriptblocks from C#

Last time somebody asked for an example of a C# method that took a scriptblock.  First of all, there’s one very important thing you have to know about scriptblocks as they are currently implemented.  They can’t be invoked outside of a runspace.  Any attempt to do so will result in an exception.  Some of you may ...

Minding Path Inputs in a Cmdlet

When I was a Monad neophyte, I was asked to write a Cmdlet taking a file path as a parameter. A big mistake I made was not keeping in mind that in Monad the FileSystem provider was just one of the many providers. (This makes Monad different from many other shells where you are always in a directory.) For a path-taking Cmdlet, this means two...

Adding help for cmdlets in a MshSnapIn

Now that you know how to create an MshSnapIn, you might want to add help content for all those cmdlets that you developed and get them displayed by “get-help” cmdlet.  To add help content you must know how a Monad Cmdlet Help file looks. See any of the *-Help.xml files in Monad installation directory for reference. I wont be ...

Single Shell vs Custom Shell

With Monad Beta 3 release, we've introduced the concept of the "single shell". What is a single shell? "One shell to rule them all ... and in the darkness..." (Sorry I can't stop saying that quote everytime I hear "single shell"!) Well rather than having to create a separate executable/shell to host your own cmdlets/providers, you can now ...

Ensuring Script Portability with #requires

With the MshSnapIn model in Beta 3, there is no gaurantee that a certain Cmdlet or Provider, apart from those in the default MshSnapIns, is available at any point. There could be a number of reasons. The MshSnapIn may not have been installed. The MshSnapIn could be removed with the remove-mshsnapin Cmdlet ...

Mshsnapin (part 2): developing a mshsnapin.

To develop a mshsnapin, you can use following three simple steps, Following is the sample code for a mshsnapin class. Basically, you just need to fill in information about name, vendor and description of the mshsnapin. namespace XYZ.TestNameSpace{    [RunInstaller(true)]    public class ...

Mshsnapin (part 1): usage of mshsnapin commands.

Latest beta3 release of monad added the capability of adding/removing cmdlets and providers in current running session through mshsnapins. Mshsnapin is a logic group of cmdlets and providers can be manipulate as a unit in monad engine. Following commands can be used for manipulating mshsnapins, - George [Edit: Monad has...

Using Monad for logon scripts

In case you were wondering, yes, you can use Monad for your logon scripts.  You can't just assign a .MSH file as a logon script however, since only file types with file associations work as logon scripts.  Monad installation doesn't create a file association ".MSH -> msh.exe -command %1" for security reasons.  The best way...