tech.guitarrapc.cóm

Technical updates

PowerShellのGet-Date -Formatで出力される標準の書式指定結果一覧

Get-Date -F (あるいは-Format) では、カスタム書式指定文字列を一々書かなくても、標準書式指定文字列で簡単に出力書式を指定できます。 好きにやればいいんですが、知っておくと便利 & 良くログ出力に日時を付ける際に使うので簡単に調べてみました。

書式指定方法

Get-Dateコマンドレットの日付と時刻の値のテキスト表現を指定するには、以下のようにします。
Get-Date -Format "指定書式"
#-ForamtにAliasを使うと
Get-Date -F "指定書式"

標準の書式指定は?

みんなの味方、MSDNに記載されています。
標準の日付と時刻の書式指定文字列
カスタムの日付と時刻の書式指定文字列

標準の書式指定一覧を見比べたい

検討するにあたり、まとめて見比べたいですね。 以下のワンライナーで取得できます。
@("d","D","f","F","g","G","M","O","R","s","t","T","u","U","Y") | %{$date=Get-Date -F $_ ;"$_, $date"}
Windows8 x64 / PowerShell V3.0環境での各標準書式の出力一覧を示しておきます。
 d, 2013/01/23
D, 2013年1月23日
f, 2013年1月23日 21:10
F, 2013年1月23日 21:10:21
g, 2013/01/23 21:10
G, 2013/01/23 21:10:21
M, 1月23日
O, 2013-01-23T21:10:21.2531449+09:00
R, Wed, 23 Jan 2013 21:10:21 GMT
s, 2013-01-23T21:10:21
t, 21:10
T, 21:10:21
u, 2013-01-23 21:10:21Z
U, 2013年1月23日 12:10:21
Y, 2013年1月

参考程度に

私は、ちょっと、海外とのやり取りもあるので、Oでの出力をカスタムしたものを使っています。 ただ、"-"や":"など不要な要素は省いています。 よって、以下となります。
(Get-Date –F O).Replace('-','').Replace('T','_').Replace(':','').Replace(’+','_GMT+')
結果は以下です。
20130123_211416.5088732_GMT+0900
人によっては、.SubStringで抜き出すのもありですね。