Powershell - 列出一个目录中的所有备用数据流信息

use*_*171 6 powershell alternate-data-stream

我的最终目标是 cd 到 powershell 中的目录,然后列出所有备用数据流文件,然后将其所有内容输出到 CSV。

我目前已经编写了前两部分的脚本:

cd c:\users\profilename\downloads\
gci -recurse | % { gi $_.FullName -stream * } | where stream -ne ':$Data'
Run Code Online (Sandbox Code Playgroud)

要打开示例数据流文件,请打开 cmd,cd 到目录,然后运行:

dir /r
Run Code Online (Sandbox Code Playgroud)

之后,获取其中一个文件的区域标识名称并运行此命令(不带 :$data)。

删除之前的示例:$Data

notepad test.docx:Zone.Identifier:$Data
Run Code Online (Sandbox Code Playgroud)

删除后(运行此命令):

notepad test.docx:Zone.Identifier
Run Code Online (Sandbox Code Playgroud)

我将如何获取第二个命令的输出并使用 PSPath 字段打开每个文件,然后将所有内容输出到一个 CSV 文件中?

任何帮助是极大的赞赏。

tho*_*her 0

我认为这可能接近你想要的:

$files = gci -recurse | % { gi $_.FullName -stream * } | where stream -ne ':$Data' | select filename,stream,@{'name'='identifier';"e"={"$($_.filename)$($_.stream)"}}
Run Code Online (Sandbox Code Playgroud)

为了便于阅读,分成多行:

$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)"}}
Run Code Online (Sandbox Code Playgroud)