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:\>
PowerShell heeft een ingebouwde Prompt
functie. U kunt uw eigen aangepaste Prompt
functie definiƫren in uw PowerShell-profielscript.
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 best practice kunt u een tekenreeks of een object retourneren dat is opgemaakt als een tekenreeks. De maximale aanbevolen lengte is 80 tekens.
Met de volgende Prompt
functie wordt bijvoorbeeld een tekenreeks 'Hallo, wereld' geretourneerd, gevolgd door een vierkante haak rechts (>
).
PS C:\> function prompt {"Hello, World > "}
Hello, World >
De functie Prompt verkrijgen
Als u de Prompt
functie wilt ophalen, gebruikt u de Get-Command
cmdlet of gebruikt u de Get-Item
cmdlet in het functiestation.
Voorbeeld:
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 puntmethode om de eigenschap ScriptBlock van de Prompt
functie op te halen.
Voorbeeld:
(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 $null
op , 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 {
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) ";
# .Link
# https://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml
}
De functie gebruikt de Test-Path
cmdlet om te testen of de $PSDebugContext
automatische variabele een waarde heeft. Als $PSDebugContext
er een waarde is, wordt u uitgevoerd in de foutopsporingsmodus en [DBG]:
wordt u als volgt toegevoegd aan de prompt:
[DBG]: PS C:\ps-test>
Als $PSDebugContext
deze niet is ingevuld, wordt de functie toegevoegd PS
aan de prompt.
En de functie gebruikt de Get-Location
cmdlet om de huidige locatie van de bestandssysteemmap op te halen. Vervolgens wordt er een vierkante haak rechts (>
) toegevoegd.
Voorbeeld:
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 0.
Wanneer u bijvoorbeeld fouten in een geneste prompt opspoort, lijkt de prompt op de volgende prompt:
[DBG] PS C:\ps-test>>>
Wijzigingen in de prompt
De Enter-PSSession
cmdlet prependeert 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, verandert de opdrachtprompt zodat deze de naam van de externe computer bevat. Voorbeeld:
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
en $NestedPromptLevel
automatische variabelen.
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 computernaam:
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 deze wordt uitgevoerd in een sessie met verhoogde bevoegdheid.
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 de optie Uitvoeren als administrator , wordt er 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 >"
}
In de volgende prompt worden de Write-Host
en Get-Random
cmdlets gebruikt om een prompt te maken waarmee de kleur willekeurig wordt gewijzigd. 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 functie Prompt opslaan
Net als elke functie bestaat de Prompt
functie alleen in de huidige sessie. Als u de functie wilt opslaan voor toekomstige sessies, voegt u deze Prompt
toe aan uw PowerShell-profielen. Zie about_Profiles voor meer informatie over profielen.