When running installations, some systems are set to lock after a certain period of inactivity even though the installation is running in the background. Recently I was testing CIS Group Policy policies and my labs kept locking and it becomes frustrating to keep having to unlock so I have a script to simulate a keypress such as the spacebar to keep the session alive and it worked.

Below is a video (no sound, just a screen record) of PowerShell running in the background and notepad in the foreground, showing the blue space between the two letters shrinking:

Below is the code with comments, you can modify it to suite your needs. The following fields can be adjusted:

  • $totalMinutes (in my script it is set to 920)
param(
    $totalMinutes = 920
)

function SimulateKeyPress {
    # Create a shell object
    $shell = New-Object -ComObject "WScript.Shell"
    
    # Simulate a keypress (spacebar)
    $shell.SendKeys(" ")
}

function Main {
    # Calculate total seconds
    $totalSeconds = $totalMinutes * 60
    
    for ($i = 0; $i -lt $totalSeconds; $i += 30) {
        # Call the function to simulate keypress
        SimulateKeyPress

        # Pause for 30 seconds
        Start-Sleep -Seconds 30
    }
}

# Execute the main function
Main

I hope it helps you if you have a problem with screen locking or logging out set by GPO or other methods. You can run it straight in PowerShell without having to save it.

Hope it helps.

Discover more from Everything-PowerShell

Subscribe now to keep reading and get access to the full archive.

Continue reading