PowerShell の $profile を読み込む方法と ゲストログインで .ps1 ファイルを読み込む方法
PowerShell の勉強を始めて、
ファンクションの作成だったり、Oh-My-Posh などで PowerShell をいい感じにしたいなって時、
profile 作成がまず初めの一歩ですよね。
便利なファンクションを記述したprofileを github や USBメモリなどに入れておけば、
どの Computer でも、 "強くてニューゲーム" のように、CLIでの作業がかなり楽になります。
もちろん筆者もvimrc などと一緒に保管してありますが、
時間をかけて少しずつ育てているので、ペットみたいに可愛く思えてきました。
以前から PowerShell のファンクション作成日記を数件書いているのですが、そもそものプロファイル作成方法については触れておらず、
記事を見て???となった人がいるかも知れないので投稿しておきます。
profile の作成
1. 通常の方法
まずここからですが、プロファイルがあるかどうかを検索します。
$profile
# 結果(ある場合はPATHが表示されます)
C:\Users\ユーザー名\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
ここでプロファイルが無かった場合は、
一旦PowerShellを閉じて管理者として実行でPowerShellを開き、次のコマンドを実行します。(念のため存在するか確認しています)
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
プロファイルが作成されました。
これを開くには、
ii $profile
# VScode や vim などで開く場合
code $profile
vim $profile
これで profile が開くので、
プロファイル上に好きな設定やファンクションを作って保存しておくと、
PowerShellを開いた時、ファイルに記述した内容を読み込む事が出来る様になります。
追加で必要な設定は、以下です。
① 実行ポリシーの変更
# 実行ポリシー RemoteSigned(ローカル作成されたスクリプトは実行可能)に変更
Set-ExecutionPolicy RemoteSigned -Force
# 現在の実行ポリシーを確認
Get-ExecutionPolicy
# 結果
RemoteSigned
② PowerShell 起動時の設定
設定 → スタートアップ → ターミナルの起動時 → 既定のプロファイルでタブを開く に変更 → 保存 でOKです。
では、試しに超簡単な(でも使う) function を作ってみます。
function desk{
Set-Location C:\Users\ユーザー名\Desktop\
# ユーザー名 は個々のユーザー名
}
保存して再読み込みします。
. $profile
desk
と入力すると、どのフォルダからでもデスクトップに移動出来る様になりました。
便利だ!と感じた人は、下の記事みたいなファンクションが作りたくなってくると思います。
2. 管理者権限の無いユーザーの場合
この様な場合は PowerShell 起動時にプロファイルの読み込む事は出来ませんが、
起動後にコマンドで読み込む事は出来ます。
ログインユーザーのみの一時設定なので、
PowerShell を起動する度に毎回コマンドの入力が必要になるのですが、
ファンクションを使用すると作業効率が上がるのでやる価値は大いにあります。
では方法、
プロファイルは通常のものではなく、別の ps1 ファイルを作成します。
(拡張子が .ps1
であればファイル名は何でもいいです)
# 例えばユーザーフォルダ(C:\Users\ユーザー名\)に作成
cd C:\Users\ユーザー名\
notepad func.ps1
開いたファイルを、エンコード:UTF-8(BOM付き)
で保存します。
これで、PowerShellで読み込めるスクリプトファイルが作成出来ました。
あとはファイルにファンクションなどを記述して読み込みなのですが、
PowerShell 起動時に読み込めないので、コマンドで読み込みます。
ここが毎回必要なターンです。
面倒とは言いましたが、実はたったの2行です。
# 実行ポリシーを一時的に RemoteSigned へ変更する
Set-ExecutionPolicy RemoteSigned -Scope Process
# ps1 ファイルを読み込む
# . + スペース + ファイルパス
. C:\Users\ユーザー名\func.ps1
これで、プロファイルが使用出来る様になりましたね。
良いPowerShellライフを。
