Prof. Powershell
Provider Peek
PSDrives work like real drives, only different. Here's how to work with these PSProviders in PowerShell.
- By Jeffery Hicks
- 03/24/2009
You are probably familiar with PSDrives in PowerShell. These "drives" present (usually) hierarchical systems, like the registry, as any other drive that you can navigate using common commands like DIR:
PS C:\> dir hklm:\system\currentcontrolset\services\spooler
The element that makes this possible is referred to as a PSProvider. PSProviders are bundled with PowerShell snapins and installed by default when you load the snapin. When you run the Get-PSDrive cmdlet, you will 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 snapin installed but not currently loaded into your PowerShell session, you won't see any PSProviders included in that snapin 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 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 is not 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 are exposed to new PSSnapins 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 is up to the cmdlets you use to take advantage of them.
About the Author
Jeffery Hicks is an IT veteran with over 25 years of experience, much of it spent as an IT infrastructure consultant specializing in Microsoft server technologies with an emphasis in automation and efficiency. He is a multi-year recipient of the Microsoft MVP Award in Windows PowerShell. He works today as an independent author, trainer and consultant. Jeff has written for numerous online sites and print publications, is a contributing editor at Petri.com, and a frequent speaker at technology conferences and user groups.