Public/Set-ScreenTimeout.ps1

<#
    .SYNOPSIS
    Configures screen timeout settings for both power policy and local group policy.
 
    .DESCRIPTION
    This function sets the screen timeout for logged-in users and lock screen, updates power policy settings,
    and modifies local group policy to enforce the screen saver timeout.
 
    .PARAMETER Seconds
    The timeout duration in seconds.
 
    .EXAMPLE
    Set-ScreenTimeout -Seconds 300
    Configures the screen timeout to 300 seconds.
 
    .NOTES
    Requires administrative privileges to execute.
 
    .Link
    https://github.com/TheTaylorLee/AdminToolbox
#>


function Set-ScreenTimeout {

    param (
        [Parameter(Mandatory = $true)]
        [int]$Seconds
    )

    # Power Policy
    ## Screen timeout logged in
    powercfg.exe /setacvalueindex SCHEME_CURRENT SUB_VIDEO VIDEOIDLE $Seconds
    powercfg.exe /setdcvalueindex SCHEME_CURRENT SUB_VIDEO VIDEOIDLE $Seconds
    ## Screen timeout lock screen
    powercfg.exe /setacvalueindex SCHEME_CURRENT SUB_VIDEO VIDEOCONLOCK $Seconds
    powercfg.exe /setdcvalueindex SCHEME_CURRENT SUB_VIDEO VIDEOCONLOCK $Seconds
    powercfg.exe /setactive SCHEME_CURRENT

    # Local Group Policy
    New-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\' -Name 'InactivityTimeoutSecs' -Value $Seconds -PropertyType dword -Force
    New-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "ScreenSaveActive" -Value "1" -PropertyType string -Force
    New-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "ScreenSaverIsSecure" -Value "1" -PropertyType string -Force
    New-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "ScreenSaveTimeOut" -Value $Seconds -PropertyType string -Force
    New-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "SCRNSAVE.EXE" -Value "%windir%\system32\rundll32.exe user32.dll,LockWorkStation" -PropertyType string -Force

    # Apply Group Policy Updates
    gpupdate /force
}