0

我正在尝试使用 Get-Content 获取最新的 .xml 文件及其所有内容以显示在 powershell 窗口中,但我很难。

我使用了以下内容:

Get-ChildItem "\\Server1\c$\Program Files\AAA\Logs\"  | Sort-Object CreationTime | Select-Object -Last 1

Get-Content -Path "\\Server1\c$\Program Files\AAA\Logs\" | Where-Object {$_.LastWriteTime -lt (get-date).addDays(-1)} | Select -Last 1

但我不知道如何获取最新文件并在控制台中显示其所有内容

4

1 回答 1

1

你很亲密。您必须将第一行的结果通过管道传输到Get-Content

Get-ChildItem "\\Server1\c$\Program Files\AAA\Logs\" | Sort-Object CreationTime | Select-Object -Last 1 | Get-Content

你的第二行没有多大意义。如果您提供有效的路径Get-Content,它将以字符串的形式返回文件内容。之后,您不能将任何创建时间逻辑应用于此内容Where-Object

不过,您的第一行是这样的:

  1. 它获取给定路径中包含的所有文件和文件夹。如果这个路径真的只包含有效的日志文件,你可以这样保留它。否则你应该过滤这个结果,所以你真的只是得到你想要的文件。准确地说,Get-ChildItem返回一个对象数组System.IO.FileInfo。它们包含有关您的文件的大量信息。
  2. System.IO.FileInfo然后,您可以按CreationTime属性对这个对象数组进行排序Sort-Object
  3. 最后,选择排序数组的最后一个元素。这仍然是一个System.IO.FileInfo对象。这就是为什么您会在输出中看到它的一些属性。

如果然后将此System.IO.FileInfo对象通过管道传递给Get-Content,则此对象的FullPath属性将映射到 的-Path参数Get-Content,从而返回该System.IO.FileInfo对象指定的文件的内容。

于 2020-11-24T06:25:59.320 回答