When configuring scheduled tasks on Windows Server 2008 R2 (or later versions), you might encounter this security restriction:
This task requires that the user account specified has Log on as batch job rights
This is a local machine policy setting, though it can be controlled through Active Directory Group Policy in domain environments. The permission is stored in the Local Security Policy under:
Security Settings -> Local Policies -> User Rights Assignment
For non-domain joined machines, add the user through the Local Security Policy editor:
1. Open secpol.msc
2. Navigate to: Local Policies -> User Rights Assignment
3. Find "Log on as a batch job"
4. Add the service account or user
In Active Directory environments, deploy this via Group Policy:
Computer Configuration -> Policies -> Windows Settings ->
Security Settings -> Local Policies -> User Rights Assignment ->
"Log on as a batch job"
For large-scale deployments, use this PowerShell script:
# Grant batch logon rights to a user
$account = "DOMAIN\User"
$tmp = New-Object System.Security.Principal.NTAccount($account)
$sid = $tmp.Translate([System.Security.Principal.SecurityIdentifier])
$policy = "SeBatchLogonRight"
$adsi = [ADSI]"WinNT://$env:COMPUTERNAME"
$existing = $adsi.psbase.Invoke("Get", $policy)
if ($existing -notcontains $sid.Value) {
$adsi.psbase.Invoke("Add", $policy, $sid.Value)
}
- Verify effective permissions with
whoami /priv
- Group Policy updates may require
gpupdate /force
- For service accounts, ensure password never expires
Best practices for batch job accounts:
- Use dedicated service accounts
- Apply principle of least privilege
- Regularly audit account usage
- Consider Managed Service Accounts (gMSA) in modern environments
When configuring scheduled tasks on Windows Server 2008 R2 (or newer versions), you might encounter this security-related error:
This task requires that the user account specified has Log on as batch job rights.
This is a local security policy setting, though it can be configured through Group Policy in Active Directory environments. The permission is part of Windows' User Rights Assignment under:
Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment
Method 1: Using GUI (Local Machine)
- Open
secpol.msc
(Local Security Policy) - Navigate to: Security Settings > Local Policies > User Rights Assignment
- Find "Log on as a batch job" in the right pane
- Add the required user account
Method 2: Command Line (For Server Core/automation)
secedit /export /cfg C:\temp\secpol.cfg
(Edit the file to add user under [Privilege Rights] SeBatchLogonRight)
secedit /configure /db C:\Windows\security\local.sdb /cfg C:\temp\secpol.cfg
For domain environments, create/edit a GPO:
1. Open Group Policy Management
2. Edit your GPO or create new one
3. Navigate to: Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > User Rights Assignment
4. Configure "Log on as a batch job" to include required groups
Use this PowerShell to verify the setting:
$user = "DOMAIN\username"
$right = "SeBatchLogonRight"
$policy = whoami /priv | Select-String $right
if ($policy) {
Write-Host "$user has batch logon rights"
} else {
Write-Host "$user needs rights configuration"
}
- Forgetting to run
gpupdate /force
after GPO changes - Confusing local vs domain account permissions
- Not accounting for UAC when testing
Instead of assigning individual users:
- Create a security group (e.g., "Batch Job Users")
- Assign the right to this group
- Add users to the group as needed