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.