PowerShell: Find File Download Source
# Recursively search current user's Downloads directory
Get-ChildItem -Recurse -File "$env:UserProfile\Downloads\" | ForEach-Object {
$file = $_
# Get all data streams of the file
$item = Get-Item $file.FullName -Stream *
if ($item.Stream -contains 'Zone.Identifier') {
# If the Zone.Identifier stream is present
# Value Setting
# ------------------------------
# 0 My Computer
# 1 Local Intranet Zone
# 2 Trusted sites Zone
# 3 Internet Zone
# 4 Restricted Sites Zone
$streamContents = Get-Content -Raw -Stream 'Zone.Identifier' $item.FileName
$streamContents = $streamContents.Split("`n")
$zoneId = $streamContents[1].Split('=')[1] -replace '\s'
if ($zoneId -in @('1','2','3','4')) {
$hostUrl = $streamContents | Where-Object {$_ -match '^HostUrl'}
$referrerUrl = $streamContents | Where-Object {$_ -match '^ReferrerUrl'}
if ($hostUrl) { $hostUrl = $hostUrl.Split('=')[1] }
if ($referrerUrl) { $referrerUrl = $referrerUrl.Split('=')[1] }
[PSCustomObject]@{
'ZoneId' = $zoneId
'FileName' = $file.FullName
'DownloadUrl' = $hostUrl
'ReferrerUrl' = $referrerUrl
}
}
}
} | Format-List *