Powershell: Não é possível postar no Slack com script que está funcionando

1

Eu sou totalmente novo no Powershell, mas eu precisava de uma solução totalmente Windows para um bot do Slack que monitora pastas locais.

Eu posso usar a CLI para postar no Slack com sucesso com os dois comandos a seguir:

$postSlackMessage = @{token="";channel="#general";text="Test message";username="Bot User"}

Invoke-RestMethod -Uri https://slack.com/api/chat.postMessage -Body $postSlackMessage

Eu também posso monitorar a pasta usando o script fornecido em esta resposta de superusuário de @nixda.

Minha versão desta ótima solução parece não funcionar. Aqui está:

### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
    $watcher = New-Object System.IO.FileSystemWatcher
    $watcher.Path = "C:\Location\"
    $watcher.Filter = "*.*"
    $watcher.IncludeSubdirectories = $false
    $watcher.EnableRaisingEvents = $true  

### DEFINE ACTIONS AFTER A EVENT IS DETECTED
    $action = { $path = $Event.SourceEventArgs.FullPath
                $changeType = $Event.SourceEventArgs.ChangeType
                $token = ""
                $channel = "$general"
                $text = "$changeType, $path"
                $username = "Bot User"
                $postSlackMessage = @{token=$token; channel=$channel; text=$text; username=$username}
                Invoke-RestMethod -Uri https://slack.com/api/chat.postMessage -Body $postSlackMessage
              }    
### DECIDE WHICH EVENTS SHOULD BE WATCHED + SET CHECK FREQUENCY  
    $created = Register-ObjectEvent $watcher "Created" -Action $action
    $changed = Register-ObjectEvent $watcher "Changed" -Action $action
    $deleted = Register-ObjectEvent $watcher "Deleted" -Action $action
    $renamed = Register-ObjectEvent $watcher "Renamed" -Action $action
    while ($true) {sleep 5}

Eu tentei várias variações diferentes disso e não tenho certeza do que estou fazendo de errado. Eu posso fazer o script nixda funcionar e escrever em um arquivo txt, mas mudar a ação para Invoke-RestMethod não funciona.

Este é um problema de sintaxe que não estou conseguindo, ou algo maior que está faltando?

    
por ezgoodnight 11.07.2016 / 20:49

1 resposta

0

Como existem algumas visões sobre isso, postarei o script corrigido, conforme apontado por Techie007. Foi apenas um pequeno erro de digitação e este postagens para Slack se você gostaria de usar scripts Powershell para assistir a pastas no Windows:

### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
    $watcher = New-Object System.IO.FileSystemWatcher
    $watcher.Path = "C:\Location\"
    $watcher.Filter = "*.*"
    $watcher.IncludeSubdirectories = $false
    $watcher.EnableRaisingEvents = $true  

### DEFINE ACTIONS AFTER A EVENT IS DETECTED
    $action = { $path = $Event.SourceEventArgs.FullPath
                $changeType = $Event.SourceEventArgs.ChangeType
                $token = ""
                $channel = "#general"
                $text = "$changeType, $path"
                $username = "Bot User"
                $postSlackMessage = @{token=$token; channel=$channel; text=$text; username=$username}
                Invoke-RestMethod -Uri https://slack.com/api/chat.postMessage -Body $postSlackMessage
              }    
### DECIDE WHICH EVENTS SHOULD BE WATCHED + SET CHECK FREQUENCY  
    $created = Register-ObjectEvent $watcher "Created" -Action $action
    $changed = Register-ObjectEvent $watcher "Changed" -Action $action
    $deleted = Register-ObjectEvent $watcher "Deleted" -Action $action
    $renamed = Register-ObjectEvent $watcher "Renamed" -Action $action
    while ($true) {sleep 5}
    
por 28.09.2017 / 20:57