about_Profiles
簡単な説明
PowerShell プロファイルを作成して使用する方法について説明します。
詳細な説明
PowerShell プロファイルを作成して環境をカスタマイズし、開始するすべての PowerShell セッションにセッション固有の要素を追加できます。
PowerShell プロファイルは、PowerShell の開始時に実行されるスクリプトです。 プロファイルをスタートアップ スクリプトとして使用して、環境をカスタマイズできます。 コマンド、エイリアス、関数、変数、モジュール、PowerShell ドライブなどを追加できます。 他のセッション固有の要素をプロファイルに追加して、インポートや再作成を行わずにすべてのセッションで使用できるようにすることもできます。
PowerShell では、ユーザーとホスト プログラムに対して複数のプロファイルがサポートされています。 ただし、プロファイルは作成されません。
プロファイルの種類と場所
PowerShell では、ユーザーと PowerShell ホストを対象とする複数のプロファイル ファイルがサポートされています。 これらのプロファイルの一部またはすべてをコンピューター上に置くことができます。
PowerShell コンソールでは、次の基本的なプロファイル ファイルがサポートされています。 これらのファイル パスは既定の場所です。
- すべてのユーザー、すべてのホスト
- Windows -
$PSHOME\Profile.ps1
- Linux -
/opt/microsoft/powershell/7/profile.ps1
- macOS -
/usr/local/microsoft/powershell/7/profile.ps1
- Windows -
- すべてのユーザー、現在のホスト
- Windows -
$PSHOME\Microsoft.PowerShell_profile.ps1
- Linux -
/opt/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
- macOS -
/usr/local/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
- Windows -
- 現在のユーザー、すべてのホスト
- Windows -
$HOME\Documents\PowerShell\Profile.ps1
- Linux -
~/.config/powershell/profile.ps1
- macOS -
~/.config/powershell/profile.ps1
- Windows -
- 現在のユーザー、現在のホスト
- Windows -
$HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
- Linux -
~/.config/powershell/Microsoft.PowerShell_profile.ps1
- macOS -
~/.config/powershell/Microsoft.PowerShell_profile.ps1
- Windows -
プロファイル スクリプトは、一覧の順序で実行されます。 つまり、 AllUsersAllHosts プロファイルで行われた変更は、他のプロファイル スクリプトによってオーバーライドできます。 CurrentUserCurrentHost プロファイルは常に最後に実行されます。 PowerShell ヘルプでは、 CurrentUserCurrentHost プロファイルは、最も頻繁に PowerShell プロファイル と呼ばれるプロファイルです。
PowerShell をホストする他のプログラムは、独自のプロファイルをサポートできます。 たとえば、Visual Studio Code (VS Code) では、次のホスト固有のプロファイルがサポートされています。
- すべてのユーザー、現在のホスト -
$PSHOME\Microsoft.VSCode_profile.ps1
- 現在のユーザー、現在のホスト -
$HOME\Documents\PowerShell\Microsoft.VSCode_profile.ps1
プロファイル パスには、次の変数が含まれます。
$PSHOME
変数には、PowerShell のインストール ディレクトリが格納されます$HOME
変数には、現在のユーザーのホーム ディレクトリが格納されます。
Note
Windows では、フォルダーのリダイレクトまたは OneDrive によって、 Documents
フォルダーの場所を変更できます。 Documents
フォルダーをネットワーク共有にリダイレクトしたり、OneDrive に含めたりすることはお勧めしません。 フォルダーをリダイレクトすると、モジュールが読み込みに失敗し、プロファイル スクリプトにエラーが作成される可能性があります。
OneDrive 管理から Documents
フォルダーを削除する方法については、 OneDrive のドキュメントを参照してください。
$PROFILE 変数
$PROFILE
自動変数には、現在のセッションで使用できる PowerShell プロファイルへのパスが格納されます。
プロファイル パスを表示するには、 $PROFILE
変数の値を表示します。 コマンドで $PROFILE
変数を使用してパスを表すこともできます。
$PROFILE
変数には、"現在のユーザー、現在のホスト" プロファイルへのパスが格納されます。 その他のプロファイルは、 $PROFILE
変数のノート プロパティに保存されます。
たとえば、 $PROFILE
変数は、Windows PowerShell コンソールで次の値を持ちます。
- 現在のユーザー、現在のホスト -
$PROFILE
- 現在のユーザー、現在のホスト -
$PROFILE.CurrentUserCurrentHost
- 現在のユーザー、すべてのホスト -
$PROFILE.CurrentUserAllHosts
- すべてのユーザー、現在のホスト -
$PROFILE.AllUsersCurrentHost
- すべてのユーザー、すべてのホスト -
$PROFILE.AllUsersAllHosts
$PROFILE
変数の値はユーザーごとおよびホスト アプリケーションごとに変わるので、使用する各 PowerShell ホスト アプリケーションでプロファイル変数の値を必ず表示してください。
$PROFILE
変数の現在の値を表示するには、次のように入力します。
$PROFILE | Select-Object *
$PROFILE
変数は、多くのコマンドで使用できます。 たとえば、次のコマンドを実行すると、メモ帳で "現在のユーザー、現在のホスト" プロファイルが開きます。
notepad $PROFILE
次のコマンドは、"すべてのユーザー、すべてのホスト" プロファイルがローカル コンピューターに作成されているかどうかを判断します。
Test-Path -Path $PROFILE.AllUsersAllHosts
プロファイルを作成する方法
PowerShell プロファイルを作成するには、次のコマンド形式を使用します。
if (!(Test-Path -Path <profile-name>)) {
New-Item -ItemType File -Path <profile-name> -Force
}
たとえば、現在の PowerShell ホスト アプリケーションで現在のユーザーのプロファイルを作成するには、次のコマンドを使用します。
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
このコマンドでは、 if
ステートメントを使用すると、既存のプロファイルを上書きできなくなります。 $PROFILE
変数の値を、作成するプロファイル ファイルへのパスに置き換えます。
Note
Windows Vista 以降のバージョンの Windows で "すべてのユーザー" プロファイルを作成するには、 管理者として実行 オプションを使用して PowerShell を起動します。
プロファイルを編集する方法
メモ帳などのテキスト エディターで任意の PowerShell プロファイルを開くことができます。
現在の PowerShell ホスト アプリケーションで現在のユーザーのプロファイルをメモ帳で開くには、次のように入力します。
notepad $PROFILE
他のプロファイルを開くには、プロファイル名を指定します。 たとえば、すべてのホスト アプリケーションのすべてのユーザーのプロファイルを開くには、次のように入力します。
notepad $PROFILE.AllUsersAllHosts
変更を適用するには、プロファイル ファイルを保存し、PowerShell を再起動します。
プロファイルを選択する方法
複数のホスト アプリケーションを使用する場合は、すべてのホスト アプリケーションで使用する項目を $PROFILE.CurrentUserAllHosts
プロファイルに配置します。 ホスト アプリケーションに固有の項目 (ホスト アプリケーションの背景色を設定するコマンドなど) を、そのホスト アプリケーションに固有のプロファイルに配置します。
多くのユーザー向けに PowerShell をカスタマイズしている管理者の場合は、次のガイドラインに従ってください。
$PROFILE.AllUsersAllHosts
プロファイルに共通項目を格納する- ホスト アプリケーションに固有のアイテムを、ホスト アプリケーションに固有の
$PROFILE.AllUsersCurrentHost
プロファイルに格納する - 特定のユーザーのアイテムをユーザー固有のプロファイルに格納する
PowerShell プロファイルの特別な実装については、必ずホスト アプリケーションのドキュメントを確認してください。
プロファイルの使用方法
PowerShell で作成する項目の多くと、実行するほとんどのコマンドは、現在のセッションにのみ影響します。 セッションを終了すると、項目が削除されます。
セッション固有のコマンドと項目には、セッションに追加する PowerShell 変数、環境変数、エイリアス、関数、コマンド、PowerShell モジュールが含まれます。
これらの項目を保存し、今後のすべてのセッションで使用できるようにするには、それらを PowerShell プロファイルに追加します。
プロファイルのもう 1 つの一般的な用途は、頻繁に使用される関数、エイリアス、変数を保存することです。 プロファイルにアイテムを保存する場合は、それらを再作成することなく、該当するセッションでアイテムを使用できます。
プロファイルを開始する方法
プロファイル ファイルを開くと、空白になります。 ただし、頻繁に使用する変数、エイリアス、およびコマンドを入力できます。
開始するためのいくつかの提案を次に示します。
コマンドレットのエイリアスを一覧表示する関数を追加する
function Get-CmdletAlias ($cmdletname) {
Get-Alias |
Where-Object -FilterScript {$_.Definition -like "$cmdletname"} |
Format-Table -Property Definition, Name -AutoSize
}
本体をカスタマイズする
function CustomizeConsole {
$hosttime = (Get-ChildItem -Path $PSHOME\pwsh.exe).CreationTime
$hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
$Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)"
Clear-Host
}
CustomizeConsole
カスタマイズされた PowerShell プロンプトを追加する
function Prompt {
$env:COMPUTERNAME + "\" + (Get-Location) + "> "
}
PowerShell プロンプトの詳細については、「 about_Prompts」を参照してください。
その他のプロファイルの例については、「 シェル環境のカスタマイズ」を参照してください。
NoProfile パラメーター
プロファイルなしで PowerShell を起動するには、PowerShell を起動するプログラムである pwsh.exe
の NoProfile パラメーターを使用します。
開始するには、Cmd.exeや PowerShell 自体など、PowerShell を起動できるプログラムを開きます。 Windows の [実行] ダイアログ ボックスを使用することもできます。
型:
pwsh -NoProfile
pwsh.exe
のパラメーターの完全な一覧については、次のように入力します。
pwsh -?
プロファイルと実行ポリシー
PowerShell 実行ポリシーは、スクリプトを実行してプロファイルを含む構成ファイルを読み込むことができるかどうかを部分的に決定します。 Restricted実行ポリシーが既定値です。 プロファイルを含め、すべてのスクリプトが実行されないようにします。 "制限付き" ポリシーを使用する場合、プロファイルは実行されず、その内容は適用されません。
Set-ExecutionPolicy
コマンドは、実行ポリシーを設定および変更します。 これは、値がレジストリに保存されるため、すべての PowerShell セッションに適用される数少ないコマンドの 1 つです。 本体を開くときに設定する必要はありません。また、 Set-ExecutionPolicy
コマンドをプロファイルに格納する必要はありません。
プロファイルとリモート セッション
PowerShell プロファイルはリモート セッションでは自動的に実行されないため、プロファイルが追加するコマンドはリモート セッションに存在しません。 さらに、 $PROFILE
自動変数はリモート セッションでは設定されません。
セッションでプロファイルを実行するには、 Invoke-Command コマンドレットを使用します。
たとえば、次のコマンドは、セッション内のローカル コンピューターから "現在のユーザー、現在のホスト" プロファイルを $s
で実行します。
Invoke-Command -Session $s -FilePath $PROFILE
次のコマンドは、 $s
のセッション内のリモート コンピューターから "現在のユーザー、現在のホスト" プロファイルを実行します。 $PROFILE
変数は設定されていないため、コマンドはプロファイルへの明示的なパスを使用します。 独自のスコープではなく、リモート コンピューター上の現在のスコープでプロファイルが実行されるように、ドット ソーシング演算子を使用します。
Invoke-Command -Session $s -ScriptBlock {
. "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}
このコマンドを実行した後、プロファイルによってセッションに追加されるコマンドは $s
で使用できます。
関連項目
PowerShell