about_Profiles

簡単な説明

PowerShell プロファイルを作成して使用する方法について説明します。

長い説明

PowerShell プロファイルを作成して環境をカスタマイズし、開始するすべての PowerShell セッションにセッション固有の要素を追加できます。

PowerShell プロファイルは、PowerShell の開始時に実行されるスクリプトです。 プロファイルをスタートアップ スクリプトとして使用して、環境をカスタマイズできます。 コマンド、エイリアス、関数、変数、モジュール、PowerShell ドライブなどを追加できます。 他のセッション固有の要素をプロファイルに追加して、インポートや再作成を行わずにすべてのセッションで使用できるようにすることもできます。

PowerShell では、ユーザーとホスト プログラム用のいくつかのプロファイルがサポートされています。 ただし、プロファイルは作成されません。

プロファイルの種類と場所

PowerShell では、ユーザーと PowerShell ホストを対象とする複数のプロファイル ファイルがサポートされています。 これらのプロファイルの一部またはすべてをコンピューターに設定できます。

たとえば、PowerShell コンソールでは、次の基本的なプロファイル ファイルがサポートされています。 プロファイルは、実行順に一覧表示されます。

  • すべてのユーザー、すべてのホスト
    • Windows - $PSHOME\Profile.ps1
    • Linux - /usr/local/microsoft/powershell/7/profile.ps1
    • macOS - /usr/local/microsoft/powershell/7/profile.ps1
  • すべてのユーザー、現在のホスト
    • Windows - $PSHOME\Microsoft.PowerShell_profile.ps1
    • Linux - /usr/local/microsoft/powershell/7/Microsoft.Powershell_profile.ps1
    • macOS - /usr/local/microsoft/powershell/7/Microsoft.Powershell_profile.ps1
  • 現在のユーザー、すべてのホスト
    • Windows - $HOME\Documents\PowerShell\Profile.ps1
    • Linux - ~/.config/powershell/profile.ps1
    • macOS - ~/.config/powershell/profile.ps1
  • 現在のユーザー、現在のホスト
    • Windows - $HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
    • Linux - ~/.config/powershell/Microsoft.Powershell_profile.ps1
    • macOS - ~/.config/powershell/Microsoft.Powershell_profile.ps1

プロファイル スクリプトは、一覧表示されている順序で実行されます。 つまり、 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 では、Documents フォルダーの場所は、フォルダーリダイレクトまたは OneDrive によって変更できます。 ドキュメント フォルダーをネットワーク共有にリダイレクトしたり、OneDrive に含めたりすることはお勧めしません。 フォルダーをリダイレクトすると、モジュールが読み込みに失敗し、プロファイル スクリプトにエラーが作成される可能性があります。

$PROFILE 変数

$PROFILE 自動変数には、現在のセッションで使用できる PowerShell プロファイルへのパスが格納されます。

プロファイル パスを表示するには、変数の値を $PROFILE 表示します。 コマンドで 変数を $PROFILE 使用してパスを表すこともできます。

変数には $PROFILE 、"現在のユーザー、現在のホスト" プロファイルへのパスが格納されます。 その他のプロファイルは、変数の note プロパティに $PROFILE 保存されます。

たとえば、変数には$PROFILE、Windows PowerShell コンソールで次の値があります。

  • 現在のユーザー、現在のホスト - $PROFILE
  • 現在のユーザー、現在のホスト - $PROFILE.CurrentUserCurrentHost
  • 現在のユーザー、すべてのホスト - $PROFILE.CurrentUserAllHosts
  • すべてのユーザー、現在のホスト - $PROFILE.AllUsersCurrentHost
  • すべてのユーザー、すべてのホスト - $PROFILE.AllUsersAllHosts

変数の $PROFILE 値は各ユーザーと各ホスト アプリケーションで変更されるため、使用する各 PowerShell ホスト アプリケーションでプロファイル変数の値を必ず表示してください。

変数の現在の値を表示するには、次のように $PROFILE 入力します。

$PROFILE | Get-Member -Type NoteProperty

変数は $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.exeNoProfile パラメーターを使用します。

開始するには、Cmd.exeや PowerShell 自体など、PowerShell を起動できるプログラムを開きます。 Windows の [実行] ダイアログ ボックスを使用することもできます。

型:

pwsh -NoProfile

のパラメーターの完全な一覧については、次のように pwsh.exe入力します。

pwsh -?

プロファイルと実行ポリシー

PowerShell 実行ポリシーは、スクリプトを実行して構成ファイル (プロファイルを含む) を読み込むことができるかどうかも部分的に決定します。 制限付き実行ポリシーが既定です。 これにより、プロファイルを含むすべてのスクリプトが実行されなくなります。 "制限付き" ポリシーを使用する場合、プロファイルは実行されず、その内容は適用されません。

コマンドは 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使用できます。

関連項目