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 klaar 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.
Met de volgende Prompt functie wordt bijvoorbeeld een tekenreeks 'Hallo, wereld' geretourneerd, gevolgd door een haakje 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.
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 puntmethode 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 functie wordt gemaakt Prompt , 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 $nullbijvoorbeeld ingesteld 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 {
$(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 gevuld. Als $PSDebugContext dit is ingevuld, bevindt u zich 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 haakje 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 0.
Als u bijvoorbeeld foutopsporing 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. 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 en $NestedPromptLevel automatische variabelen.
De prompt aanpassen
Als u de prompt wilt aanpassen, schrijft u een nieuwe Prompt functie. De functie is niet beveiligd, zodat u deze kunt 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 uw 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 PowerShell wordt geopend met behulp van de optie Uitvoeren als administrator :
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 Get-History 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 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 Prompt functie wilt opslaan voor toekomstige sessies, voegt u deze toe aan uw PowerShell-profielen. Zie about_Profiles voor meer informatie over profielen.