Como usar Iniciar processo como uma ação para FileSystemWatcher no Power Shell

Como usar Iniciar processo como uma ação para FileSystemWatcher no Power Shell

Consigo usar System.IO.FileSystemWatcher com êxito para monitorar uma pasta e subdiretórios para arquivos criados, mas quando tento executar um arquivo em lote usando Iniciar processo, ele é executado uma vez, mas nunca mais é acionado. Modifiquei uma resposta deaqui.

Aqui está meu script do PowerShell

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\lectures"
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true  

$action = { $path = $Event.SourceEventArgs.FullPath
            Write-Host "Event Fired"
            $ext = [io.path]::GetExtension($path)
            if($ext -eq ".wma"){
                $file = [io.path]::GetFileNameWithoutExtension($path)
                $folder = Split-Path(Split-Path $path -Parent) -Leaf
                $date = Get-Date -UFormat "%Y-%m-%d"
                $newName = $folder + "_" + $date + $ext
                $newPath = Rename-Item -path $path -newname $newName -PassThru
                Start-Process "C:\lectures\deploy.bat" $newPath
            }
          }

Register-ObjectEvent $watcher "Created" -Action $action
while ($true) {
    Write-Host "Still Alive"
    sleep 5
}

Aqui está o arquivo em lote que estou executando

@echo off
CD %~dp1
ffmpeg -i %~nx1 %~n1.mp3 -loglevel panic
del %1
REM Winscp.com /ini=null /script=uploadScript.txt /parameter %~n1.mp3

O script do PowerShell continua em execução após a execução do processo e o processo parece estar encerrando corretamente. Como faço para continuar processando eventos?

informação relacionada