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,LockWorkStation
aqueles 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?