locked
Deaktivieren, dass Geräte den Computer wecken können (mit einem Powershell Skript) RRS feed

  • Frage

  • Hallo liebe Technet-Gemeinde
    Ich würde gerne das folgende Skript auf unseren PC's ausführen, damit die Komponenten (Maus, Tastatur und LAN-Port) nicht in der Lage sind, den Computer aus dem Energiesparmodus zu wecken.

    Das Skript erfüllt seinen Zweck und macht was ich will, doch es kommt beim ausführen trotzdem eine Fehlermeldung.

    An was liegt das?

    Wir haben Windows 8.1 (Update 1) x64 im Einsatz.

    $query = powercfg.exe /devicequery wake_armed
    ForEach ($element in $query)
        {
            powercfg.exe /devicedisablewake "$element"
        }

    Danke und Gruss
    ICT-Shelby



    Donnerstag, 11. September 2014 14:21

Antworten

  • Hi Martin

    Besten Dank für deine Antwort :-) Damit hat es nun endlich geklappt.

    Hier für alle noch die endgültige Lösung.

    Ein CMD-Skript mit folgender Zeile:

    for /f "tokens=*" %%d in ('powercfg.exe /devicequery wake_armed') do powercfg.exe /devicedisablewake "%%d"

    Besten Dank euch allen!

    ICT-Shelby

    • Als Antwort markiert _DisplayName_ Montag, 22. September 2014 20:05
    Montag, 22. September 2014 14:56

Alle Antworten

  • Hi,

    wäre hilfreich, wenn Du die Fehlermeldung auch postest... ;-)


    Gruß

    Ben

    MCITP Windows 7

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    Donnerstag, 11. September 2014 15:05
  • Hi Ben

    Kam mir gestern auch noch in den Sinn.

    Zudem muss ich noch anfügen, dass ich noch nicht viel Erfahrung in Powershell habe.

    Hier die Fehlermeldung:

    powercfg.exe : Ungltige Parameter -- Geben Sie "/?" ein, um die Hilfe anzuzeigen.

    In Zeile:4 Zeichen:9

    +         powercfg.exe /devicedisablewake "$element"

    +         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        + CategoryInfo          : NotSpecified: (Ungltige Param...lfe anzuzeigen.:String) [], RemoteException

        + FullyQualifiedErrorId : NativeCommandError

    Freitag, 12. September 2014 06:08
  • Moin,

    zum einen musst du aufpassen, denn bei mir ist das letzte Element von $query leer und zum anderen musst du die "" glaube ich escapen, da einmal "" schon die Powershell verschlingt.

    VG

    Sebastian

    Freitag, 12. September 2014 07:31
  • Hi,

    wenn Du Nicht-Powershell-Befehle innerhalb der Powershell mit Parametern ausführen willst, ist die Syntax etwas anders.

    Entweder machst Du es Dir ganz einfach und führst den Befehl als cmd-Befehl aus:

    cmd /c "powercfg.exe /devicedisablewake "$element""

    Oder Du verwendest folgende Syntax:

    Start-Process powercfg -ArgumentList '/devicedisablewake','"$element"'



    Gruß

    Ben

    MCITP Windows 7

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    Freitag, 12. September 2014 08:06
  • Hi Ben

    Danke für deine Tipps. Ich habe natürlich beide ausprobiert.

    Ich habe nun mein Skript mit deinem zweiten Befehl abgeändert.

    Wenn ich nun das Skript ausführe, öffnen sich 3 CMD-Fenster rasant schnell und schliessen sich wieder. Ganz normal, ja! Aber, in diesem Fenster steht Zitat:
    Ein unerwarteter Fehler ist aufgetreten. Der Vorgang kann nicht ausgeführt werden. Sie sind eventuell nicht berechtigt, diesen Vorgang durchzuführen.

    Das kann aber nicht sein. Ich arbeite als Admin, habe ISE als Admin ausgeführt und die ExecutionPolicy ist auch ausser Gefecht gesetzt worden ;-) Habe auch noch probiert, das ganze im ISE (x86) auszuführen, aber da kommt ebenfalls die gleiche Meldung.

    Danke im Voraus! ICT-Shelby

    Freitag, 12. September 2014 12:13
  • Hi,

    ich hab das jetzt mal selbst ausprobiert. Das Problem ist, dass powercfg anscheinend mit der Schleife nicht zurechtkommt. Führe ich den Befehl ohne alles aus, funktioniert er einwandfrei (auch ohne Anführungszeichen). Sobald man den innerhalb der Schleife ausführen lässt, erkennt er anscheinend die Variable nicht mehr.

    Ich hab nur leider jetzt nicht viel Zeit, da weiterzuschauen...


    Gruß

    Ben

    MCITP Windows 7

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    Freitag, 12. September 2014 12:46
  • Wie wäre es mit Commandline statt Powershell?
     
    for /f "tokens=*" %d in ('powercfg /devicequery wake_armed') do powercfg
    /devicedisablewake "%d"
     
    Funktioniert problemlos :)
     
    BTW: "start-process" führt die powercfg-Befehle in neuen Prozessen aus -
    die werden nahezu gleichzeitig gestartet. Möglicherweise (ich bin mir
    sogar fast sicher) hilft "-wait"...
     

    Martin

    Mal ein GUTES Buch über GPOs lesen?

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    And if IT bothers me - coke bottle design refreshment :))
    Freitag, 12. September 2014 13:22
  • Hallo Martin

    Habe deine Commandline versucht. Aber diese funktioniert bei mir irgendwie auch nicht.

    Mein Skript im ersten Thread funktioniert ja eigentlich, es kommt einfach eine Fehlermeldung. Ausgeführt und funktionieren tut es ja trotzdem.

    Was meint ihr, kann ich dies dann nicht einfach so lassen? Danke & Gruss

    Mittwoch, 17. September 2014 09:37
  • Hi, 

    sauber ist es zwar nicht, aber wenn es nachweislich funktioniert...

    Du solltest es dann halt mal auf mehreren unterschiedlichen Systemen testen, nicht, dass es dann tatsächlich irgendwo doch nicht funktioniert.


    Gruß

    Ben

    MCITP Windows 7

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    Mittwoch, 17. September 2014 09:43
  • > Habe deine Commandline versucht. Aber diese funktioniert bei
    > mir irgendwie auch nicht.
     
    Hast Du das in eine CMD gepackt? Dann mußt Du das %d vorne und hinten
    durch %%d ersetzen...
     
     

    Martin

    Mal ein GUTES Buch über GPOs lesen?

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    And if IT bothers me - coke bottle design refreshment :))
    Mittwoch, 17. September 2014 15:52
  • Hi Martin

    Besten Dank für deine Antwort :-) Damit hat es nun endlich geklappt.

    Hier für alle noch die endgültige Lösung.

    Ein CMD-Skript mit folgender Zeile:

    for /f "tokens=*" %%d in ('powercfg.exe /devicequery wake_armed') do powercfg.exe /devicedisablewake "%%d"

    Besten Dank euch allen!

    ICT-Shelby

    • Als Antwort markiert _DisplayName_ Montag, 22. September 2014 20:05
    Montag, 22. September 2014 14:56