FolderRisk: Do not touch
- Windows Server
SYSVOL C:\Windows\SYSVOL
C:\Windows\SYSVOL: a domain controller's replicated folder, with GPO files and logon scripts (the SYSVOL and NETLOGON shares).
What it’s for
SYSVOL is the folder replicated between the controllers of a domain. It stores the file-based part of Group Policy objects and logon scripts. Clients reach it through the SYSVOL and NETLOGON shares. The default location is %systemroot%\SYSVOL, which you choose when promoting the controller. So the settings of a domain GPO live here, while those of the local policy live in System32\GroupPolicy.
What it contains
domain: the real content.Policieshas one folder per GPO, named by its GUID, with the same layout as the local policy (Machine,User,gpt.ini).scriptsis the folder behind theNETLOGONshare.sysvol: the folder theSYSVOLshare publishes. It holds a junction named after the DNS domain, which points todomain.stagingandstaging areas: the intermediate replication areas, with the same junction logic.domain\DfsrPrivate: DFSR internals (files in transit, conflicts). The DFSR database itself is inSystem Volume Information\DFSRat the root of the volume.
Risks and best practices
- The junctions and content replicate between controllers, so moving, renaming or deleting anything here stops Group Policy from applying and makes controllers drift apart.
- Edit GPOs with the Group Policy Management console, never through the file system.
- Restrict write access: a script altered here runs for every user in the domain.
- On a controller whose
SYSVOLandNETLOGONshares are missing, follow Microsoft’s procedure to rebuild the tree. - Check that replication goes through DFSR and not the old FRS:
dfsrmig /getglobalstateshould answer “Eliminated”.
Useful commands
# Shares published by the domain controllerGet-SmbShare -Name SYSVOL, NETLOGON | Select-Object Name, Path
# Group Policy and script folders (read-only)Get-ChildItem "$env:windir\SYSVOL\domain" -Force | Select-Object NameGet-ChildItem "$env:windir\SYSVOL\domain\Policies" -Directory | Select-Object Name
# FRS to DFSR migration state (as administrator, on a domain controller)dfsrmig /getglobalstate
# Health of SYSVOL and the shares on this controllerdcdiag /test:sysvolcheck /test:netlogons