Wie kann ich die Handbremsenausgabe sowohl auf dem Bildschirm als auch in einer Datei ausgeben?

So habe ich die Handbrake-Befehlszeile verwendet, um meine Videosammlung zum Speichern auf meinem NAS zu codieren, damit ich sie auf meinem HTPC verwenden kann. Ich habe nach einer Möglichkeit gesucht, beides auf dem Bildschirm auszugeben, damit ich die Ausgabe als Codierung verfolgen kann, aber auch in einer Datei, damit ich mich eine bestimmte Codierungssitzung ansehen kann.

Meine Lösung hierfür bestand darin, ein Powershell-Fenster zu verwenden, um die Codierung und Ausgabe in eine Datei auszuführen, und dann ein anderes Powershell-Fenster, um die Protokolldatei zu lesen und auf dem Bildschirm anzuzeigen. Das funktioniert, aber ich möchte es verbessern, da es nicht perfekt ist. Da das Skript read file in einem festgelegten Intervall liest, fehlen Zeilen. Auch wenn ich das Intervall verkleinere, wirkt sich dies auf die Systemleistung aus, sodass die Codierung etwas langsamer ausgeführt wird. Gibt es eine Möglichkeit, die Ausgabe des ersten Fensters sowohl in eine Datei als auch auf den Bildschirm umzuleiten?

Das erste Powershell-Skript (das die Codierung startet) mit dem Namen "Convert1.ps1" (wird aus dem Handbremsen-Installationsverzeichnis ausgeführt):

net time \\ODIN |find "Current time"
./HandbrakeCLI.exe -i "<input file>" -o "<output file>" <handbrake parameters>

Das zweite Powershell-Skript zur Ausgabe in eine Datei mit dem Namen "Start_Convert.ps1":

d:\Conversions\Convert.ps1 2>&1 | out-file d:\Conversions\Completed\Movies\9.29.2010.log

Das dritte aus dieser Protokolldatei zu lesende Powershell-Skript mit dem Namen "Watch_Output.ps1":

while (1)
{
(Get-Content d:\Conversions\Completed\Movies\9.29.2010.log)[-1]
Start-sleep 5
}

Ich möchte im Idealfall alles auf ein einziges Powershell-Fenster beschränken, in dem ein einzelnes Skript ausgeführt wird, mit dem die Codierung gestartet, in eine Datei ausgegeben und auf dem Bildschirm angezeigt wird.

Edit (Adding Solution): 2 verschiedene Möglichkeiten, ich gehe mit letzterem um, da es einfacher ist.

Weg Nr. 1 - Start-Job Resultierendes Skript zum Starten meiner Konvertierungen:

Start-Job -Name VideoConvert -ScriptBlock { d:\Conversions\Convert.ps1 2>&1 | out-file d:\Conversions\Movies\Movie.log }
Get-FileTail -Wait Encoding Unicode -Path D:\Conversions\Completed\Movies\Movie.log

Way # 2 - Tee-Object Resultierendes Skript zum Starten meiner Konvertierungen:

d:\Conversions\Convert.ps1 2>&1 |Tee-Object -File D:\Conversions\Completed\Movies\Movie.log

ielen Dank nochmal an alle. Das funktioniert genau so, wie ich es wollte.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage