最終回となる今回は、PowerShellを使う上で頻繁にお世話になる便利なコマンドをまとめて紹介しよう

ファイルの日付や時刻を取り出す

 ファイルの命名や日時の計算などで利用頻度が高いのが、日付や時刻を取得する「Get-Date」だ。そのままでは「2017年7月24日 18:13:50」と出力されるので、ファイル名に使いたい場合は次のように入力する(図1)。日付だけにしたい場合は、FileDateTimeの代わりにFileDateを使う。

Get-Date -Format FileDateTime 
図1●日付や時刻を取得する「Get-Date」コマンド
図1●日付や時刻を取得する「Get-Date」コマンド
-Formatオプションを使えば、ファイル名として使えるような書式で出力できる。
[画像のクリックで拡大表示]

 「AddDays」という演算用メソッドを使えば日時演算も可能だ。例えば、取り出した日時に「3日と5時間4分」を加える場合は「(get-date).AddMonths(3).AddDays(5).AddHours(4)」を実行する。もし引き算したい場合には、数字の部分にマイナスを指定すればよい。Get-Dateが持つ演算用メソッドは次のコマンドを実行すれば確認できる(図2)。

Get-Date | Get-Member
図2●Get-Dateが持つ演算用メソッド
図2●Get-Dateが持つ演算用メソッド
これらを使えば、日時に日/時間/分/秒などを加えたり引いたりして出力できる。
[画像のクリックで拡大表示]

処理を一定の時間停止させる

 スクリプトをループさせる場合、処理を一定時間停止させたいときがある。例えば「while(-1){Get-Date}」を実行すると、処理時間の短いGet-Dateを瞬時に繰り返して、画面が同じ日時で埋め尽くされてしまう。一方、次のように「Start-Sleep」を指定すれば一定の時間、停止しながら処理が進んでいく(図3)。

while(-1){Get-Date; Start-Sleep -Seconds 1}
図3●処理を一定時間停止する「Start-Sleep」コマンド
図3●処理を一定時間停止する「Start-Sleep」コマンド
途中で指定した時間だけ待ってから処理を再開する。この画面では「-Seconds 1」オプションで1秒間待つように指示している。
[画像のクリックで拡大表示]
▼紹介しよう
紹介できなかった便利なコマンドに「Tee-Object」がある。通常は、結果をファイルに出力した場合、コンソール画面では確認できないが、Tee-Objectを使うと可能だ。例えば、ファイルの一覧を画面出力すると同時に、ファイルにも保存したい場合は「Get-ChildItem -File | Tee-Object C:\tmp\log.txt」と入力する。