Over 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 met een rechte hoek (>
).
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 dot-methode 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 wordt de Prompt
functie bijvoorbeeld ingesteld op $null
, die ongeldig is. Als gevolg hiervan wordt de standaardprompt weergegeven.
PS C:\> function prompt {$null}
PS>
Omdat PowerShell wordt geleverd met een ingebouwde prompt, wordt de standaardprompt meestal niet weergegeven.
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 deze 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 vierkante haak rechts (>
) toegevoegd.
Bijvoorbeeld:
PS C:\ps-test>
Als u zich in een geneste prompt bevindt, voegt de functie twee punthaken (>>
) toe aan de prompt. (U bevindt zich in een geneste prompt als de waarde van de $NestedPromptLevel
automatische variabele groter is dan 1.)
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 naar 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 om de naam van de externe computer op te nemen. 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 ziet de prompt er ongeveer als volgt uit:
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
$(if (Test-Path variable:/PSDebugContext) { '[DBG]: ' }
elseif($principal.IsInRole([Security.Principal.WindowsBuiltInRole]
"Administrator")) { "[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 Get-History
de cmdlet om de 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 >"
}
In de volgende prompt worden de Write-Host
cmdlets en Get-Random
gebruikt om een prompt te maken die willekeurig van kleur verandert. Omdat Write-Host
er naar de huidige hosttoepassing wordt geschreven, maar geen object wordt geretourneerd, 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 functie Prompt 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.