プロファイルとは
PowerShell は起動時に $PROFILE
のパスに格納されたプロファイルファイルを読み込むようになっています。
このファイルで関数の定義や初期化処理を行うことで、PowerShell を便利に使えるようになります。
$PROFILE
には次のようなパスが格納されています。
PS C:\> $profile
C:\Users\maku\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
プロファイルの作成
デフォルトでは $PROFILE
が示すファイルは存在しない可能性があるので、New-Item
コマンドレットなどを使って、エディタで開く前にファイルを生成しておく必要があります。
このファイルを作成したあとに新しく PowerShell を開こうとすると、実行ポリシー 関連のセキュリティエラーが発生します。
これは、デフォルトで ps1
ファイルの実行が許可されていないからです。
現在の実行ポリシーの一覧は、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-gitwork
や u
)を定義する例です。
ついでに PowerShell の起動時にその関数を呼び出して、ディレクトリを移動しています。
よく使う作業ディレクトリに自動的に移動するようにしておくと便利です(Windows ターミナルの設定でも初期ディレクトリは設定できますが)。
独自コマンドの定義方法としては、Set-Alias
コマンドレットによるエイリアス定義もありますが、Set-Alias
は柔軟なパラメーター設定ができないので、Function
を使って関数として定義するのがよいです。
他のスクリプトを読み込む
複数の PC で設定を共有したいときは、Dropbox などに共通スクリプトを置いておいて、.
で読み込むようにします。
各 PC のプロファイル ($profile
) には、次のような 1 行だけを記述しておきます。