【发布时间】:2020-03-25 20:56:50
【问题描述】:
我正在用 powershell 编写一个脚本来从服务器中提取文件信息并将数据写入 csv 文件以供审查。 我的大部分脚本运行良好,但我最初尝试提取每个文件的第一行导致了意外结果,因为某些文件没有 /cr 并因此打印整个文件内容。
我想将每个文件的前 50 个字节提取到 csv 中,但 -TotalCount 读取第一行,我一直在读取 .NET [IO.File] 和 [System.Text.Encoding] 但找不到工作方法。
我的代码目前是:
Select-Object FullName,Name,Directory,@{n="Owner";ex={(Get-ACL $_.Fullname).Owner}},CreationTimeUtc,LastAccessTimeUtc,LastWriteTimeUtc,@{n='Size(MB)';ex={[math]::Round($_.length/1MB, 2)}},
@{n='MD5';ex={(Get-FileHash $_.fullname).hash}},@{n="Content(UTF8)";ex={(Get-Content $_.fullname -AsByteStream -Raw -TotalCount 50)}} |
Export-Csv c:\temp\$fn-filelisting.csv -NoTypeInformation
似乎 PS 过去使用字节作为 -TotalCount 的选择,但后来将其更改为按行读取。
由于系统限制,必须使用 PS,所以任何想法都将不胜感激。
【问题讨论】:
-
从网上快速搜索,它看起来像
[IO.File]::OpenRead($file),然后是.ReadBytes()方法。
标签: powershell