Step20代会社員。人生を一歩ずつ、歩いています。Windows10-PowerShellWindows7から標準搭載されているPowerShellは、スクリプト言語でありながら、一般的なデータ構造や標準で便利なコマンドが用意されていたりと、いろんなことができるのが魅力なツールです。なによりも、実行環境が標準搭載されているというのが便利ですね。PowerShellスクリプトを開発・実行する環境を用意しなくても、WindowsOSを使っていれば誰でもすぐに利用可能という手軽さです。PowerShell自体は独立したソフトウェアなので、Macにもインストールできます。今回はなぜかググってもあまり見当たらない、日付と時刻をログ出力する方法について説明してみます。基本的には、Start-transcriptを使おう情報が多すぎるときは、自前でログ出力するWrite-Outputでは変数の展開で改行されてしまう改行させない日付と時刻は(Get-Date).toString()で出力すればいい基本的には、Start-transcriptを使おうログ出力内容に特にこだわりがなければ、ひとまずStart-transcriptを使っておけば間違いないでしょう。このコマンドレットを使うと、コンソールに出力される内容が全て記録されます。今回はStart-transcriptの解説がメインではないので、詳細は割愛します。ログ出力したければStart-transcriptを使う、これで終了かと思うじゃないですか。ところがどっこい、このコマンドレットはいかんせん「情報が多すぎる」うえに、「整形されていない」のです。ログ出力の際は情報が少なすぎると何もわからないので、基本的には多すぎたほうがまだマシなのですが、ちょっとしたスクリプトを書く際にがっつりログ出力されてしまうと見にくいことこの上ないのです。情報が多すぎるときは、自前でログ出力するではどうするかというと、Write-Outputでログ出力内容をコントロールするのです。これなら、ログ出力したい内容を続けて書くだけで、その内容が指定したログファイルに出力されます。ログファイルで重要な「日付と時刻」の出力にはちょっと工夫が必要です。Write-Outputでは変数の展開で改行されてしまう実際に試してみるとわかりますが、Write-Outputコマンドレットは変数を出力したタイミングで改行されてしまいます。Write-Hostではそんなことはないので、なかなか気づきにくいですが。以下のコードでは、変数str1とstr2の間で改行が挟まれます。されちゃうなあこれを回避するには、Write-Outputでの出力内容をまるっとダブルクォートにしてしまって、文字列として扱います。されちゃうなあ文字列中で変数を展開するには、PowerShellでは変数を${}でくくるか、$()でくくります。$()でくくった場合は、()内部の式を評価した結果が展開されます。改行させない日付と時刻は(Get-Date).toString()で出力すればいいこれを応用すると、ログ出力内容の先頭に日付と時刻を出力して、かつ改行させないという方法が実現できます。具体的にはこんな感じで書きます。FrameworkのSystem.DateTimeオブジェクトです)、toStringはその文字列表現です。シングルクォートで囲って書式を指定しています。ここはダブルクォートで囲っても良いのですが、先頭のダブルクォートが閉じられていると誤解しやすいので、シングルクォートとしています。Get-Dateを()でくくっているのは、Get-DateオブジェクトをtoStringで文字列表現化した結果を表示したいからです。文字列中の変数展開についてはこちらの記事がわかりやすいので、合わせてどうぞ。PowerShellの文字列内で変数を扱う方法ではでは。はてなブログPro1991年生、製造業勤務の会社員ブロガー。資産運用系の記事や、体験してきたことを中心に記事書いてます。確定申告2019-02-04マネーフォワードで振替がうまく登録されない時の対処法お金のこと月別アーカイブお問いあわせお問い合わせはこちらのフォームからどうぞ。プライバシーポリシーと免責事項プライバシーポリシーおよび、免責事項についてはこちらをご参照ください。tempo96blogスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。