まくろぐ
更新: / 作成:

プロファイルとは

PowerShell は起動時に $PROFILE のパスに格納されたプロファイルファイルを読み込むようになっています。 このファイルで関数の定義や初期化処理を行うことで、PowerShell を便利に使えるようになります。 $PROFILE には次のようなパスが格納されています。

PS C:\> $profile
C:\Users\maku\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

プロファイルの作成

デフォルトでは $PROFILE が示すファイルは存在しない可能性があるので、New-Item コマンドレットなどを使って、エディタで開く前にファイルを生成しておく必要があります。

プロファイルを作成してエディタで開く
New-Item -Path $profile -ItemType file -Force
notepad $profile

このファイルを作成したあとに新しく PowerShell を開こうとすると、実行ポリシー 関連のセキュリティエラーが発生します。 これは、デフォルトで ps1 ファイルの実行が許可されていないからです。

セキュリティエラー
. : ファイル C:\Users\maku\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 を読み込めません。
ファイル C:\Users\maku\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 はデジタル署名されていません。
このスクリプトは現在のシステムでは実行できません。
スクリプトの実行および実行ポリシーの設定の詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。

現在の実行ポリシーの一覧は、Get-ExecutionPolicy コマンドレットで確認できます。

PS C:\> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       AllSigned

カレントユーザーによるスクリプトの実行を許可するには、次のように Set-ExecutionPolicy コマンドレットを実行します。

PS C:\> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

ここで指定している RemoteSigned ポリシーは、「インターネット上の署名されたスクリプト」および「ローカルコンピューター上のスクリプト」の実行を許可するポリシーです。

プロファイルの設定例

ディレクトリ移動用のコマンドを定義

下記は、ディレクトリ移動のための関数(cd-gitworku)を定義する例です。 ついでに PowerShell の起動時にその関数を呼び出して、ディレクトリを移動しています。 よく使う作業ディレクトリに自動的に移動するようにしておくと便利です(Windows ターミナルの設定でも初期ディレクトリは設定できますが)。

Microsoft.PowerShell_profile.ps1
Function cd-gitwork {
  cd D:\y\gitwork  # Set-Location -Path D:\y\gitwork でも OK
}
Function u { cd ..  }
Function uu { cd ..\..  }
Function uuu { cd ..\..\..  }

# PowerShell 起動時にディレクトリを移動
cd-gitwork

独自コマンドの定義方法としては、Set-Alias コマンドレットによるエイリアス定義もありますが、Set-Alias は柔軟なパラメーター設定ができないので、Function を使って関数として定義するのがよいです。

他のスクリプトを読み込む

複数の PC で設定を共有したいときは、Dropbox などに共通スクリプトを置いておいて、. で読み込むようにします。 各 PC のプロファイル ($profile) には、次のような 1 行だけを記述しておきます。

Microsoft.PowerShell_profile.ps1
. D:\Dropbox\share\config\powershell\profile.ps1

関連記事

まくろぐ
サイトマップまくへのメッセージ