LockWorkStation funktioniert nicht in Powershell über den Taskplaner

LockWorkStation funktioniert nicht in Powershell über den Taskplaner

Ich schreibe ein Skript, das Befehle vom über IFTTT verbundenen Amazon Echo empfängt.

Der Ablauf ist wie folgt:

  • Ich bitte Alexa, „X“ auszulösen
  • IFTTT sendet das an das Dropbox-Applet
  • Dropbox schreibt eine Textdatei mit dem Namen "X" in ein Verzeichnis
  • Ein Task Scheduled Powershell-Skript wird alle 5 Sekunden wiederholt, um alle Dateien in diesem Verzeichnis zu erkennen.
  • Skript führt Befehle basierend auf Dateinamen aus

Hier ist ein kurzes Beispiel des Skripts:

$SearchDirectory = "C:\Users\Username\Dropbox\IFTTT"
$SleepTime = 5
$Status = "none"

Remove-Item -Path "$SearchDirectory\shutdown.txt" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$SearchDirectory\restart.txt" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$SearchDirectory\sleep.txt" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$SearchDirectory\lock.txt" -Force -ErrorAction SilentlyContinue

While ($True) {
  Do {
    Start-Sleep -Seconds $SleepTime

    if (Test-Path -Path "$SearchDirectory\shutdown.txt") { $Status = "shutdown" }
    if (Test-Path -Path "$SearchDirectory\restart.txt") { $Status = "restart" }
    if (Test-Path -Path "$SearchDirectory\sleep.txt") { $Status = "sleep" }
    if (Test-Path -Path "$SearchDirectory\lock.txt") { $Status = "lock" }
  }
  Until ($Status -ne "none")

  switch ($Status) {
    "shutdown" { Remove-Item -Path "$SearchDirectory\shutdown.txt"; Stop-Computer -Force; break }
    "restart" { Remove-Item -Path "$SearchDirectory\restart.txt"; Restart-Computer -Force; break }
    "sleep" { Remove-Item -Path "$SearchDirectory\sleep.txt"; Suspend-Computer; break}
    "lock" { Remove-Item -Path "$SearchDirectory\lock.txt"; Invoke-Command {rundll32.exe user32.dll,LockWorkStation}; break}
    "none" { break }
  }

  $Status = "none"
}

Alle oben genannten Befehle funktionieren einwandfrei, mit Ausnahme eines Befehls, rundll32.exe user32.dll,LockWorkStationder zwar in der Konsole, aber nicht über ein Skript im Taskplaner zu funktionieren scheint.

Ich sehe das Problem nicht, also warum funktioniert es nicht?

verwandte Informationen