PowerShellを使ってサイズや更新日時、バージョンなど、ファイルのプロパティ情報を取得する方法
PowerShellを使って更新日時やバージョンなど、ファイルのプロパティ情報を取得したい!
Windows PCの運用管理や設定変更を、PowerShellを使って自動化する際、ファイルのプロパティ情報を取得したいことがあります。
たとえばファイルの更新日時やバージョン情報を確認し、最新のファイルでなければ、インターネット上からファイルデータを取得。
そしてPC上のファイルを最新バージョンのファイルに置き換えるだとか。
特定ファイルの属性情報(読み取り専用、隠しファイル、NTFS圧縮されているかどうかなど)を確認。
もしも読み取り専用が解除されていた場合には、読み取り専用に設定を変更し、ファイルを保護する、といったケースが考えられます。
参考:PowerShellを使ってファイルをインターネットからダウンロードする方法
そこで今回は、作成日時や更新日時、アクセス日時、バージョンなど、ファイルやフォルダーの各種プロパティ情報をPowerShellを使って取得する方法をご紹介します!
PowerShellを使ってファイルやフォルダーのプロパティ情報を取得する方法
PowerShellを使ってファイルやフォルダーの各種プロパティ情報を取得したいときは、『Get-ItemProperty』コマンドレットを使用します。
使い方はとても簡単で、『Get-ItemProperty “情報の取得対象ファイルのパス”』という構文でコマンドを実行するだけでOKです。
たとえばOffice 2016に含まれているExcel 2016の実行ファイルのプロパティ情報を取得したいときは、以下のようなコマンドを実行します。※
1 2 3 4 5 6 7 8 9 10 11 12 | PS C:\> Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE" ディレクトリ: C:\Program Files (x86)\Microsoft Office\Office16 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2015/07/31 9:57 27063456 EXCEL.EXE PS C:\> |
※Officeをインストールする際、インストール先フォルダーのパスを変更している環境などでは、Excel 2016の実行ファイルのパスが異なります。
『Get-ItemProperty』コマンドレットで取得可能な各種プロパティ情報について
『Get-ItemProperty』コマンドレットでは、取得対象の情報を指定していない場合、先ほど提示した実行例のとおり『Mode』(属性情報)と『LastWriteTime』(更新日時)、『Length』(ファイルのサイズ)、『Name』(ファイル名)の情報が取得されます。
ですが取得対象の情報を指定することで、これら以外のプロパティ情報についても取得可能です。
参考までに、使用されることが多いであろう各種プロパティ情報について、Office 2016に含まれているExcel 2016の実行ファイルのプロパティ情報を取得する方法を例に、その取得方法をご紹介しましょう!
ファイルが保存されているフォルダー名を取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").DirectoryName |
ファイル名を取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").name |
ファイルサイズ(『ディスク上のサイズ』ではなく『サイズ』※)を取得する
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").Length |
※
ファイルのプロパティ画面では、以下のように『サイズ』と『ディスク上のサイズ』を確認可能です。
このうち、『(Get-ItemProperty “情報の取得対象ファイルのパス”).Length』で取得できるのは、『ディスク上のサイズ』ではなく『サイズ』となります。
参考:ファイルやフォルダーのサイズとディスク上のサイズが違う理由を徹底解説!
ファイルが読み取り専用かどうかを取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").IsReadOnly |
ファイルの拡張子を取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").Extension |
ファイルの作成日時を取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").CreationTime |
ファイルの作成日時(UTC = 協定世界時)を取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").CreationTimeUtc |
ファイルの更新日時を取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").LastWriteTime |
ファイルの更新日時(UTC = 協定世界時)を取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").LastWriteTimeUtc |
ファイルのアクセス日時を取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").LastAccessTime |
ファイルのアクセス日時(UTC = 協定世界時)を取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").LastAccessTimeUtc |
ファイルの属性情報(読み取り専用、隠しファイル、NTFS圧縮されているかどうかなど)を取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").Attributes |
また、読み取り専用や隠しファイル、システム属性を持っているかどうかは、以下のようにModeを参照する方法でも取得可能です。
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").Mode |
Modeで取得できる情報は、以下のとおりです。
- d:フォルダーであることを示す
- a:ファイルをアーカイブ可能にする(アーカイブ属性を持っていることを示す)
- r:読み取り専用であることを示す
- h:隠しファイルであることを示す
- s:システムファイルであることを示す
- l:シンボリックリンクであることを示す
『Get-ItemProperty』コマンドレットで取得可能な情報を一括して取得する方法
『Get-ItemProperty』コマンドレットで取得可能な情報を一括して取得したい場合には、『Select-Object』コマンドレットを組み合わせ、『Get-ItemProperty “情報の取得対象ファイルのパス” | Select-Object *』形式でコマンドを実行してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 | PS C:\> Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE" | Select-Object * PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Program Files (x86)\Microsoft Office\Office16 PSChildName : EXCEL.EXE PSDrive : C PSProvider : Microsoft.PowerShell.Core\FileSystem 中略 Attributes : Archive PS C:\> |
※『Select-Object *』を併用した『Get-ItemProperty』コマンドレットの実行結果は量が多いため、上記実行例では一部結果のみを例示しています。
ファイルのバージョン情報の取得について
ファイルのバージョン情報の取得については、『Get-ItemProperty』コマンドレットで取得できる『VersionInfo』を参照することで、詳細な情報を確認可能です。
1 2 3 4 5 6 7 8 | PS C:\> (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").VersionInfo ProductVersion FileVersion FileName -------------- ----------- -------- 16.0.4266.1001 16.0.4266.1001 C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE PS C:\> |
『VersionInfo』についても、取得する情報を指定しない場合では一部の情報(『ProductVersion』、『FileVersion』、『FileName』)のみが取得されます。
そのため、取得したい情報がこれらではない場合には、以下実行コマンドの例を参考に取得したい情報を指定すると良いでしょう。
ファイルのバージョンを取得する:
1 2 3 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").VersionInfo.FileVersion #または (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").VersionInfo.FileVersionRaw |
ファイルのメジャーバージョンのみを取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").VersionInfo.FileVersionRaw.Major |
ファイルの製品バージョンを取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").VersionInfo.ProductVersion |
ファイルの会社名を取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").VersionInfo.CompanyName |
ファイルの製品名を取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").VersionInfo.ProductName |
ファイルの説明を取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").VersionInfo.FileDescription |
ファイルの言語を取得する:
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").VersionInfo.Language |
『VersionInfo』の情報をすべて一括で取得したい場合にも、『Select-Object *』を併用した以下コマンドを実行することで、情報を取得できます。
1 | (Get-ItemProperty "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE").VersionInfo | Select-Object * |
以上、参考になさってくださーい!