Prof. Powershell
PowerShell OverDrive
Get to the good stuff with the Get-PSDrive cmdlet.
- By Jeffery Hicks
- 01/05/2010
I know that in the past I've discussed PSDrives in Windows PowerShell. These are special adapters that take other hierarchical systems, such as the registry, and present them as a drive. You can navigate these "drives" like any regular drive. We use the Get-PSDrive cmdlet to view them:
PS C:\> get-psdrive
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
Alias Alias
C 78.08 33.61 FileSystem C:\
cert Certificate \
D FileSystem D:\
E 198.83 34.05 FileSystem E:\
Env Environment
F 247.06 51.03 FileSystem F:\
Function Function
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
Variable Variable
WSMan WSMan
Obviously, your results will vary depending on what logical drives you have on your computer. You can change to any of these "drives" and use any of the file system commands you're used to like DIR and CD. The WSMan PSDrive is new to PowerShell 2.0 and gives you access to WinRM settings:
PS C:\> cd wsman:
PS WSMan:\> dir
WSManConfig:
ComputerName Type
------------ ----
localhost Container
PS WSMan:\> dir localhost
WSManConfig: Microsoft.WSMan.Management\WSMan::localhost
Name Value
---- -----
MaxEnvelopeSizekb 150
MaxTimeoutms 60000
MaxBatchItems 32000
MaxProviderRequests 4294967295
Client
Service
Shell
Listener
Plugin
ClientCertificate
But I wanted to point out that other PowerShell products, modules and snapins can also define new PSDrives which you may want to explore. For example, if you load the new ActiveDirectory module that is part of Windows Server 2008 R2, you will get a PSDrive defined for your Active Directory domain:
PS C:\> import-module ActiveDirectory
PS C:\> get-psdrive AD
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
AD ActiveDire... //RootDSE/
PS C:\> cd AD:
PS AD:\> dir
Name ObjectClass DistinguishedName
---- ----------- -----------------
Configuration configuration CN=Configuration,DC=MYCOMP...
Schema dMD CN=Schema,CN=Configuration...
ForestDnsZones domainDNS DC=ForestDnsZones,DC=MYCOM...
RESEARCH domainDNS DC=RESEARCH,DC=MYCOMPANY,D...
DomainDnsZones domainDNS DC=DomainDnsZones,DC=RESEA...
PS AD:\> cd "dc=research,dc=mycompany,dc=local"
PS AD:\dc=research,dc=mycompany,dc=local> dir
Name ObjectClass DistinguishedName
---- ----------- -----------------
Builtin builtinDomain CN=Builtin,DC=RESEARCH,DC=...
Company Servers organizationalUnit OU=Company Servers,DC=RESE...
Computers container CN=Computers,DC=RESEARCH,D...
Desktops organizationalUnit OU=Desktops,DC=RESEARCH,DC...
Domain Controllers organizationalUnit OU=Domain Controllers,DC=R...
ForeignSecurityPr... container CN=ForeignSecurityPrincipa...
Groups organizationalUnit OU=Groups,DC=RESEARCH,DC=M...
Infrastructure infrastructureUpdate CN=Infrastructure,DC=RESEA...
LostAndFound lostAndFound CN=LostAndFound,DC=RESEARC...
Managed Service A... container CN=Managed Service Account...
NTDS Quotas msDS-QuotaContainer CN=NTDS Quotas,DC=RESEARCH...
Program Data container CN=Program Data,DC=RESEARC...
Staff organizationalUnit OU=Staff,DC=RESEARCH,DC=MY...
System container CN=System,DC=RESEARCH,DC=M...
Users container CN=Users,DC=RESEARCH,DC=MY...
I changed to the AD drive and did a "directory" listing. Be careful here because it is very easy to delete "folders" and "files".
Another interesting PSDrive comes when you install SQL 2008 and include the PowerShell snapin:
PS C:\> add-pssnapin sqlserverProviderSnapin100
PS C:\> get-psdrive sqlserver
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
SQLSERVER SqlServer SQLSERVER:\
There is also a snapin for SQL cmdlets which I'll talk about in a future lesson. The SQLSERVER PSDrive lets you easily see SQL Configuration information. I'll give you the basic commands for you to try yourself:
PS C>\> cd sqlserver:
PS SQLSERVER:\> dir sqlregistration
PS SQLSERVER:\> dir sql\$env:computername
To find child "folders" look at the PSChildName property. You can even look at individual databases:
PS SQLSERVER:\sql\godot7\SQLEXPRESS\databases> dir | select Name,*date
Name : ComputerData
CreateDate : 11/24/2009 7:39:27 AM
LastBackupDate : 1/1/0001 12:00:00 AM
LastDifferentialBackupDate : 1/1/0001 12:00:00 AM
LastLogBackupDate : 1/1/0001 12:00:00 AM
Name : VeeamBackup
CreateDate : 12/11/2009 11:09:32 AM
LastBackupDate : 1/1/0001 12:00:00 AM
LastDifferentialBackupDate : 1/1/0001 12:00:00 AM
LastLogBackupDate : 1/1/0001 12:00:00 AM
Looks like I need to run a backup!
There's a lot of information with the SQL PSDrive, much more than I can go into here. I'll be blogging about this particular topic in more detail on The Lonely Administrator blog. In the meantime, check out your PSDrives discover what treasures are hidden away.
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.