Get-Content mit Argument -Tail benötigt unbegrenzte Zeit

801
Sabyasachi Mukherjee

Wenn ich Get-Content -ReadCount 0 -encoding String -literalpath "D:\file"eine Datei ausführe, wird der Hex-Inhalt innerhalb einer Minute Get-Content -ReadCount 0 -tail 1 -encoding String -literalpath "D:\file"ausgegeben, aber wenn ich eine Datei ausführe, gibt Powershell auch nach 30 Minuten keine Ausgabe aus. Hier ist der Link zur Datei . Was fehlt mir?

1
Hier ist [eine andere Datei] (https://1drv.ms/u/s!Aoy94YsQZODbhE3OBWyZUdRBwDOP), die dasselbe Problem aufweist. Sabyasachi Mukherjee vor 7 Jahren 0
@PIMP_JUICE_IT Ich habe das Problem gelöst, indem ich den Schalter "-encoding byte" hinzugefügt habe. Du hattest Recht. Dateien, die mit einem Hex-Wert von \ x00 enden, sind das Problem, da es praktisch keinen Schwanz gibt. Sabyasachi Mukherjee vor 7 Jahren 0
Sie sollten die Ehre erbringen, die Antwort hinzuzufügen. Die Syntax, die funktioniert hat, ist Get-Content -ReadCount 0 -tail x -encoding Byte -literalpath "D: \ file" `wobei x die Anzahl der gewünschten Bytes ist. "-encoding String" schlägt fehl, da kein Schwanz vorhanden ist. Sabyasachi Mukherjee vor 7 Jahren 0
Nein, es klärt das Problem und bietet bei Bedarf die Lösung. Sabyasachi Mukherjee vor 7 Jahren 0

1 Antwort auf die Frage

1
Pimp Juice IT

PowerShell- Get-ContentDateiwert nulmit -Encoding ByteProblem

Wenn Sie die Datei von dem Link, den Sie gepostet haben, herunterladen und mit Notepad ++ öffnen, scheint die letzte Zeile eine lange Reihe von nulZeichen zu enthalten (siehe unten).

enter image description here

Da sich dieser Inhalt im Inhalt dieser Datei befindet und die Syntax, die Sie mit Get-Content verwendet haben, gilt Folgendes : Get-Content -ReadCount 0 -tail 1 -encoding String -literalpath "D:\file"Um den Inhalt abzurufen, scheint es, als würde er die PowerShell-Abfrage verschließen -encoding String.

Wie in diesem Beitrag zu verschiedenen Antworten vorgeschlagen Wie Sie NULL-Zeichen (0x00) aus einem Objekt in PowerShell entfernen, scheint der Hex-Wert von /x00und die Verwendung von Get-Content mit dem Parameter -Encoding Stringdes Zeichensatzes, der als Zeichenfolge zu kennzeichnen ist, dies nicht zu tun wie diese Hex-Werte und verwirrt PowerShell.


Schlussfolgerung und Lösung

Das Wechseln der Get-Content- Syntax unter Verwendung -Encoding Bytedes als Bytes zu erkennenden Zeichensatzes scheint dieses Problem zu lösen.

Get-Content -ReadCount 0 -tail x -encoding Byte -literalpath "D:\file" 

Die Syntax, die funktioniert hat, ist, Get-Content -ReadCount 0 -tail x -encoding Byte -literalpath "D:\file"wobei x die Anzahl der gewünschten Bytes ist. -encoding String schlägt fehl, da kein Schwanz vorhanden ist. - Sabyasachi Mukherjee