LockWorkStation não funciona no Powershell através do Agendador de Tarefas

LockWorkStation não funciona no Powershell através do Agendador de Tarefas

Estou escrevendo um script que recebe comandos do Amazon Echo interligados pelo IFTTT.

O processo é o seguinte:

  • Peço a Alexa para acionar "X"
  • IFTTT envia isso para o miniaplicativo Dropbox
  • Dropbox grava um arquivo de texto chamado “X” em um diretório
  • Um script Powershell de tarefa agendada faz um loop a cada 5 segundos para detectar quaisquer arquivos nesse diretório
  • O script executa comandos com base no nome do arquivo

Aqui está um pequeno exemplo do script:

$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"
}

Todos os comandos acima funcionam bem, exceto rundll32.exe user32.dll,LockWorkStationaqueles que parecem estar funcionando bem no console, mas não por meio de um script no Agendador de Tarefas.

Não consigo ver o problema, então por que não está funcionando?

informação relacionada