Prof. Powershell

Prof. Powershell: Provider Peek

PSDrives work like real drives, only differently. Here's how to work with these PSProviders in PowerShell.

You're probably familiar with PSDrives in PowerShell. These "drives" usually present hierarchical systems, like the registry, as any other drive that you can navigate using common commands like DIR:

PS C:\> dir hklm:\system\currentcon 
trolset\services\spooler

The element that makes this possible is referred to as a PSProvider. PSProviders are bundled with PowerShell snap-ins and installed by default when you load the snap-in. When you run the Get-PSDrive cmdlet, you'll see all mapped PSDrives.

Notice the Provider column? What are these things? To answer that question, we'll use a cmdlet called Get-PSProvider:

PS C:\> get-psprovider

This cmdlet will show all currently loaded PSProviders. If you have a snap-in installed but not currently loaded into your PowerShell session, you won't see any PSProviders included in that snap-in until you load it. Or you can look at the details for a specific provider:

PS C:\> get-psprovider registry | select *
ImplementingType : Microsoft.PowerShell.Commands.RegistryProvider
HelpFile : System.Management.Automation.dll-Help.xml
Name : Registry
PSSnapIn : Microsoft.PowerShell.Core
Description :
Capabilities : ShouldProcess
Home :
Drives : {HKLM, HKCU}

The most important information that Get-PSProvider supplies is the provider's capabilities. As you work with cmdlets like Get-ChildItem, you'll notice that they may behave differently based on the PSDrive. For example, you can use the -filter parameter when searching a local drive, but not when searching the registry; you'll get an error message that filtering isn't supported. If you look at the capabilities of the Registry PSProvider, you'll notice that Filter is not included. It's up to the provider developer to decide what capabilities to include.

As you're exposed to new PowerShell snap-ins and even PowerShell 2.0, you'll see additional PSProviders with some very snazzy capabilities. But remember that even though a PSProvider offers a particular capability, it's up to the cmdlets you use to take advantage of them.

About the Author

Jeffery Hicks is a Microsoft MVP in Windows PowerShell, Microsoft Certified Trainer and an IT veteran with over 20 years of experience, much of it spent as an IT consultant specializing in Microsoft server technologies with an emphasis in automation and efficiency. He works today as an independent author, trainer and consultant. Jeff writes the popular Prof. PowerShell column for MPCMag.com and is a regular contributor to the Petri IT Knowledgebase and 4SysOps. If he isn't writing, then he's most likely recording training videos for companies like TrainSignal or hanging out in the forums at PowerShell.org. Jeff's latest books are Learn PowerShell 3 in a Month of Lunches, Learn PowerShell Toolmaking in a Month of Lunches and PowerShell in Depth: An Administrators Guide. You can keep up with Jeff at his blog http://jdhitsolutions.com/blog, on Twitter at twitter.com/jeffhicks and on Google Plus (http:/gplus.to/JeffHicks)

comments powered by Disqus

Reader Comments:

Add Your Comment Now:

Your Name:(optional)
Your Email:(optional)
Your Location:(optional)
Comment:
Please type the letters/numbers you see above

Redmond Tech Watch

Sign up for our newsletter.

I agree to this site's Privacy Policy.