System.Drawing名前空間のImageクラスとSystem.Drawing.Imaging名前空間のImageFormatクラスを使う。画像ファイルをImageクラスのFromFileメソッドで読み込み、RawFormatプロパティと比較をすればよい。
ImageクラスのRawFormatプロパティは指定したファイルのGUIDを返し、ImageFormatクラスで定義されているファイル形式用のプロパティ(値はGUID)と比較をする。
以下は、PNG、JPEG、GIFファイルをそれぞれ読み込んで判定をした例。最初にAdd-Typeコマンドレットを使用して、System.Drawing名前空間のクラスを使えるようにする。
PS > Add-Type -AssemblyName System.Drawing PS > $img = [Drawing.Image]::FromFile("d:\image\image.png") PS > $img.RawFormat Guid ---- b96b3caf-0728-11d3-9d7b-0000f81ef32e PS > $img.RawFormat -eq [Drawing.Imaging.ImageFormat]::Jpeg False PS > $img.RawFormat -eq [Drawing.Imaging.ImageFormat]::Png True PS > $img = [Drawing.Image]::FromFile("d:\image\image.jpg") PS > $img.RawFormat -eq [Drawing.Imaging.ImageFormat]::Tiff False PS > $img.RawFormat -eq [Drawing.Imaging.ImageFormat]::Jpeg True PS > $img = [Drawing.Image]::FromFile("d:\image\image.gif") PS > $img.RawFormat -eq [Drawing.Imaging.ImageFormat]::Bmp False PS > $img.RawFormat -eq [Drawing.Imaging.ImageFormat]::Gif True
上記のとおりImageFormatクラスの各ファイル形式用のプロパティの値はGUID。存在しないプロパティ(ファイル形式)を指定すると、戻り値はヌルになる。
PS > [Drawing.Imaging.ImageFormat]::Bmp Guid ---- b96b3cab-0728-11d3-9d7b-0000f81ef32e PS > [Drawing.Imaging.ImageFormat]::Bmp -eq $null False PS > [Drawing.Imaging.ImageFormat]::Bmpp -eq $null True
ImageFormatクラスで用意されているファイル形式の種類については、以下を参照のこと。