2015-11-18

PowerShellで詳細プロパティの値を取得する

あるファイルを右クリックしプロパティを表示させると、そのファイルの情報(サイズや作成日時、更新日時など)を確認することができます。

Get-ChildItemコマンドレットを使用すれば、そのプロパティ情報を取得することができます。
$Sample = Get-ChildItem -Path "C:\PowerShell\サンプル.xlsx"

#ファイルサイズ
$Sample.Length

#更新日時
$Sample.LastWriteTime
上記以外にも、「$Sample.DirectoryName」でそのファイルが格納されているフォルダのパス、「$Sample.LastAccessTime」でアクセス日時を取得することができます。
その他については、「$Sample.」のタブ補完でご確認ください。


今回の本題はここからです。


ファイルのプロパティには、他にも様々な項目が存在します。
(右クリック→プロパティ→詳細タブを参照ください)

JPGファイル・MPGファイル・Excelファイルを確認しましたが、その全てに撮影日時・作成者・アルバム名・タイトル・件名・カメラのモデルなどなど287個の項目が確認できました。

この項目は、その値の有無に関らず必ず存在しているようです。
例えば、Excelデータにも「撮影日時」の項目は存在しますが、値は空となっています。
(右クリックしても表示されませんが、コマンドを使用すれば取得することができます)

それでは早速、詳細なプロパティの値を取得するスクリプトを記述します。
# 詳細プロパティの取得

# シェルオブジェクトを作成
$Shell = New-Object -ComObject Shell.Application

# フォルダの指定
$Folder = $Shell.NameSpace("C:\PowerShell")

# ファイルの指定
$File = $Folder.parseName("P001.JPG")

# 詳細プロパティ(撮影日時)の取得
$GET = $Folder.GetDetailsOf($File,12)

Write-Host $GET
上記スクリプトは、Cドライブ内の「PowerShell」フォルダの中にある「P001」というJPGファイル(写真データ)の撮影日時を取得しています。
# 詳細プロパティ(撮影日時)の取得
$GET = $Folder.GetDetailsOf($File,12)
この記述で撮影日時を取得しています。

プロパティの項目は287個あり、その全てに固有の番号が設定されています。

例えば、0=名前、1=サイズ、2=項目の種類、3=更新日時、4=作成日時、5=アクセス日時・・・286=総ビットレート という具合です。

上記例では、撮影日時を表す"12"を指定しています。

これとFor文と組み合わせることによって、「撮影日時が○○年○○月○○日のデータだけを抽出する」なんてことが可能になります。

=============================================================
本投稿に関する疑問や質問には可能な限りお答えさせていただきます。
お気軽にコメントやメールをお送りください。
(リクエストも歓迎します)
メール:tkk-powershell@gmail.com
また、間違いのご指摘・アドバイス等も歓迎いたします。
=============================================================
Google+、Twitterで更新情報をお届けしています!
ぜひフォローをお願い致します!           
=============================================================
スポンサーリンク


0 件のコメント:

コメントを投稿

疑問・質問・リクエスト お気軽にどうぞ (^O^)/