ПК не будет спать / просыпаться после запуска скрипта

Я сыт по горло тем, что мой компьютер просыпался из сна, по-видимому, через произвольные промежутки времени и делал все обычные вещи, отключая таймеры пробуждения, расписания задач, запрещая LAN и другие устройства, запуская powercfg /sleepstudy и т.д.

Я нашел несколько скриптов для отключения всех таймеров пробуждения и запустил это:

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

К сожалению, я также запустил сценарий, запрещающий любому устройству активировать ПК, который, по-видимому, останавливает команду режима сна до нажатия клавиши, а затем полностью его выключает:

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

Это приводит к нескольким ошибкам.

Хотя я могу понять многое из этого, у меня нет навыков программирования, чтобы написать скрипт для его исправления:-(

Кто-нибудь может здесь помочь? (не могу восстановить системный образ в данный момент - я одолжил свой резервный диск +caddy приятелю, которого нет)(ОК - я Маппетт)

РЕДАКТИРОВАТЬ: ОК - я побежал
PS C: \ WINDOWS \ system32> @echo off

for / F "tokens = *" %% A in ('powercfg -devicequery wake_armed') do (powercfg -devicedisablewake "%% A")
который дал ошибку пропущенного '(' после ключевого слова 'для'. Итак, я поместил один в:
PS C: \ WINDOWS \ system32> @echo выключен для (/F "tokens=*" %%A in ('powercfg -devicequery wake_armed') do (powercfg -devicedisablewake "%%A").
Похоже, это сработало, хотя я до сих пор не понимаю, почему, потому что, кажется, один "(" слишком много.

РЕДАКТИРОВАТЬ 2 Есть ли способ отменить это? Могу ли я просто заменить -devicedisablewake на -deviceenablewake?

1 ответ

Это приводит к нескольким ошибкам.

Давайте исправим это шаг за шагом.

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

Первый ( не должно быть там.

> /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.

Отсутствует for в начале.

Из командной строки он будет оценивать только первый результат, поэтому вам нужно использовать командный файл.

%должны быть заменены %%в пакетном файле.

Используйте следующий пакетный файл:

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

Дальнейшее чтение

Другие вопросы по тегам