デジカメ画像のExifデータをPowerShellで取得してmongoDBに入れる(PowerShell Image Module)準備
先日、jhead.exeを使用してExifデータを取得する方法を記載しましたが、PowerShellで完結する方法がありました。
但し、この方法はvista以上のOSでしか動かないようです。当方は、Windows7 64bitで動作を確認しています。
追記:モジュール内でWia.ImageFileというCOMオブジェクトを使用しています。Windows Image Acquisition (WIA) 2.0 ライブラリをインストールすればXP等のOSでも使えるようです。
http://gallery.technet.microsoft.com/scriptcenter/7d7dcf67-5585-40b6-bab8-9484672e4f84
準備
- PowerShell Image Moduleをダウンロード
http://gallery.technet.microsoft.com/scriptcenter/PowerShell-Image-module-caa4405a
- Image.zipを解凍
- PowerShellコンソールで以下コマンドで表示されるモジュールパスに配置する。
PS> $Env:PsModulePath
- 通常以下ディレクトリとなる(WindowsPowerShell\Modulesのディレクトリがない場合は作る)
C:\Users\<ユーザ名>\Documents\WindowsPowerShell\Modules
- 上記ディレクトリにImageディレクトリを配置する。
C:\Users\<ユーザ名>\Documents\WindowsPowerShell\Modules\Image
- 動作確認(PowerShellコンソール)
# PowerShell Image Moduleのロード
PS> Import-Module Image
# モジュール内スクリプト実行確認
PS> Get-Exif "xxxx.jpg"
※Exceptionが発生し、"get-help about_signingと入力してヘルプを参照してください"というメッセージがでたら以下いずれかの方法で対応します。
1、Set-ExecutionPolicyでUnrestrictedに設定する。(実行の度に確認を求められるのでめんどくさい)
2、C:\Users\<ユーザ名>\Documents\WindowsPowerShell\Modules\Image内のファイルを右クリック[プロパティ]の下の方にある[ブロックを解除]を押して解除する。(実行しても安全とわかっているものはこれが簡単です)
3、 PowerShell 3.0 には、Unblock-File という専用のコマンドレットが用意されてます。
http://technet.microsoft.com/en-us/library/hh849924.aspx