1 votes

Le PC ne se met pas en veille/réveil après l'exécution du script.

J'en ai eu marre que mon PC se réveille de son sommeil à des intervalles apparemment aléatoires et j'ai fait toutes les choses habituelles, en désactivant les minuteries de réveil, les planifications de tâches, en désactivant les périphériques LAN et autres, en exécutant powercfg /sleepstudy etc. en vain.

J'ai trouvé des scripts pour désactiver toutes les minuteries de réveil et j'ai exécuté ça :

Get-ScheduledTask | ? { $_.Settings.WakeToRun -eq $true -and $_.State -ne "Disabled"} | % { $_.Settings.WakeToRun = $false; Set-ScheduledTask $_ }

Malheureusement, j'ai également exécuté un script pour interdire à tout périphérique de réveiller le PC, ce qui semble bloquer la commande de mise en veille jusqu'à ce qu'une touche soit pressée, puis l'éteint complètement :

(/F "tokens=*" %A in ('powercfg -devicequery wake_armed') do powercfg -devicedisablewake "%A"

Cela produit plusieurs erreurs.

Bien que je puisse en comprendre une grande partie, je n'ai pas les compétences en programmation pour écrire un script pour le corriger :-(

Quelqu'un ici peut-il m'aider ? (je ne peux pas restaurer une image système pour le moment - j'ai prêté mon disque de sauvegarde+caddy à un copain qui est absent)(OK - je suis un Muppett)

EDITAR: OK - J'ai couru
PS C:\WINDOWS\system32 > @echo off

for /F "tokens=*" %%A in ('powercfg -devicequery wake_armed') do (powercfg -devicedisablewake "%%A")
ce qui a donné une erreur due à un '(' manquant après le mot clé 'for'. J'en ai donc inséré un :
PS C:\WINDOWS\system32 > @echo off for (/F "tokens=*" %%A in ('powercfg -devicequery wake_armed') do (powercfg -devicedisablewake "%%A").
Cela semble avoir fonctionné, bien que je ne comprenne toujours pas pourquoi, car il semble y avoir un "(" de trop. .

EDIT 2 Y a-t-il un moyen de l'inverser ? Puis-je simplement remplacer -devicedisableawake avec - deviceenablewake ?

0voto

DavidPostill Points 140654

Cela produit plusieurs erreurs.

Réparons-la étape par étape.

> (/F "tokens=*" %A in ('powercfg -devicequery wake_armed') do powercfg -devicedisablewake "%A"
do was unexpected at this time.

Le premier ( ne devrait pas être là.

> /F "tokens=*" %A in ('powercfg -devicequery wake_armed') do powercfg -devicedisablewake "%A"
'/F' is not recognized as an internal or external command,
operable program or batch file.

Il y a un manque for au départ.

À partir de la ligne de commande, il n'évaluera que le premier résultat, vous devez donc utiliser un fichier batch.

El % doivent être remplacés par %% dans un fichier batch.

Utilisez le fichier batch suivant :

@echo off
for /F "tokens=*" %%A in ('powercfg -devicequery wake_armed') do (
  powercfg -devicedisablewake "%%A"
  )

Autres lectures

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X