为什么所有Powershell输出都未写入txt文件
我在Powershell Core中运行以下Powershell脚本:为什么所有Powershell输出都未写入txt文件,powershell,Powershell,我在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文件La
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没有列-为什么会这样?如何修改脚本以将它们包含在文本文件中?两个旁白:
是>
输出文件-Append的(虚拟)别名;如果目的不是附加(到预先存在的文件),而是仅捕获当前命令的(整个)输出,则只使用
/
,而不使用输出文件
-append
,输出文件
/
捕获文件中输入对象的显示表示,这不适合后续编程处理。对于后者,请使用生成结构化输出的cmdlet,例如>
Out File
捕获所有用于显示的数据是合理的
遗憾的是,从PowerShell[Core]v7.0开始,输出文件
//>>
对控制台(终端)窗口的宽度(仍然)敏感,只能捕获屏幕上当前适合的内容
您可以使用-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中使用如此高的值,在Windows PowerShell中,每个输出行都被无条件地正确填充到该长度,这将导致文件过大。我建议对结构化数据使用CSV文件,而不是纯文本。查看cmdlet导出Csv
输出文件
仅限于屏幕上的空间量,如果屏幕不适合,它将不会显示所有数据,尝试将输出存储到一个变量,如$test=Get ChildItem-Recurse-File-Filter*.pbix | Sort Object-Property LastAccessTime |选择Object-Property Name、FullName、LastAccessTime、LastWriteTime-Last 10
,然后您可以使用$test.LastWriteTime
访问任何数据。