このページの本文へ

前へ 1 2 次へ

Windows Info 第427回

WindowsのPowerShellのプロファイルを設定する

2024年04月14日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

そもそもPowerShellのプロファイルとは

 PowerShellやWindows PowerShell(以下、PowerShellと総称)で、いつも同じオブジェクトを使うことがある。こうしたとき、Profile(プロファイル)と呼ばれる機能を使うことで、起動時に変数や関数などを登録できる。

 Profileは、テキスト形式のスクリプトファイルであり、起動時に読み込まれて、その内容に従って、変数や関数、エイリアスなどの定義をする。

 プロファイルには、ユーザー、ホストにより4種類の組み合わせがある。

PowerShell

 ユーザーの種別は、すべてのユーザー用と現在のユーザー用の2つがある。またホストは、すべてのホスト用と現在のホスト用の2つがある。ホストの種別は、リモートシェル操作をするときに利用される。ローカルホストでは「すべてのホスト」と「現在のホスト」用が順に適用される。

 リモートシェルの場合には、リモート側ホストにある「現在のホスト」用のプロファイルが使われる。まずは「すべて」のユーザー、「すべて」のホストのプロファイルが適用され、表の上から下の順に適用されていく。

 企業などの組織内での利用では、これらを使い分ける必要があるが、個人利用では、「現在」のユーザー用、「現在」のホスト用だけを使えばよい。プロファイルのパスは、変数$PROFILEに登録されている。これは、PSCustomObjectであり、以下の表のような方法ですべてのプロファイルのパスを取得できる。

PowerShell

 このとき、現在のユーザー、現在のホストの場合だけ、プロパティ名を省略して「$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では、スクリプトファイルは、子プロセスで実行されるため、実行が終了すると、実行環境に対する変更がすべて破棄されてしまう。しかし、ドットソーシング演算子を使うと、スクリプトファイルは、子プロセスではなく現在のプロセス内で実行される。これにより、変数やエイリアス、カレントディレクトリなどのコマンドの効果がスクリプトの終了後にも残った状態となる。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン