Files
docs/operations/reference/powershell/smb/detailed-permission-report-all-shares.md
Nicole Rappe 886fd0db07
All checks were successful
GitOps Automatic Documentation Deployment / Sync Docs to https://kb.bunny-lab.io (push) Successful in 4s
GitOps Automatic Documentation Deployment / Sync Docs to https://docs.bunny-lab.io (push) Successful in 6s
Additional Doc Restructure
2026-01-27 05:57:50 -07:00

1.1 KiB

Purpose: This script will iterate over all network shares hosted by the computer it is running on, and will give recursive permissions to all folders, subfolders, and files, including hidden ones. It is very I/O intensive given it iterates recursively on every file/folder being shared.

$AllShares = Get-SMBShare | Where-Object {$_.Description -NotMatch "Default share|Remote Admin|Remote IPC|Printer Drivers"} | Select-Object -ExpandProperty Path
$Output = @()
ForEach ($SMBDirectory in $AllShares)
{
    $FolderPath = Get-ChildItem -Directory -Path $SMBDirectory -Recurse -Force
        ForEach ($Folder in $FolderPath) {
            $Acl = Get-Acl -Path $Folder.FullName
            ForEach ($Access in $Acl.Access) 
            {
                $Properties = [ordered]@{'Folder Name'=$Folder.FullName;'Group/User'=$Access.IdentityReference;'Permissions'=$Access.FileSystemRights;'Inherited'=$Access.IsInherited}
                $Output += New-Object -TypeName PSObject -Property $Properties            
            }
    }
}

$Output | Export-CSV -Path C:\SMB_REPORT.csv -NoTypeInformation -Append