====<Microsoft.PowerShell_profile.ps1>====
# 誕生日だけ表示が変わるプロンプト
# 誕生日をMMdd形式で定義
$birthday = "0307"
# 誕生日メッセージ。$env変数を使って環境変数のユーザー名(username)を表示
$message = "Happy Birthday $env:username!!"
# Prompt関数を作る
function prompt() {
# 今日が誕生日かどうか判定
if ((Get-Date).ToString("MMdd") -eq $birthday){
# Get-Dateの結果が$birthdayと一致したら$messageの内容をいい感じにカラフルに表示
foreach ($s in $message.ToCharArray()){
(Write-Host $s -ForegroundColor (Get-Random -Maximum 15 -Minimum 10) -NoNewLine)
}
#後続のプロンプト
" $(Get-Location)$('>' * ($nestedPromptLevel + 1)) "
}else{
# Get-Dateの結果が$birthdayと一致しなかったらデフォルトの表示
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}
}
====<Microsoft.PowerShell_profile.ps1>====
このファイルを$PROFILEの場所に置いてPowerShellを起動するとこうなります。
...PowerShellはデフォルト状態だとps1ファイルの実行が許可されていないので、
起動時に実行ポリシーを変更するようショートカットに細工しましょう。
赤枠を追記します。
実行日が$birthdayで定義した日付でない場合はいつも通りです。
誕生日でなくても、何かしらの記念日に起動したらこのような表示がされるサプライズを気になるあの人のPowerShellに仕込んでおけばモテるかもしれません。
##ふざけすぎたので一応ちょっとだけ真面目な使い方
たとえば、実業務ではコマンドの実行結果をエビデンスとして残す場面があるかと思いますがその際にプロンプトに現在時刻を表示するようにしておけば、実行時間を含めた記録を取ることが出来ます
他にも、[hostname.exe]や[whoami.exe]の結果を表示させるようにしておけば、ホスト名やユーザー名も別で記録しておく必要がなくなります。
例:
====<Microsoft.PowerShell_profile.ps1>====
function prompt() {
$now = (Get-Date).ToString("yyyy/MM/dd HH:mm:ss")
"[$now][$(hostname.exe)][$(whoami.exe)] $(Get-Location)$('>' * ($nestedPromptLevel + 1)) "
}
====<Microsoft.PowerShell_profile.ps1>====
このプロファイルを読み込ませるとこうなります。
ここまでやるとさすがに情報過多ですが、プロンプトをカスタマイズすることでちょっとだけ作業が楽になるかもしれません。お試しあれ。
※ Get-Dateを仕込んだ場合の時刻はコマンド実行時刻ではなくプロンプト表示時刻なので注意!