Eine Dateisystem- oder Druckerfreigabe ist schnell angelegt und auch schnell vergessen. Um sicher zu gehen, dass es keine verwaisten Freigaben oder Freigaben mit zu vielen Zugriffsrechten gibt, nutze ich das nachstehende PowerShell-Skript. 
  
Es fragt mit Get-WMIobject Win32_Share die Freigaben auf einem entfernten System ab. Mit dem Commandlet Get-ACL kann man die Liste der Zugriffsrechte bekommen. 
Die Liste der abzufragenden Computer kann man aus einer Textdatei lesen,
$computerList = Get-Content "$psscriptroot\computerliste.txt"
statisch hinterlegen 
$computerList = "PC1","PC2","PC3" # usw.
oder aus dem Active Directory auslesen:
(Get-ADComputer -Filter {OperatingSystem -like "*windows*"}).Name
  
  
Das Skript sieht wie folgt aus
# Auflisten der auf mehreren Computern angelegten Dateisystem- und Druckerfreigaben
function Get-Share($computer)
{
    $befehl = { Get-WMIobject Win32_Share | where { $_.description -ne "Default share" -and $_.name -ne "Admin$" -and $_.name -ne "IPC$" } }
    $shares = invoke-command $befehl -computer $computer
    $shareString  = "" 
    foreach($s in $shares)
    {
        $shareString =  $shareString  + "\\$computer\$($s.name)" + " -> " + $s.path + "`n"
        $shareString =  $shareString + "Beschreibung: " + $s.description + "`n"
        try
        {
            $acl = Get-ACL "\\$computer\$($s.name)" -ErrorAction stop
            foreach($ace in $acl)
            {
                foreach($a in $ace.access)
                {
                $shareString = $shareString + $a.AccessControlType.ToString() + ": " + $a.IdentityReference + " -> " + $a.FileSystemRights.ToString() + "`n"
                }
            }
        }
        catch
        {
          $shareString = $shareString + "Kann ACL nicht lesen!`n"
        }
        $shareString =   $shareString + "`n"
    }
    return $shareString
}
$computerList = (Get-ADComputer -Filter {OperatingSystem -like "*windows*"}).Name  #Get-Content "$psscriptroot\computerliste.txt"
foreach($c in $computerList) { get-Share $c }
()