プロファイルとは
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-gitwork
や u
)を定義する例です。
ついでに PowerShell の起動時にその関数を呼び出して、ディレクトリを移動しています。
よく使う作業ディレクトリに自動的に移動するようにしておくと便利です(Windows ターミナルの設定でも初期ディレクトリは設定できますが)。
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 行だけを記述しておきます。
. D:\Dropbox\share\config\powershell\profile.ps1