powershell - 为什么所有的 Powershell 输出都没有写入 txt 文件
问题描述
我有以下在 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
;的(虚拟)别名 如果意图不是附加(到预先存在的文件),而是仅捕获当前命令的(整个)输出,请使用 just>
/Out-File
without-Append
。Out-File
因此也>
/>>
捕获文件中输入对象的显示表示,这不适合后续的程序处理。对于后者,请使用生成结构化输出的 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中使用如此高的值,其中每个输出行都无条件地右空格填充到该长度,这会导致文件过大。
推荐阅读
- arduino - 失败:Arduino 草图上传到 Wemos Lolin D32——超时或数据包头无效
- gwt - GWT Bootstrap3 上下文菜单
- android - 在 Android 中以编程方式使用渐变着色图标
- unity3d - Unity 检测 ui 画布上的封闭白色表面
- cpu-architecture - 为什么 FADDP D-form 在 Cortex-A72 上的吞吐量高于 FADDP Q-form
- java - 当我尝试运行@Query 时,为什么 JPA /Hibernate 会抛出“java.lang.NegativeArraySizeException: -1”?
- html - 以角度分页显示表格的更多行
- microservices - Question about architecture of microservices over http for Nestjs
- laravel - 与环境关联的一个或多个 TargetGroup 处于降低的健康状态
- oracle-apex - Oracle APEX 自定义成功消息