在前面的技能中,我们研究了 NTFS 流,并发现 Windows 如何使用“区域信息”流标记下载的文件。您还学习了使用 Unblock-File
从文件中删除此限制。
在最后一部分中,我们做了相反的事情,查找从不受信任的来源下载的文件。例如,此行列出了所有附加了 Zone.Identifier
流的文件:
1 2 3 4
| $path = "$env:userprofile\Downloads"
Get-ChildItem -Path $Path -file | Where-Object { @(Get-Item -Path $_.FullName -Stream *).Stream -contains 'Zone.Identifier' }
|
所有这些文件都来自 Windows 认为不一定可信的来源。
要了解更多信息,您必须阅读附件中的信息流。这段代码揭示了“下载”文件夹中所有“区域信息”流的全部内容:
1 2 3 4 5 6 7
| $path = "$env:userprofile\Downloads"
Get-ChildItem -Path $Path -file | Where-Object { @(Get-Item -Path $_.FullName -Stream *).Stream -contains 'Zone.Identifier' } | ForEach-Object { Get-Content -Path $_.FullName -Stream Zone.Identifier }
|
显然,该信息包含有关引用和来源的信息,因此您可以还原此信息并找出在“下载”文件夹中找到的所有内容的来源:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $path = "$env:userprofile\Downloads"
Get-ChildItem -Path $Path -file | Where-Object { @(Get-Item -Path $_.FullName -Stream *).Stream -contains 'Zone.Identifier' } | ForEach-Object { $info = Get-Content -Path $_.FullName -Stream Zone.Identifier [PSCustomObject]@{ Name = $_.Name Referrer = @(($info -like 'ReferrerUrl=*').Split('='))[-1] HostUrl = @(($info -like 'HostUrl=*').Split('='))[-1] Path = $_.FullName } } | Out-GridView
|
这使您可以很好地了解下载的原始来源。