#PSTip Enumerating mapped network drives using WScript.Network

In the ‘Create mapped network drive using WScript.Network‘ tip, it was shown how a mapped drive can be mounted. The WScript.Network object also contains the EnumNetworkDrives method which enumerates all locally mapped network drives:

(New-Object -ComObject WScript.Network).EnumNetworkDrives()

The output of this method is unfortunately a bit disappointing. It returns a COM object containing an array of strings:

To make this information more useful the following function can be used:

Function Get-MappedDrive {
    (New-Object -ComObject WScript.Network).EnumNetworkDrives() | ForEach-Object -Begin {
        $CreateObject = $false
    } -Process {
       if ($CreateObject) {
           $HashProps.NetworkPath = $_
           New-Object -TypeName PSCustomObject -Property $HashProps
           $CreateObject = $false
       } else {
           $HashProps = @{
               LocalPath = $_
           }
           $CreateObject =$true
       }
   }
}

This function gathers the output of the EnumNetworkDrives method and organizes this into PowerShell objects:

This function is also available in the TechNet Script Gallery available here.

comments powered by Disqus