Delen via


about_Prompts

Korte beschrijving

Beschrijft de Prompt functie en laat zien hoe u een aangepaste Prompt functie maakt.

Lange beschrijving

De PowerShell-opdrachtprompt geeft aan dat PowerShell gereed is om een opdracht uit te voeren:

PS C:\>

De PowerShell-prompt wordt bepaald door de ingebouwde Prompt functie. U kunt de prompt aanpassen door uw eigen Prompt functie te maken en op te slaan in uw PowerShell-profiel.

Over de functie Prompt

De Prompt functie bepaalt het uiterlijk van de PowerShell-prompt. PowerShell wordt geleverd met een ingebouwde Prompt functie, maar u kunt deze overschrijven door uw eigen Prompt functie te definiƫren.

De Prompt functie heeft de volgende syntaxis:

function Prompt { <function-body> }

De Prompt functie moet een -object retourneren. Als aanbevolen procedure retourneert u een tekenreeks of een object dat is opgemaakt als een tekenreeks. De maximale aanbevolen lengte is 80 tekens.

De volgende Prompt functie retourneert bijvoorbeeld een tekenreeks 'Hello, Wereld', gevolgd door een haakje rechts (>).

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

De promptfunctie krijgen

Als u de Prompt functie wilt ophalen, gebruikt u de Get-Command cmdlet of gebruikt u de Get-Item cmdlet in het functiestation.

Bijvoorbeeld:

PS C:\> Get-Command Prompt

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

Als u het script wilt ophalen waarmee de waarde van de prompt wordt ingesteld, gebruikt u de methode dot om de eigenschap ScriptBlock van de Prompt functie op te halen.

Bijvoorbeeld:

(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

Net als alle functies wordt de Prompt functie opgeslagen in het Function: station. Als u het script wilt weergeven waarmee de huidige Prompt functie wordt gemaakt, typt u:

(Get-Item function:prompt).ScriptBlock

De standaardprompt

De standaardprompt wordt alleen weergegeven wanneer de Prompt functie een fout genereert of geen object retourneert.

De standaard PowerShell-prompt is:

PS>

Met de volgende opdracht stelt u bijvoorbeeld de Prompt functie in op $null, wat ongeldig is. Als gevolg hiervan wordt de standaardprompt weergegeven.

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

Omdat PowerShell wordt geleverd met een ingebouwde prompt, ziet u meestal niet de standaardprompt.

Ingebouwde prompt

PowerShell bevat een ingebouwde Prompt functie.

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

De functie gebruikt de Test-Path cmdlet om te bepalen of de $PSDebugContext automatische variabele wordt ingevuld. Als $PSDebugContext is ingevuld, bevindt u zich in de foutopsporingsmodus en [DBG]: wordt u als volgt aan de prompt toegevoegd:

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

Als $PSDebugContext niet is ingevuld, wordt de functie toegevoegd PS aan de prompt. En de functie gebruikt de Get-Location cmdlet om de locatie van de huidige bestandssysteemmap op te halen. Vervolgens wordt er een haakje met rechte hoeken () toegevoegd.>

Bijvoorbeeld:

PS C:\ps-test>

Als u zich in een geneste prompt bevindt, voegt de functie twee punthaken (>>) toe aan de prompt. U ziet een geneste prompt als de waarde van de $NestedPromptLevel automatische variabele groter is dan 0.

Wanneer u bijvoorbeeld fouten opspoort in een geneste prompt, lijkt de prompt op de volgende prompt:

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

Wijzigingen in de prompt

De Enter-PSSession cmdlet verwijst de naam van de externe computer naar de huidige Prompt functie. Wanneer u de Enter-PSSession cmdlet gebruikt om een sessie met een externe computer te starten, wordt de opdrachtprompt gewijzigd in de naam van de externe computer. Bijvoorbeeld:

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

Andere PowerShell-hosttoepassingen en alternatieve shells hebben mogelijk hun eigen aangepaste opdrachtprompts.

Zie about_Automatic_Variables voor meer informatie over de $PSDebugContext automatische variabelen en$NestedPromptLevel.

De prompt aanpassen

Als u de prompt wilt aanpassen, schrijft u een nieuwe Prompt functie. De functie is niet beveiligd, dus u kunt deze overschrijven.

Als u een Prompt functie wilt schrijven, typt u het volgende:

function prompt { }

Voer vervolgens tussen de accolades de opdrachten of de tekenreeks in waarmee de prompt wordt gemaakt.

De volgende prompt bevat bijvoorbeeld de naam van uw computer:

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

Op de server01-computer lijkt de prompt op de volgende prompt:

PS [Server01] >

De volgende Prompt functie bevat de huidige datum en tijd:

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

De prompt lijkt op de volgende prompt:

03/15/2012 17:49:47>

U kunt ook de standaardfunctie Prompt wijzigen:

De volgende gewijzigde Prompt functie wordt bijvoorbeeld toegevoegd [ADMIN]: aan de ingebouwde PowerShell-prompt wanneer PowerShell wordt geopend met behulp van de optie Als administrator uitvoeren :

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) { '>>' }) + '> '
}

Wanneer u PowerShell start met behulp van de optie Als administrator uitvoeren , wordt een prompt weergegeven die lijkt op de volgende prompt:

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

Met de volgende Prompt functie wordt de geschiedenis-id van de volgende opdracht weergegeven. Gebruik de cmdlet om de Get-History opdrachtgeschiedenis weer te geven.

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 >"
}

De volgende prompt gebruikt de Write-Host cmdlets en Get-Random om een prompt te maken die willekeurig van kleur verandert. Omdat Write-Host schrijft naar de huidige hosttoepassing, maar geen object retourneert, bevat deze functie een Return -instructie. Zonder dit gebruikt PowerShell de standaardprompt, PS>.

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

De promptfunctie opslaan

Net als elke functie bestaat de Prompt functie alleen in de huidige sessie. Als u de Prompt functie wilt opslaan voor toekomstige sessies, voegt u deze toe aan uw PowerShell-profielen. Zie about_Profiles voor meer informatie over profielen.

Zie ook