Der PC kann nach dem Ausführen des Skripts nicht schlafen

401
birchyboy

Ich hatte es satt, dass mein PC anscheinend in zufälligen Intervallen aus dem Schlaf erwachte und alles Mögliche tat, Weck-Timer, Task-Zeitpläne deaktivieren, LAN und andere Geräte nicht zulassen, powercfg / sleepstudy usw. ohne Erfolg ausführen.

Ich habe ein paar Skripte gefunden, um alle Wake-Timer zu deaktivieren.

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

Leider habe ich auch ein Skript ausgeführt, um zu verhindern, dass jedes Gerät den PC aufweckt, wodurch der Schlafbefehl angehalten wird, bis ein Tastendruck erfolgt und der Computer dann vollständig heruntergefahren wird:

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

Dies führt zu mehreren Fehlern.

Obwohl ich viel davon verstehen kann, habe ich nicht die Programmierkenntnisse, um ein Skript zu schreiben, um es zu korrigieren :-(

Kann jemand hier helfen? (Momentan kann kein System-Image wiederhergestellt werden. - Ich habe mein Backup-Laufwerk + Caddy einem Buddy ausgeliehen, der nicht da ist.) (OK - Ich bin ein Muppett)

BEARBEITEN: OK - Ich habe
PS C: \ WINDOWS \ system32> @echo ausgeschaltet

for / F "tokens = *" %% A in ('powercfg -devicequery wake_armed') do (powercfg -devicedisablewake "%% A"),
was einen Fehler eines fehlenden '(' nach Schlüsselwort 'für' ergab. Also, ich
Geben Sie einen der folgenden Befehle ein: PS C: \ WINDOWS \ system32> @echo für (/ F "tokens = *" %% A in ('powercfg -devicequery wake_armed') do (powercfg -devicedisablewake "%% A").
Dies wird angezeigt gearbeitet haben, obwohl ich immer noch nicht verstehe, warum, weil es scheint, dass es zu viele gibt .

EDIT 2 Gibt es eine Möglichkeit, es umzukehren? Kann ich -devicedisableawake nur durch - deviceenablewake ersetzen ?

1
Was sind die "mehrere Fehler", die es erzeugt? Mokubai vor 6 Jahren 2
@Mokubai `do war zu dieser Zeit unerwartet.` :) DavidPostill vor 6 Jahren 0
Ein Fehler war "F: Der Begriff '/ F' wird nicht als Name eines Cmdlets, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt". Das ursprüngliche Skript hatte auch keine (beim Start. Windows Powershell Admin sagte, es fehlte (beim Start des Skripts folgte ich dem nicht, weil das (machte es unausgewogen.) Ich habe eins eingefügt und das Skript lief ohne ein Fehler - komisch. birchyboy vor 6 Jahren 0
Ein anderer Fehler war: - Der Splatting-Operator '@' kann nicht zum Referenzieren von Variablen in einem Ausdruck verwendet werden. '@echo' kann nur als Argument für einen Befehl verwendet werden. Um auf Variablen in einem Ausdruck zu verweisen, verwenden Sie '$ echo'. birchyboy vor 6 Jahren 0

1 Antwort auf die Frage

0
DavidPostill

Dies führt zu mehreren Fehlern.

Lassen Sie uns das Schritt für Schritt beheben.

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

Der erste (sollte nicht da sein.

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

Es fehlt foram Start.

Von der Befehlszeile aus wird nur das erste Ergebnis ausgewertet, daher müssen Sie eine Batchdatei verwenden.

Die %s müssen %%in einer Batchdatei durch s ersetzt werden .

Verwenden Sie die folgende Batchdatei:

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

Lesen Sie weiter