PowerShell: Unattended key press (simulate not away presence status “mouse jiggle”)
########## PowerShell: Unattended key press
#simulate not away presence status available "mouse jiggle" or wiggle
#Copyright (c) All Rights Reserved
#www.leedesmond.com
#2023-01-15 Version: 1.0
param($IntervalInSeconds=15,
[string[]]$Keys=@('+{F15}','+{F14}','+{F13}'),[switch]$NoNewline)
function SimulateKeyPress()
{
param($IntervalInSeconds,[string[]]$Keys,[switch]$NoNewline)
if($IntervalInSeconds -is [string] -or $IntervalInSeconds -le 0){ #-or $IntervalInSeconds -isnot [int]
Write-Host "Usage: script.ps1 -IntervalInSeconds N #where N > 0";
return;}
$dateStart=Get-Date; $elapsed="00:00:00";
Write-Host "Start: $dateStart";
$wsh=New-Object -ComObject WScript.Shell;
$KeysLen=$Keys.Length-1;
while($IntervalInSeconds -gt 0){
$index=Get-Random -Minimum 0 -Maximum $KeysLen;
$wsh.SendKeys($Keys[$index]);
#$logonUI=$false;
try{Get-Process LogonUI -EA:Stop|Out-Null;$logonUI=$true;}catch{$logonUI=$false;}
Write-Host `
"($((Get-Date).ToString()) elapsed: $elapsed key: $($Keys[$index]) " `
"IntervalInSeconds: $IntervalInSeconds LogonUI: $logonUI) " `
-NoNewline:$NoNewline;
Start-Sleep -Seconds $IntervalInSeconds;
$dateNow=Get-Date;
$elapsed=$dateNow-$dateStart;
$elapsed="{0:d2}:{1:d2}:{2:d2}" -f $elapsed.Hours,$elapsed.Minutes,$elapsed.Seconds;
}
} #SimulateKeyPress()
SimulateKeyPress -IntervalInSeconds $IntervalInSeconds -Keys $Keys -NoNewline:$NoNewline;