.jpg以下は、拡張子が/のファイル、.jpegまたは最初の 4 バイトに JPEG ヘッダーを含むファイルを取得します。
[Byte[]] $jpegHeader = 255, 216, 255, 224;
function IsJpegFile([System.IO.FileSystemInfo] $file)
{
    # Exclude directories
    if ($file -isnot [System.IO.FileInfo])
    {
        return $false;
    }
    # Include files with either a .jpg or .jpeg extension, case insensitive
    if ($file.Extension -match '^\.jpe?g$')
    {
        return $true;
    }
    # Read up to the first $jpegHeader.Length bytes from $file
    [Byte[]] $fileHeader = @(
        Get-Content -Path $file.FullName -Encoding Byte -ReadCount 0 -TotalCount $jpegHeader.Length
    );
    if ($fileHeader.Length -ne $jpegHeader.Length)
    {
        # The length of the file is less than the JPEG header length
        return $false;
    }
    # Compare each byte in the file header to the JPEG header
    for ($i = 0; $i -lt $fileHeader.Length; $i++)
    {
        if ($fileHeader[$i] -ne $jpegHeader[$i])
        {
            return $false;
        }
    }
    return $true;
}
[System.IO.FileInfo[]] $jpegFiles = @(
    Get-ChildItem -Path 'C:\' -Recurse `
        | Where-Object { IsJpegFile $_; }
);
$jpegFiles | Format-Table 'FullName' | Out-File 'C:\Users\User1\Desktop\dll.txt';
コマンドレット-Encodingのおよび-TotalCountパラメータは、ファイル全体ではなく、各ファイルの最初の 4 バイトのみを読み取るために使用されることに注意してください。これは、基本的にドライブ上のファイル データのすべてのバイトを読み取ることを回避するため、重要な最適化です。Get-ContentC: