Cómo utilizar Iniciar proceso como acción para FileSystemWatcher en Power Shell

Cómo utilizar Iniciar proceso como acción para FileSystemWatcher en Power Shell

Puedo usar System.IO.FileSystemWatcher con éxito para observar una carpeta y subdirectorios en busca de archivos creados, pero cuando intento ejecutar un archivo por lotes usando Iniciar proceso, se ejecuta una vez pero nunca se activa nuevamente. Modifiqué una respuesta deaquí.

Aquí está mi script de 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
}

Aquí está el archivo por lotes que estoy ejecutando.

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

El script de PowerShell continúa ejecutándose después de ejecutar el proceso y el proceso parece cerrarse correctamente. ¿Cómo hago para que continúe procesando eventos?

información relacionada