functions/Resolve-FileType.ps1
function Resolve-FileType { <# .SYNOPSIS Takes a file and figures out its potential filetypes. .DESCRIPTION Takes a file and figures out its potential filetypes. Ignores folder. .PARAMETER Path Path to the file. .EXAMPLE PS C:\> Get-ChildItem C:\Shares\Data -Recurse | Resolve-FileType Detects the filetype of all files in C:\Shares\Data #> [CmdletBinding()] param ( [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [PsfValidateScript('FileType.Validate.Paths', ErrorString = 'FileType.Validate.Paths.Failed')] [Alias('FullName')] [string[]] $Path ) process { foreach ($pathItem in $Path) { foreach ($resolvedPath in $pathItem) { $item = Get-Item -Path $resolvedPath -Force if ($item.PSIsContainer) { continue } New-Object FileType.Resolution -Property @{ FullName = $resolvedPath FileTypes = @([FileType.FTHost]::ResolveType($item) | Where-Object { $_.Header.Count -gt 0 }) } } } } } |