我在这里的最终目标是将CD刻录到powershell中的目录中,然后列出所有备用数据流文件,然后将其所有内容输出到CSV。
我目前的前两部分已编写脚本:
cd c:\users\profilename\downloads\
gci -recurse | % { gi $_.FullName -stream * } | where stream -ne ':$Data'
要打开示例数据流文件,请打开cmd,cd到目录,然后运行:
dir /r
此后,获取区域标识的文件之一的名称,然后运行不带:$ data的命令。
删除:$ Data之前的示例
notepad test.docx:Zone.Identifier:$Data
删除后(运行此命令):
notepad test.docx:Zone.Identifier
我将如何获取第二个命令的输出,并使用PSPath字段打开每个文件,然后将所有内容输出到一个CSV文件中?
非常感谢您的帮助。
答案 0 :(得分:1)
假设您喜欢流内容:
## Q:\Test\2018\11\19\SO_53380498.ps1
Pushd $ENV:USERPROFILE\Downloads
Get-ChildItem -Recurse | ForEach-Object {
Get-Item $_.FullName -Stream *
} | Where-Object Stream -ne ':$Data' |
Select-Object FileName,Stream,
@{n='CreationTime';e={(Get-Item $_.FileName).CreationTime}},
@{n='LastWriteTime';e={(Get-Item $_.FileName).LastWriteTime}},
@{n='Content';e={gc "$($_.FileName):$($_.Stream)"}} |
Export-Csv Streams.csv -NoTypeInformation
生成的Streams.csv文件的压缩输出
(日期格式取决于语言环境/用户设置):
> gc .\Streams.csv
"FileName","Stream","CreationTime","LastWriteTime","Content"
"C:\Users\LotPings\Downloads\2018-06-27-raspbian-stretch.zip","Zone.Identifier","2018-07-29 22:13:03","2018-07-29 22:16:41","[ZoneTransfer] ZoneId=3"
如果csv的最终目的地支持多行字段,则可以对内容进行-加入“`n” 。
答案 1 :(得分:0)
我认为这可能接近您想要的:
$files = gci -recurse | % { gi $_.FullName -stream * } | where stream -ne ':$Data' | select filename,stream,@{'name'='identifier';"e"={"$($_.filename)$($_.stream)"}}
为清晰起见,分成多行:
$files = Get-ChildItem -Recurse |
Where-Object { Get-Item $_.FullName -Stream * } |
Where-Object {$_.Stream -ne ':$Data'} |
Select-Object -Properties filename, stream, @{'name'='identifier';"e"={"$($_.filename)$($_.stream)"}}