gpt4 book ai didi

powershell - 为什么没有将所有 Powershell 输出写入 txt 文件

转载 作者:行者123 更新时间:2023-12-02 22:35:51 26 4
gpt4 key购买 nike

我有以下在 Powershell Core 中运行的 Powershell 脚本:

 PS C:\> Get-ChildItem -Recurse -File -Filter *.pbix | 
Sort-Object -Property LastAccessTime |
Select-object -Property Name, FullName, LastAccessTime, LastWriteTime -Last 10
>> files.txt

打开文件 files.txt 时没有 LastAccessTime、LastWriteTime 的列 - 为什么会这样?我该如何修改脚本以便将它们包含在文本文件中?

最佳答案

两个旁白:

  • >>>Out-File -Append 的(虚拟)别名;如果目的不是附加(到一个预先存在的文件),而是只捕获当前命令的(整个)输出,则只使用>/Out-File 没有 -Append.

  • Out-File 因此也 >/>>> 捕获 for-display 表示文件中的输入对象,适合后续程序化处理。对于后者,使用生成结构化输出的 cmdlet,例如 Export-Csv .

也就是说,Out-File 捕获所有 用于显示的数据是合理的,因为文件 而不是显示是目标。

遗憾的是,从 PowerShell [Core] v7.0 开始,Out-File/>>/>>> 对(仍然)敏感控制台(终端)窗口的宽度,并且只捕获当前适合屏幕的宽度

您可以使用 Out-File使用 -Width 参数来解决这个问题:

Get-ChildItem -Recurse -File -Filter *.pbix |
Sort-Object -Property LastAccessTime |
Select-object -Property Name, FullName, LastAccessTime, LastWriteTime -Last 10 |
Out-File -Width ([int]::MaxValue-1) files.txt # Add -Append, if needed.

注意:从 v7.0 开始,[int]::MaxValue-1 似乎是接受的最高值; [int]::MaxValue悄悄忽略。此外,请确保不要在 Windows PowerShell 中使用如此高的值,其中每条输出行都无条件地用右空格填充到该长度,这会导致过大文件。

关于powershell - 为什么没有将所有 Powershell 输出写入 txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62628898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com