PowerShell has some really nice ways that it can be extended. One of those ways is via Providers. If you open up PowerShell and call
Get-PSDrive you will see a list of the drives on your machine along with some other providers to access things like the registry, certificate stores, and aliases. Using these providers is very similar to navigating a normal drive, for example, I can navigate around the registry by simply typing
cd HKCU:. Now I can see items in the registry by typing
dir and I see items in my registry (I used
dir | Format-Table -Property Name for brevity):
Name ---- HKEY_CURRENT_USER\AppEvents HKEY_CURRENT_USER\Console HKEY_CURRENT_USER\Control Panel HKEY_CURRENT_USER\Environment HKEY_CURRENT_USER\EUDC HKEY_CURRENT_USER\Identities HKEY_CURRENT_USER\Keyboard Layout HKEY_CURRENT_USER\Network HKEY_CURRENT_USER\Policies HKEY_CURRENT_USER\Printers HKEY_CURRENT_USER\Software HKEY_CURRENT_USER\System HKEY_CURRENT_USER\WXP HKEY_CURRENT_USER\Volatile Environment
Navigating these items is now as easy as using
cd to change directories. So
cd Software\Microsoft\Windows\CurrentVersion takes me into that node within the registry. From here you can now use other commands to update the registry. As you can see, this is a convenient way to access data in the registry and since it is inside of PowerShell, it can all be scripted.
Creating a basic PowerShell provider is a relatively simple task. Over the next few blog posts, I will walk through the basics of creating a Navigation Cmdlet Provider, so you can add your own custom drive to PowerShell.