使用参数 -Tail 的 Get-Content 需要无限的时间

使用参数 -Tail 的 Get-Content 需要无限的时间

当我执行Get-Content -ReadCount 0 -encoding String -literalpath "D:\file"一个文件时,它会在一分钟内转储十六进制内容,但是当我执行时Get-Content -ReadCount 0 -tail 1 -encoding String -literalpath "D:\file",Powershell 不会给出任何输出,即使 30 分钟后也是如此。这是文件链接。我遗漏了什么?

答案1

存在问题的PowerShellGet-Content文件nul-Encoding Byte

从您发布的链接下载文件并使用以下方式打开它记事本++,看起来最后一行有一长组nul字符(见下文)。

在此处输入图片描述

由于该文件的内容是这样的,并且你使用的语法是获取内容的:Get-Content -ReadCount 0 -tail 1 -encoding String -literalpath "D:\file"来获取内容,似乎在使用时它会破坏 PowerShell 查询-encoding String

正如这篇文章针对各种答案所建议的那样如何从 PowerShell 中的对象中删除 NULL 字符 (0x00),似乎和的十六进制值/x00使用获取内容使用将字符集标识为字符串的参数-Encoding String,它不喜欢这些十六进制值并会使 PowerShell 感到困惑。


结论和解决方案

切换获取内容使用将-Encoding Byte字符集识别为字节的语法似乎可以解决这个问题。

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

有效的语法是Get-Content -ReadCount 0 -tail x -encoding Byte -literalpath "D:\file"x 是您想要的字节数。-encoding 字符串失败,因为没有尾部。–萨比亚萨奇·穆克吉

相关内容