LoginSignup
0
2

More than 3 years have passed since last update.

PowerShell起動時に毎回同じ設定を読み込む設定(プロファイルの設定)

Last updated at Posted at 2020-12-13

この記事は?

  • powershellでログを自動で取りたい
  • 毎回同じエイリアス、関数、および変数を使いたい
  • プロンプトを改造したい

上記を叶えるためには、PowerShellプロファイルを作成することで解決できます。

前提

環境

  • Windows PowerShell 5.1
  • PowerShell 7.0.3

プロファイルとは

Powershellが起動した際に読み込む定義ファイルです。
プロファイルは4つ定義できます。下記表の上から順に実行されます。

No プロファイルのパス
1 %windir%\system32\WindowsPowerShell\v1.0\profile.ps1 すべてのユーザーおよびすべてのシェルに適用
2 %windir%\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1 すべてのユーザーに適用されますが、Microsoft.PowerShell シェルのみに適用
3 %UserProfile%\My Documents\WindowsPowerShell\profile.ps1 現在のユーザーのみに適用され、すべてのシェルに適用
4 %UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 現在のユーザーと Microsoft.PowerShell シェルのみに適用

プロファイルの作成と編集

プロファイルのパスは下記で確認できます。
なおデフォルトでは「プロファイルとは」の表のNo4の場所が設定されています。

$profile

プロファイルはデフォルトでありません。作成されているかどうかは下記コマンドで確認できます。
「True」なら作成済み、「False」なら未作成です。

test-path $profile

プロファイルを作成する場合下記コマンドで作成できます。
なお「プロファイルとは」の表のNo4以外のプロファイルを作成する場合、「\$profile」の部分を「\$env:[プロファイルのパス]」に置き換えましょう。

# 「プロファイルとは」の表のNo4
new-item -path $profile -itemtype file -force
# 「プロファイルとは」の表のNo3
new-item -path $env:UserProfile\My Documents\WindowsPowerShell\profile.ps1 -itemtype file -force

プロファイルができたら、編集しましょう。

#メモ帳で開く
notepad $profile
#VisualStadio Codeで開く
code $profile

Tips : profileファイルはBOM付きUTF-8で編集するとエラーに悩まされなくて良きです。

プロファイル

結論

私は下記のプロファイルを利用している

profile.ps1
# ウィンドウタイトル
(Get-Host).UI.RawUI.WindowTitle = "WindowsPowerShell ( ᐢ˙꒳​˙ᐢ )" + $pwd

# 日付
$Date = Get-Date -UFormat "%Y/%m/%d %H:%M:%S"
# 実行権限
$ExecutionPolicy = Get-ExecutionPolicy
# ログディレクトリ
$Logdir = join-path ([Environment]::GetFolderPath("MyDocuments")) "\WindowsPowerShell\logs"
# ログファイル
$FileName = (Get-Date).ToString("yyyyMMdd_HHmmss") + ".log"
$Logfiledir = join-path $logdir $filename


# ログ取得
if ( Test-Path $logdir ) {
    Start-Transcript $logfiledir -append | Out-Null
} else {
    Write-Host ("No Such Directory : " + $logdir)
}

# 現在のプロパティ
Write-Host "Date           : " $Date
Write-Host "Your Policy    : " $ExecutionPolicy
Write-Host "Logs Directory : " $Logdir
Write-Host "Profile        :  Current Users, All Shell"
Get-ChildItem

# プロンプト
function Prompt {
    if ($?) {
        (Get-Host).UI.RawUI.WindowTitle = "WindowsPowerShell ( ᐢ˙꒳​˙ᐢ ):" + $pwd
        Write-Host "(*'-')" -NoNewLine -ForegroundColor "Green"
        return ">"
    } else {
        (Get-Host).UI.RawUI.WindowTitle = "WindowsPowerShell ( ᐢ˙꒳​˙ᐢ ):" + $pwd
        Write-Host "(*;-;)" -NoNewLine -ForegroundColor "Red"
        return ">"
    }
}


解説

  • ログ取得
  • 起動時に現在のプロパティを表示
  • ウィンドウタイトルとプロンプトを可愛く

参考

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2