次の方法で共有


プロンプトについて

簡単な説明

関数について Prompt 説明し、カスタム Prompt 関数を作成する方法を示します。

長い説明

PowerShell コマンド プロンプトは、PowerShell がコマンドを実行する準備ができていることを示します。

PS C:\>

PowerShell プロンプトは、組み込み Prompt 関数によって決定されます。 独自 Prompt の関数を作成し、PowerShell プロファイルに保存することで、プロンプトをカスタマイズできます。

Prompt 関数について

関数は Prompt 、PowerShell プロンプトの外観を決定します。 PowerShell には組み込みの Prompt 関数が付属していますが、独自 Prompt の関数を定義することでオーバーライドできます。

関数の Prompt 構文は次のとおりです。

function Prompt { <function-body> }

関数は Prompt オブジェクトを返す必要があります。 ベスト プラクティスとして、文字列として書式設定された文字列またはオブジェクトを返します。 推奨される最大長は 80 文字です。

たとえば、次Promptの関数は、"Hello、World" 文字列の後に右山かっこ (>) を返します。

PS C:\> function prompt {"Hello, World > "}
Hello, World >

Prompt 関数の取得

関数を Prompt 取得するには、 コマンドレットを Get-Command 使用するか、 Get-Item 関数ドライブで コマンドレットを使用します。

例:

PS C:\> Get-Command Prompt

CommandType     Name      ModuleName
-----------     ----      ----------
Function        prompt

プロンプトの値を設定するスクリプトを取得するには、dot メソッドを使用して関数の ScriptBlock プロパティを Prompt 取得します。

例:

(Get-Command Prompt).ScriptBlock
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
# .Link
# https://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml

すべての関数と同様に Prompt 、関数はドライブに Function: 格納されます。 現在 Prompt の関数を作成するスクリプトを表示するには、次のように入力します。

(Get-Item function:prompt).ScriptBlock

既定のプロンプト

既定のプロンプトは、関数がエラーを Prompt 生成するか、オブジェクトを返さない場合にのみ表示されます。

既定の PowerShell プロンプトは次のとおりです。

PS>

たとえば、次のコマンドは、 関数を Prompt$null設定します。これは無効です。 その結果、既定のプロンプトが表示されます。

PS C:\> function prompt {$null}
PS>

PowerShell には組み込みのプロンプトが付属しているため、通常は既定のプロンプトは表示されません。

組み込みプロンプト

PowerShell には、組み込みの関数が含まれています Prompt

function prompt {
    $(if (Test-Path variable:/PSDebugContext) { '[DBG]: ' }
      else { '' }) + 'PS ' + $(Get-Location) +
        $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
}

関数は、 コマンドレットを Test-Path 使用して、自動変数が $PSDebugContext 設定されているかどうかを判断します。 が設定されている場合 $PSDebugContext 、デバッグ モードになり、 [DBG]: 次のようにプロンプトに追加されます。

[DBG]: PS C:\ps-test>

が設定されていない場合 $PSDebugContext 、関数はプロンプトに を追加 PS します。 また、 関数は コマンドレットを Get-Location 使用して、現在のファイル システム ディレクトリの場所を取得します。 次に、右山かっこ (>) を追加します。

例:

PS C:\ps-test>

入れ子になったプロンプトの場合、関数は 2 つの山かっこ (>>) をプロンプトに追加します。 (自動変数の値が 1 より大きい場合は、 $NestedPromptLevel 入れ子になったプロンプトに表示されます)。

たとえば、入れ子になったプロンプトでデバッグする場合、プロンプトは次のプロンプトのようになります。

[DBG] PS C:\ps-test>>>

プロンプトに対する変更

コマンドレットは Enter-PSSession 、リモート コンピューターの名前の前に現在 Prompt の関数を付加します。 コマンドレットを Enter-PSSession 使用してリモート コンピューターとのセッションを開始すると、コマンド プロンプトが変更され、リモート コンピューターの名前が含まれます。 例:

PS Hello, World> Enter-PSSession Server01
[Server01]: PS Hello, World>

他の PowerShell ホスト アプリケーションや代替シェルには、独自のカスタム コマンド プロンプトが表示される場合があります。

変数と$NestedPromptLevel自動変数の$PSDebugContext詳細については、「about_Automatic_Variables」を参照してください。

プロンプトをカスタマイズする方法

プロンプトをカスタマイズするには、新 Prompt しい関数を記述します。 関数は保護されていないため、上書きできます。

関数を Prompt 記述するには、次のように入力します。

function prompt { }

次に、中かっこの間に、プロンプトを作成するコマンドまたは文字列を入力します。

たとえば、次のプロンプトには、コンピューター名が含まれています。

function prompt {"PS [$env:COMPUTERNAME]> "}

Server01 コンピューターでは、プロンプトは次のプロンプトのようになります。

PS [Server01] >

Prompt の関数には、現在の日付と時刻が含まれています。

function prompt {"$(Get-Date)> "}

プロンプトは次のプロンプトのようになります。

03/15/2012 17:49:47>

既定 Prompt の関数を変更することもできます。

たとえば、 [管理者として実行] オプションを使用して PowerShell を開くと、次の変更されたPrompt関数が組み込みの PowerShell プロンプトに追加[ADMIN]:されます。

function prompt {
  $identity = [Security.Principal.WindowsIdentity]::GetCurrent()
  $principal = [Security.Principal.WindowsPrincipal] $identity

  $(if (Test-Path variable:/PSDebugContext) { '[DBG]: ' }
    elseif($principal.IsInRole([Security.Principal.WindowsBuiltInRole]
      "Administrator")) { "[ADMIN]: " }
    else { '' }
  ) + 'PS ' + $(Get-Location) +
    $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
}

[管理者として実行] オプションを使用して PowerShell を起動すると、次のようなプロンプトが表示されます。

[ADMIN]: PS C:\ps-test>

Prompt の関数は、次のコマンドの履歴 ID を表示します。 コマンド履歴を表示するには、 コマンドレットを Get-History 使用します。

function prompt {
   # The at sign creates an array in case only one history item exists.
   $history = @(Get-History)
   if($history.Count -gt 0)
   {
      $lastItem = $history[$history.Count - 1]
      $lastId = $lastItem.Id
   }

   $nextCommand = $lastId + 1
   $currentDirectory = Get-Location
   "PS: $nextCommand $currentDirectory >"
}

次のプロンプトでは、 Write-Host コマンドレットと Get-Random コマンドレットを使用して、色をランダムに変更するプロンプトを作成します。 Write-Hostは現在のホスト アプリケーションに書き込みますが、オブジェクトは返されないため、この関数には ステートメントがReturn含まれます。 これを使用しない場合、PowerShell は既定のプロンプト である を使用します PS>

function prompt {
    $color = Get-Random -Min 1 -Max 16
    Write-Host ("PS " + $(Get-Location) +">") -NoNewLine `
     -ForegroundColor $Color
    return " "
}

Prompt 関数を保存する

他の関数と同様に Prompt 、関数は現在のセッションにのみ存在します。 今後のセッション用に関数を Prompt 保存するには、PowerShell プロファイルに追加します。 プロファイルの詳細については、「about_Profiles」を参照してください。

こちらもご覧ください

Get-Location

Enter-PSSession

Get-History

Get-Random

Write-Host

about_Profiles

about_Functions

about_Scopes

about_Debuggers

about_Automatic_Variables