about_Prompts
簡単な説明
関数について 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 つの山かっこ (>>
) をプロンプトに追加します。 自動変数の値が 0 より大きい場合は、 $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
$adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator
$(if (Test-Path variable:/PSDebugContext) { '[DBG]: ' }
elseif($principal.IsInRole($adminRole)) { "[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」を参照してください。