Précisons d’abord que je ne suis pas responsable de l’usage que vous ferrez de ça.
Il faut savoir que plusieurs situations peuvent justifier l’usage d’un outil qui empêche la mise en veille, par exemple les tâches automatisées très longues.
Un effet de bord de ce script qui simule la pression de la touche F15 (inutile de chercher sur votre clavier), c’est que ça simule une activité au clavier, donc ça peut aussi empêcher des applications tel que Teams de vous détecter comme absent, ce qui une bonne ou mauvaise chose suivant le but recherché.
Je n’ai pas créé la méthode du F15, elle est très répandue sur le net donc difficile de créditer l’auteur initial.
Version discrète vous avez dit ?
Mon but ici était de faire une fonction F15 avec les contraintes suivantes:
- Cacher l’utilisation du F15 dans la console
- Reproduire une fenêtre normale de PowerShell exécutant la commande « Get-ChildItem * »
- Simuler un F15 toutes les 295 secondes
- Sortir de la fonction à la moindre touche pressée (insensible à la touche F15)
Voici ce que ça donne, rappelez vous que tout ce que vous voyez dans la console est construit par la fonction, c’est donc un trompe-l’œil:
Sans plus attendre, voici la fonction:
function Set-NoSleep {
$LoopSec = 295
$wsh = New-Object -ComObject WScript.Shell
Clear-Host
$host.ui.RawUI.WindowTitle = "Windows PowerShell"
Write-Host "PowerShell " -NoNewline
Write-Host ("v" + $(($PSVersionTable.PSversion.ToString() -split "\.")[0..1] -join ".") + " ") -ForegroundColor green
Write-Host "PS $((pwd).Path)> " -NoNewline
Write-Host "Get-ChildItem " -NoNewline -ForegroundColor Yellow
Write-Host "*" -ForegroundColor DarkGray
Get-ChildItem
""
""
Write-Host "PS $((pwd).path)> " -NoNewline
$Timer = [System.Diagnostics.Stopwatch]::StartNew()
$keyInfo = $null
while($keyInfo -eq $null) {
do {
if ([Console]::KeyAvailable){
$keyInfo = [Console]::ReadKey($true)
break
}
# $Timer.Elapsed.TotalSeconds
Start-Sleep -Seconds 1
} while ($timer.Elapsed.TotalSeconds -lt $LoopSec)
$wsh.SendKeys('+{F15}')
$Timer.Reset()
$Timer.Start()
}
$Timer.Stop()
}
Set-NoSleep
0 commentaire