#PSTip Check if a folder is shared

Note: This tip requires PowerShell 3.0 or above.

The WMI class Win32_Share gives us the information about all network shares that exist on the local machine. Now, how do we check if a given folder is shared or not?

We can use the Win32_Share WMI class and query for a specific path! I have put this simple logic in a function.

Function IsFolderShared {
    [CmdletBinding()]
        param (
            [Parameter(
                ValueFromPipeLine,
                ValueFromPipelineByPropertyName,
                Mandatory
            )]
            [alias("FullName")]
            [String[]]$Path
        )
        Process {
           foreach ($Folder in $Path) {
               $WMIFolderPath = $Folder -replace '\\','\\'
               [PSCustomObject] @{
                   "FolderPath" = $Folder
                   "IsShared" = if (Get-CimInstance -Query "SELECT * FROM Win32_Share WHERE Path='$WMIFolderPath'") { $true } else { $false }
               }
           }
       }
  }

Share on:
comments powered by Disqus