PowerShell: Possible to Determine a File's MIME Type?

后端 未结 4 1140
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-05 04:15

Is it possible for PowerShell to determine what a given file\'s type is? For example, if I pass it a path of C:\\Foo.zip, can I have it determine that the file

相关标签:
4条回答
  • 2021-01-05 04:27

    If you have .NET 4.5+, you can use the static method System.Web.MimeMapping.GetMimeMapping:

    > Add-Type -AssemblyName "System.Web"
    > [System.Web.MimeMapping]::GetMimeMapping("C:\foo.zip")
    application/x-zip-compressed
    

    Credit goes to this answer to a similar question about .NET.


    Edit: Misread the question. GetMimeMapping returns the MIME type by extension, it doesn't analyze the contents.

    0 讨论(0)
  • 2021-01-05 04:29

    PowerShell, like rest of the Windows operating system, merely guesses the file type based on the extension.

    However, there are third-party file type guesser programs out there, ones that actually look at the contents of the file.

    There is a truly excellent answer to this question over on SuperUser. Top recommendations include File for Windows and TrID.

    0 讨论(0)
  • 2021-01-05 04:29

    You can get the mime types from the registry. Unfortunately the HKEY_CURRENT_USER hive isn't auto-mapped as a drive so you'll have to put a check in for that first.

    function Get-MimeType()
    {
      param($extension = $null);
      $mimeType = $null;
      if ( $null -ne $extension )
      {
        $drive = Get-PSDrive HKCR -ErrorAction SilentlyContinue;
        if ( $null -eq $drive )
        {
          $drive = New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
        }
        $mimeType = (Get-ItemProperty HKCR:$extension)."Content Type";
      }
      $mimeType;
    }
    

    Here's an example usage

    PS> Get-MimeType -extension .zip
    application/x-zip-compressed
    

    -Joe

    0 讨论(0)
  • 2021-01-05 04:43
    $ext = ".exe"
    $null = New-PSDrive HKCR Registry HKEY_CLASSES_ROOT -ea 0
    $mime = (gp HKCR:$ext)."Content Type"
    write-host $ext $mime
    
    0 讨论(0)
提交回复
热议问题