about_Prompts
Rövid leírás
Ismerteti a Prompt
függvényt, és bemutatja, hogyan hozhat létre egyéni Prompt
függvényt.
Hosszú leírás
A PowerShell parancssora azt jelzi, hogy a PowerShell készen áll egy parancs futtatására:
PS C:\>
A PowerShell beépített függvényt Prompt
használ. A PowerShell-profilszkriptben saját testreszabott függvényt Prompt
határozhat meg.
Tudnivalók a Prompt függvényről
A Prompt
függvény határozza meg a PowerShell-parancssor megjelenését.
A PowerShell beépített függvényt Prompt
tartalmaz, de a saját Prompt
függvény definiálásával felülbírálhatja.
A Prompt
függvény szintaxisa a következő:
function Prompt { <function-body> }
A Prompt
függvénynek egy objektumot kell visszaadnia. Ajánlott eljárásként sztringet vagy sztringként formázott objektumot ad vissza. A javasolt maximális hossz 80 karakter.
A következő Prompt
függvény például egy "Hello, World" sztringet ad vissza, majd egy szögletes zárójelet (>
).
PS C:\> function prompt {"Hello, World > "}
Hello, World >
A Prompt függvény lekérése
A Prompt
függvény lekéréséhez használja a Get-Command
parancsmagot, vagy használja a Get-Item
függvénymeghajtó parancsmagját.
Példa:
PS C:\> Get-Command Prompt
CommandType Name ModuleName
----------- ---- ----------
Function prompt
A parancssor értékét meghatározó szkript lekéréséhez használja a pont metódust a Prompt
függvény ScriptBlock tulajdonságának lekéréséhez.
Példa:
(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
Mint minden függvény, a Prompt
függvény is a Function:
meghajtón van tárolva.
Az aktuális Prompt
függvényt létrehozó szkript megjelenítéséhez írja be a következőt:
(Get-Item function:prompt).ScriptBlock
Az alapértelmezett kérés
Az alapértelmezett kérés csak akkor jelenik meg, ha a Prompt
függvény hibát okoz, vagy nem ad vissza objektumot.
Az alapértelmezett PowerShell-kérés a következő:
PS>
Az alábbi parancs például a Prompt
függvényt érvénytelen értékre $null
állítja. Ennek eredményeképpen megjelenik az alapértelmezett kérés.
PS C:\> function prompt {$null}
PS>
Mivel a PowerShell beépített parancssort tartalmaz, általában nem jelenik meg az alapértelmezett üzenet.
Beépített parancssor
A PowerShell tartalmaz egy beépített függvényt 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
}
A függvény a Test-Path
parancsmaggal teszteli, hogy az $PSDebugContext
automatikus változó rendelkezik-e értékkel. Ha $PSDebugContext
van értéke, hibakeresési módban fut, és [DBG]:
a rendszer hozzáadja a parancssorhoz az alábbiak szerint:
[DBG]: PS C:\ps-test>
Ha $PSDebugContext
nincs feltöltve, a függvény hozzáadja PS
a parancssorhoz.
A függvény a Get-Location
parancsmaggal lekéri a fájlrendszer aktuális könyvtárának helyét. Ezután hozzáad egy derékszögű szögletes zárójelet (>
).
Példa:
PS C:\ps-test>
Ha beágyazott parancssorban van, a függvény két szögletes zárójelet (>>
) ad hozzá a parancssorhoz. Beágyazott kérdésben jelenik meg, ha az $NestedPromptLevel
automatikus változó értéke 0-nál nagyobb.
Ha például beágyazott parancssorban hibakeresést hajt végre, a parancssor a következőhöz hasonló:
[DBG] PS C:\ps-test>>>
A kérés módosítása
A Enter-PSSession
parancsmag a távoli számítógép nevét az aktuális Prompt
függvényre használja. Amikor a Enter-PSSession
parancsmaggal elindít egy munkamenetet egy távoli számítógéppel, a parancssor úgy változik, hogy tartalmazza a távoli számítógép nevét. Példa:
PS Hello, World> Enter-PSSession Server01
[Server01]: PS Hello, World>
Előfordulhat, hogy más PowerShell-gazdagépalkalmazások és alternatív rendszerhéjak saját egyéni parancssorokkal rendelkeznek.
Az automatikus változókkal $NestedPromptLevel
kapcsolatos további információkért $PSDebugContext
lásd: about_Automatic_Variables.
A kérés testreszabása
A parancssor testreszabásához írjon egy új Prompt
függvényt. A függvény nem védett, ezért felülírhatja.
Függvény írásához Prompt
írja be a következőt:
function prompt { }
Ezután a zárójelek között adja meg a parancssort létrehozó parancsokat vagy sztringet.
A következő üzenet például tartalmazza a számítógép nevét:
function prompt {"PS [$env:COMPUTERNAME]> "}
A Server01 számítógépen a parancssor a következőhöz hasonló:
PS [Server01] >
A következő Prompt
függvény az aktuális dátumot és időt tartalmazza:
function prompt {"$(Get-Date)> "}
A parancssor a következőhöz hasonló:
03/15/2012 17:49:47>
Az alapértelmezett Prompt
függvényt is módosíthatja:
Az alábbi módosított Prompt
függvény például emelt szintű munkamenetben való futtatáskor hozzáadja [ADMIN]:
a beépített PowerShell-parancssort.
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) { '>>' }) + '> '
}
Amikor a Futtatás rendszergazdaként beállítással indítja el a PowerShellt, megjelenik egy, a következőhöz hasonló üzenet:
[ADMIN]: PS C:\ps-test>
Az alábbi Prompt
függvény a következő parancs előzményazonosítóját jeleníti meg. A parancselőzmények megtekintéséhez használja a Get-History
parancsmagot.
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 >"
}
Az alábbi parancssor a parancsmagok és Get-Random
a Write-Host
parancsmagok használatával hoz létre egy véletlenszerűen színt módosító kérést. Mivel Write-Host
az aktuális gazdaalkalmazásba ír, de nem ad vissza objektumot, ez a függvény tartalmaz egy utasítást Return
. Nélküle a PowerShell az alapértelmezett parancssort használja. PS>
function prompt {
$color = Get-Random -Min 1 -Max 16
Write-Host ("PS " + $(Get-Location) +">") -NoNewLine `
-ForegroundColor $Color
return " "
}
A Prompt függvény mentése
Mint minden függvény, a Prompt
függvény is csak az aktuális munkamenetben létezik. A függvény későbbi munkamenetekhez való mentéséhez Prompt
adja hozzá a PowerShell-profilokhoz. További információ a profilokról: about_Profiles.