そもそもPowerShellのプロファイルとは
PowerShellやWindows PowerShell(以下、PowerShellと総称)で、いつも同じオブジェクトを使うことがある。こうしたとき、Profile(プロファイル)と呼ばれる機能を使うことで、起動時に変数や関数などを登録できる。
Profileは、テキスト形式のスクリプトファイルであり、起動時に読み込まれて、その内容に従って、変数や関数、エイリアスなどの定義をする。
プロファイルには、ユーザー、ホストにより4種類の組み合わせがある。
ユーザーの種別は、すべてのユーザー用と現在のユーザー用の2つがある。またホストは、すべてのホスト用と現在のホスト用の2つがある。ホストの種別は、リモートシェル操作をするときに利用される。ローカルホストでは「すべてのホスト」と「現在のホスト」用が順に適用される。
リモートシェルの場合には、リモート側ホストにある「現在のホスト」用のプロファイルが使われる。まずは「すべて」のユーザー、「すべて」のホストのプロファイルが適用され、表の上から下の順に適用されていく。
企業などの組織内での利用では、これらを使い分ける必要があるが、個人利用では、「現在」のユーザー用、「現在」のホスト用だけを使えばよい。プロファイルのパスは、変数$PROFILEに登録されている。これは、PSCustomObjectであり、以下の表のような方法ですべてのプロファイルのパスを取得できる。
このとき、現在のユーザー、現在のホストの場合だけ、プロパティ名を省略して「$PROFILE」とすることができる。このため、このプロファイルを編集するような場合、
notepad.exe $PROFILE
などと指定することが可能だ。なお、プロファイルは標準状態ではファイルが作られていない。もしプロファイル内で日本語を使う場合、日本語版Windows上のWindows PowerShellではシフトJIS、PowerShellではUTF-8エンコードにする必要がある。日本語がコメントだけであれば、どちらもUTF-8エンコードでかまわないが、PowerShellの文字列として扱う場合には、ファイルのエンコードに注意する必要がある。
正しいパスにプロファイル(のファイル)が作成されると、PowerShellは起動時にこれを読み込む。ただし、「-noprofile」オプションが指定されているとプロファイルの読み込みはされない。
プロファイルから実行されるコマンドは、通常のスクリプトコマンドと違い、PowerShell自体の状態を変更する。このため、プロファイルを再読込したいときには、ピリオド1文字の「ドットソーシング演算子」(Dot Sourcing operator)を使い、以下のように実行する。
. $PROFILE
先頭にあるピリオドと「$PROFILE」の間にはスペースが必要である。これは、Unixのシェルにあるsourceコマンドが由来である。かつては、このコマンドは、ピリオド1文字のshの組み込みコマンドだった。WSLなどで使われているbashでは、sourceという別名がある。
PowerShellでは、スクリプトファイルは、子プロセスで実行されるため、実行が終了すると、実行環境に対する変更がすべて破棄されてしまう。しかし、ドットソーシング演算子を使うと、スクリプトファイルは、子プロセスではなく現在のプロセス内で実行される。これにより、変数やエイリアス、カレントディレクトリなどのコマンドの効果がスクリプトの終了後にも残った状態となる。
この連載の記事
-
第429回
PC
Windows Updateの「利用可能になったらすぐに最新の更新プログラムを入手する」はオンにした方がいいか? -
第428回
PC
Google/Bingで使える検索オプション -
第426回
PC
WindowsでAndroidスマホをWebカメラにする機能を試した -
第425回
PC
無料で使えるExcelにWord、Microsoft 365のウェブ版を調べた -
第424回
PC
Windowsの基本機能であるクリップボードについてあらためて整理 -
第423回
PC
PowerShellの今を見る 2つあるPowerShellはどっち使えばいい? -
第422回
PC
Windows 11の目玉機能が早くも終了、Windows Subsystem for Android(WSA)を振り返る -
第421回
PC
進化しているPowerToys LANで接続したマシンでキーボード/マウス共有機能などが追加 -
第420回
PC
Windowsプレビュー版に搭載されたsudoを試す -
第419回
PC
Windows Insider Previewが変わって、今秋登場のWindows 11 Ver.24H2の新機能が見えてきた? - この連載の一覧へ