ja-JP/about_Prompts.help.txt
|
TOPIC about_Prompts 簡単な説明 prompt 関数について説明し、独自の prompt 関数を作成する方法を示します。 詳細な説明 PowerShell のコマンドプロンプトは、PowerShell がコマンドを実行できる 状態であることを示します。 PS C:\> PowerShell には組み込みの prompt 関数があります。PowerShell プロファイル スクリプトで独自のカスタマイズした prompt 関数を定義できます。 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 コマンドレットを使用するか、 Function ドライブで Get-Item コマンドレットを使用します。 たとえば、次のようにします。 PS C:\> Get-Command prompt CommandType Name ModuleName ----------- ---- ---------- Function prompt プロンプトの値を設定するスクリプトを取得するには、ドット表記で prompt 関数の ScriptBlock プロパティを取得します。 たとえば、次のようにします。 (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 { "PS $($ExecutionContext.SessionState.Path.CurrentLocation)$('>' * ($NestedPromptLevel + 1)) "; # .Link # https://go.microsoft.com/fwlink/?LinkID=225750 # .ExternalHelp System.Management.Automation.dll-help.xml } この関数は Test-Path コマンドレットを使用して、$PSDebugContext 自動変数に 値があるかどうかをテストします。$PSDebugContext に値がある場合は デバッグモードで実行しており、次のようにプロンプトに [DBG]: が追加され ます。 [DBG]: PS C:\ps-test> $PSDebugContext が設定されていない場合、関数はプロンプトに PS を追加 します。そして、Get-Location コマンドレットを使用して現在のファイル システムのディレクトリの場所を取得します。さらに右山かっこ(>)を 追加します。 たとえば、次のようになります。 PS C:\ps-test> 入れ子になったプロンプトにいる場合、関数はプロンプトに 2 つの山かっこ (>>)を追加します。$NestedPromptLevel 自動変数の値が 0 より大きい場合、 入れ子になったプロンプトにいることになります。 たとえば、入れ子になったプロンプトでデバッグしている場合、プロンプトは 次のようになります。 [DBG] PS C:\ps-test>>> プロンプトの変更 Enter-PSSession コマンドレットは、現在の prompt 関数の先頭にリモート コンピューターの名前を追加します。Enter-PSSession コマンドレットを使用 してリモートコンピューターとのセッションを開始すると、コマンドプロンプト が変化してリモートコンピューターの名前が含まれます。たとえば、次のように なります。 PS Hello, World> Enter-PSSession Server01 [Server01]: PS Hello, World> 他の PowerShell ホストアプリケーションや代替シェルには、独自のカスタム コマンドプロンプトがある場合があります。 $PSDebugContext 自動変数および $NestedPromptLevel 自動変数の詳細について は、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 関数を変更することもできます。 たとえば、次の変更された 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 { # 履歴項目が 1 つだけの場合に配列を作るためのアットマークです。 $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 文が含まれます。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 を参照して ください。 関連項目 about_Automatic_Variables about_Debuggers about_Functions about_Profiles about_Scopes Get-History Write-Host Get-Location Enter-PSSession Get-Random ---- 原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP |