Nach eingehender Untersuchung haben wir festgestellt, dass die angehängte Textdatei einige Zeilenumbrüche enthält, die nicht von Wagenrückläufen verarbeitet wurden (dh \ n statt \ r \ n).
Durch das Entfernen dieser eigenständigen Zeilenvorschübe wurde das Problem behoben.
Falls es für andere von Nutzen sein sollte, finden Sie hier das Skript zum Entfernen ungültiger Zeichen in einer Datei:
Datei: RemoveInvalidLineBreaks.ps1
if ($args.length -gt 0 -AND
$args[0] -ne $NULL -AND
$args[0] -ne "")
{
$fn = $args[0]
(Get-Content $fn) | Set-Content $fn
}
else
{
write-error "No filename supplied"
}
Beispiel Verwendung:
(wenn von Windows Batch-Datei aufgerufen)
powershell -ExecutionPolicy RemoteSigned ./RemoveInvalidLineBreaks.ps1 D:\TEST\myLogFile.txt
Das Skript funktioniert , weil Get-Content
, wenn sie ohne die verwendeten -Raw
Parameter (die von PS3 ab nur verfügbar ist) liest die Datei eine Zeile zu einer Zeit, sowohl die Behandlung \r\n
und \n
als Zeilenende Zeichen; aber wenn Sie Set-Content
nur mit der Windows- \r\n
Zeilenende-Konvention zurückschreiben ; Somit werden alle Pausen ersetzt.