FileSystemWatcher zum Ausführen von .NET-Funktionen

Ich erstelle eine schnelle vorübergehende Lösung. Tut mir leid, wenn dies schmutzig ist, aber

Zielsetzung

Ich möchte Powershells Register-Event cmd verwenden, um auf eine in einem Ordner abgelegte Datei zu warten, und dann eine Funktion aufrufen, die die Datei analysiert und sie ausgibt, um sie zu übertreffen. Ich brauche keine Hilfe beim Codieren, nur beim Konzept. Es ist mir immer noch ein wenig rätselhaft, wo dieses Event stattfindet und mit welchen Ressourcen es arbeiten muss.

Dinge, die ich ausprobiert habe

Eine .ps1-Datei mit registrierten Ereignissen im unteren Bereich, die oben eine Funktion aufruft, die von einer Batch-Datei aufgerufen wird.
Verhalten: Haltestellen auf dieser Linie:

$sr = new-object System.IO.StreamReader($copyPath)

Dies ist mein erster Aufruf von .NET, weshalb ich davon ausging, dass es sich um ein Problem mit .NET handelt.

Zwei .ps1-Dateien, FileWatcher und Parser, funktionieren hervorragend, wenn sie separat ausgeführt werden und von einer Batchdatei aufgerufen werden.
Verhalten: FileWatcher gibt "Diese Zeile" aus, gibt jedoch keine Zeilen in Parser aus und gelangt nie zu dieser Zeile.

Register-ObjectEvent $fsw Changed -SourceIdentifier FileChange -Action {
  Write-Host "This Line"
  .\src\Parser.ps1
  Write-host "That Line"
}

Ich war sogar so verzweifelt, zu zwei ps1-Dateien und zwei Batch-Dateien zu gehen. Sagen wir einfach, es hat nicht funktioniert.

Generischer Batchdateibefehl, den ich verwende:

powershell.exe -noexit C:\scripts\src\FileWatcher.ps1

Fragen

Warum werden bestimmte Befehle ordnungsgemäß ausgeführt, wenn sie von einem registrierten Ereignis aufgerufen werden, und andere Befehle wie .NET funktionieren nicht?

Ist das, was ich versuche, überhaupt möglich?

Haben Sie einen besseren Weg, um mein Ziel zu erreichen? (Nur für Skripte, denken Sie daran, dass dies ein Hotfix ist.)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage