about_Profiles

簡単な説明

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

長い説明

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

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

PowerShell では、ユーザーとホスト プログラムに対して複数のプロファイルがサポートされています。 ただし、プロファイルが作成されるわけではありません。 このトピックでは、プロファイルについて説明し、コンピューターでプロファイルを作成および管理する方法について説明します。

PowerShell コンソール (PowerShell.exe) の NoProfile パラメーターを使用して、プロファイルなしで PowerShell を起動する方法について説明します。 また、プロファイルに対する PowerShell 実行ポリシーの影響について説明します。

プロファイル ファイル

PowerShell では、複数のプロファイル ファイルがサポートされています。 また、PowerShell ホスト プログラムは、独自のホスト固有のプロファイルをサポートできます。

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

説明 Path
すべてのユーザー、すべてのホスト Windows - \ $PSHOMEProfile.ps1
Linux - /usr/local/microsoft/powershell/7/profile.ps1
macOS - /usr/local/microsoft/powershell/7/profile.ps1
すべてのユーザー、現在のホスト Windows - \ $PSHOMEMicrosoft.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 \ [My ]Documents \ PowerShellProfile.ps1 \
Linux - ~/.config/powershell/profile.ps1
macOS - ~/.config/powershell/profile.ps1
現在のユーザー、現在のホスト Windows - $Home \ [My ]Documents \ PowerShellMicrosoft.PowerShell_profile.ps1 \
Linux - ~/.config/powershell/Microsoft.Powershell_profile.ps1
macOS - ~/.config/powershell/Microsoft.Powershell_profile.ps1

プロファイル パスには、次の変数が含まれます。

  • $PSHOME変数。PowerShell のインストール ディレクトリを格納します。
  • 現在 $Home のユーザーのホーム ディレクトリを格納する 変数

さらに、PowerShell をホストする他のプログラムは、独自のプロファイルをサポートできます。 たとえば、Visual Studio Codeホスト固有のプロファイルがサポートされています。

説明 Path
すべてのユーザー、現在のホスト \$PSHOMEMicrosoft.VSCode_profile.ps1
現在のユーザー、現在のホスト $Home \ [My ]Documents \ PowerShell\
Microsoft.VSCode_profile.ps1

PowerShell ヘルプでは、"CurrentUser, Current Host" プロファイルは、最も頻繁に "PowerShell プロファイル" と呼ばれるプロファイルです。

注意

このWindows、Documents フォルダーの場所は、フォルダーリダイレクトまたはフォルダー リダイレクトによって変更OneDrive。 Documents フォルダーをネットワーク共有にリダイレクトしたり、そのフォルダーをネットワーク共有にOneDrive。 フォルダーをリダイレクトすると、プロファイル スクリプトが失敗し、モジュールの読み込みに失敗する可能性があります。

$PROFILE変数

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

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

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

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

説明 名前
現在のユーザー、現在のホスト $PROFILE
現在のユーザー、現在のホスト $PROFILE.CurrentUserCurrentHost
現在のユーザー、すべてのホスト $PROFILE.CurrentUserAllHosts
すべてのユーザー、現在のホスト $PROFILE.AllUsersCurrentHost
すべてのユーザー、すべてのホスト $PROFILE.AllUsersAllHosts

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

変数の現在の値を表示するには $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-path> 、作成するプロファイル ファイルへのパスに置き換える。

注意

Windows Vista 以降のバージョンの Windows で "すべてのユーザー" プロファイルを作成するには、[管理者として実行] オプションを使用して PowerShell を起動 します。

プロファイルを編集する方法

任意の PowerShell プロファイルをテキスト エディターで開くことができます (例: メモ帳。

現在の PowerShell ホスト アプリケーションで現在のユーザーのプロファイルを開メモ帳入力します。

notepad $PROFILE

他のプロファイルを開く場合は、プロファイル名を指定します。 たとえば、すべてのホスト アプリケーションのすべてのユーザーのプロファイルを開く場合は、次のコマンドを入力します。

notepad $PROFILE.AllUsersAllHosts

変更を適用するには、プロファイル ファイルを保存し、PowerShell を再起動します。

プロファイルを選択する方法

複数のホスト アプリケーションを使用する場合は、すべてのホスト アプリケーションで使用する項目をプロファイルに追加 $PROFILE.CurrentUserAllHosts します。 ホスト アプリケーションに固有の項目 (ホスト アプリケーションの背景色を設定するコマンドなど) を、そのホスト アプリケーションに固有のプロファイルに設定します。

多くのユーザー向け PowerShell をカスタマイズしている管理者は、次のガイドラインに従います。

  • 共通項目をプロファイルに格納 $PROFILE.AllUsersAllHosts する
  • ホスト アプリケーションに固有の項目を、ホスト アプリケーション $PROFILE.AllUsersCurrentHost に固有のプロファイルに格納する
  • 特定のユーザーの項目をユーザー固有のプロファイルに格納する

PowerShell プロファイルの特別な実装については、ホスト アプリケーションのドキュメントを確認してください。

プロファイルを使用する方法

PowerShell で作成する項目の多くおよび実行するほとんどのコマンドは、現在のセッションにのみ影響します。 セッションを終了すると、項目が削除されます。

セッション固有のコマンドと項目には、変数、基本設定変数、エイリアス、関数、コマンド (Set-ExecutionPolicyを除く)、およびセッションに追加する PowerShell モジュールが含まれます。

これらの項目を保存し、今後のすべてのセッションで使用するには、それらを PowerShell プロファイルに追加します。

プロファイルのもう1つの一般的な用途は、頻繁に使用される関数、エイリアス、および変数を保存することです。 プロファイルに項目を保存すると、その項目を再作成せずに、適用可能な任意のセッションで使用できるようになります。

プロファイルを開始する方法

プロファイルファイルを開くと、そのファイルは空白になります。 ただし、頻繁に使用する変数、エイリアス、およびコマンドを入力することができます。

作業を開始するためのいくつかの推奨事項を次に示します。

プロファイルを簡単に開くためのコマンドを追加する

これは、"現在のユーザー、現在のホスト" プロファイル以外のプロファイルを使用する場合に特に便利です。 たとえば、次のコマンドを追加します。

function Pro {notepad $PROFILE.CurrentUserAllHosts}

任意のコマンドレットのエイリアスを一覧表示する関数を追加する

function Get-CmdletAlias ($cmdletname) {
  Get-Alias |
    Where-Object -FilterScript {$_.Definition -like "$cmdletname"} |
      Format-Table -Property Definition, Name -AutoSize
}

コンソールをカスタマイズする

function Color-Console {
  $Host.ui.rawui.backgroundcolor = "white"
  $Host.ui.rawui.foregroundcolor = "black"
  $hosttime = (Get-ChildItem -Path $PSHOME\PowerShell.exe).CreationTime
  $hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
  $Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)"
  Clear-Host
}
Color-Console

カスタマイズした PowerShell プロンプトを追加する

function Prompt
{
$env:COMPUTERNAME + "\" + (Get-Location) + "> "
}

PowerShell プロンプトの詳細については、「 about_Prompts」を参照してください。

NoProfile パラメーター

プロファイルなしで PowerShell を開始するには、PowerShell を起動するプログラム PowerShell.exenoprofile パラメーターを使用します。

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

型:

PowerShell -NoProfile

PowerShell.exe のパラメーターの完全な一覧を表示するには、次のように入力します。

PowerShell -?

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

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

コマンドは、 Set-ExecutionPolicy 実行ポリシーを設定して変更します。 値はレジストリに保存されるため、すべての PowerShell セッションで適用されるいくつかのコマンドの1つです。 コンソールを開いたときに設定する必要はありません。また、プロファイルにコマンドを保存する必要もありません Set-ExecutionPolicy

プロファイルとリモートセッション

PowerShell プロファイルはリモートセッションで自動的に実行されないため、プロファイルによって追加されたコマンドはリモートセッションに存在しません。 また、 $PROFILE 自動変数は、リモートセッションでは設定されません。

セッションでプロファイルを実行するには、 コマンド レットを使用します。

たとえば、次のコマンドは、のセッションでローカルコンピューターから "現在のユーザー、現在のホスト" プロファイルを実行し $s ます。

Invoke-Command -Session $s -FilePath $PROFILE

次のコマンドは、のセッションで、リモートコンピューターから "現在のユーザー、現在のホスト" プロファイルを実行し $s ます。 変数が設定されていないため、この $PROFILE コマンドはプロファイルへの明示的なパスを使用します。 ドットソーシング演算子を使用すると、プロファイルはリモートコンピューター上の現在のスコープで実行され、それ自体のスコープ内では実行されません。

Invoke-Command -Session $s -ScriptBlock {
  . "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}

このコマンドを実行すると、プロファイルによってセッションに追加されたコマンドがで使用できるように $s なります。

関連項目

about_Automatic_Variables

about_Functions

about_Prompts

about_Execution_Policies

about_Signing

about_Remote

about_Scopes

Set-ExecutionPolicy