Many businesses start with a simple departmental folder structure like this:
\\FileServer\
├── Sales\
├── Marketing\
├── Finance\
└── Operations\
But over time, this becomes messy as teams create subfolders without governance. Common issues include:
- Duplicate folder names (e.g., multiple "Projects" folders)
- Inconsistent naming conventions
- Permission inheritance problems
- Difficulty locating files
Here's a recommended structure that scales well for SBS2011 environments:
\\FileServer\
├── Departments\
│ ├── Sales\
│ │ ├── Clients\
│ │ ├── Contracts\
│ │ └── Reports\
│ ├── Marketing\
│ │ ├── Campaigns\
│ │ ├── Assets\
│ │ └── Analytics\
│ └── Finance\
│ ├── Invoices\
│ ├── Payroll\
│ └── Budgets\
├── Projects\
│ ├── Active\
│ └── Archive\
└── Shared\
├── Templates\
└── Company\
Here's a script to create this structure programmatically:
# Define base path
$root = "\\FileServer\BusinessData"
# Create department folders
$departments = @("Sales","Marketing","Finance","Operations")
foreach ($dept in $departments) {
New-Item -Path "$root\Departments\$dept" -ItemType Directory
New-Item -Path "$root\Departments\$dept\Clients" -ItemType Directory
New-Item -Path "$root\Departments\$dept\Reports" -ItemType Directory
}
# Create project structure
New-Item -Path "$root\Projects\Active" -ItemType Directory
New-Item -Path "$root\Projects\Archive" -ItemType Directory
# Create shared folders
New-Item -Path "$root\Shared\Templates" -ItemType Directory
New-Item -Path "$root\Shared\Company" -ItemType Directory
Use this PowerShell snippet to set basic NTFS permissions:
# Set Sales department permissions
$salesPath = "$root\Departments\Sales"
$salesGroup = "DOMAIN\Sales Team"
$acl = Get-Acl $salesPath
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
$salesGroup,
"Modify",
"ContainerInherit,ObjectInherit",
"None",
"Allow"
)
$acl.SetAccessRule($rule)
Set-Acl -Path $salesPath -AclObject $acl
Regularly run this script to identify empty folders:
Get-ChildItem -Path $root -Recurse -Directory |
Where-Object { $_.GetFiles().Count -eq 0 -and $_.GetDirectories().Count -eq 0 } |
Select-Object FullName
When moving to this new structure:
- Plan the migration during low-usage periods
- Use robocopy for large file transfers
- Update all shortcuts and mapped drives
- Communicate changes to all users
Many organizations start with a simple departmental structure like this:
.
├── Sales
│ ├── Client_A
│ └── Client_B
├── Marketing
│ ├── Campaign_2023
│ └── Assets
└── Finance
├── Invoices
└── Reports
While intuitive initially, this approach quickly becomes problematic when:
- Multiple departments need access to shared resources
- Projects span across departments
- Version control becomes difficult
- Search functionality breaks down
For SBS2011 environments, consider this hybrid structure combining function and project organization:
.
├── Departments
│ ├── HR
│ ├── Finance
│ └── IT
├── Projects
│ ├── Project_X
│ └── Project_Y
├── Shared
│ ├── Templates
│ └── Resources
└── Archive
├── 2020
└── 2021
Here's a script to create this structure programmatically:
# Define base path and folder structure
$root = "\\sbs2011\CompanyShare"
$folders = @(
"Departments\HR",
"Departments\Finance",
"Departments\IT",
"Projects\Project_X",
"Projects\Project_Y",
"Shared\Templates",
"Shared\Resources",
"Archive\2020",
"Archive\2021"
)
# Create folder structure
foreach ($folder in $folders) {
$fullPath = Join-Path -Path $root -ChildPath $folder
if (-not (Test-Path $fullPath)) {
New-Item -ItemType Directory -Path $fullPath | Out-Null
Write-Host "Created: $fullPath"
}
}
# Set permissions (example for HR folder)
$acl = Get-Acl "\\sbs2011\CompanyShare\Departments\HR"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("HR_Group","FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.AddAccessRule($rule)
Set-Acl -Path "\\sbs2011\CompanyShare\Departments\HR" -AclObject $acl
Implement these rules for consistency:
// Recommended naming pattern
[ProjectCode]_[Description]_[YYYYMMDD]_[Version]
Example: PRJX_ClientProposal_20230615_v2.docx
// Department-specific prefixes
- SAL_ for Sales
- MKT_ for Marketing
- FIN_ for Finance
When transitioning from old to new structure:
- Run a file inventory scan first
- Create mapping between old and new locations
- Use robocopy for the actual migration
Example robocopy command:
robocopy \\sbs2011\OldShare\Sales \\sbs2011\NewShare\Departments\Sales /E /ZB /COPYALL /R:1 /W:1 /LOG+:migration.log
Regular maintenance is crucial. This PowerShell script identifies empty folders:
Get-ChildItem -Path "\\sbs2011\CompanyShare" -Recurse -Directory |
Where-Object { $_.GetFiles().Count -eq 0 -and $_.GetDirectories().Count -eq 0 } |
Select-Object FullName