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 prompt függvénnyel rendelkezik. A PowerShell-profilszkriptben saját testreszabott prompt függvényt határozhat meg.

Tudnivalók a függvényről prompt

A prompt függvény határozza meg a PowerShell-parancssor megjelenését. A PowerShell beépített prompt függvénnyel rendelkezik, de 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.

Az alábbi 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 függvénymeghajtó Get-Item parancsmagját.

Például:

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 függvény prompt tulajdonságának lekéréséhez.

Például:

(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óban 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 üzenet 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 $nullértékre állítja, amely érvénytelen. 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 beépített prompt függvényt tartalmaz.

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 ellenőrzi, hogy az $PSDebugContext automatikus változó rendelkezik-e értékkel. Ha $PSDebugContext értéke van, 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 kitöltve, a függvény PS ad hozzá a parancssorhoz. A függvény a Get-Location parancsmaggal szerzi be a fájlrendszer aktuális könyvtárának helyét. Ezután hozzáad egy szögletes zárójelet (>).

Például:

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 indít egy munkamenetet egy távoli számítógéppel, a parancssor megváltozik, hogy tartalmazza a távoli számítógép nevét. Például:

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 $PSDebugContext és $NestedPromptLevel automatikus változókkal kapcsolatos további információkért 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.

prompt függvény írásához í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 [ADMIN]: ad hozzá a beépített PowerShell-parancssorhoz emelt szintű munkamenetben való futtatáskor.

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 PowerShellt a Futtatás rendszergazdaként beállítással indítja el, 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 Write-Host és Get-Random parancsmagokkal hoz létre egy véletlenszerűen változó színt. Mivel Write-Host az aktuális gazdaalkalmazásba ír, de nem ad vissza objektumot, ez a függvény tartalmaz egy return utasítást. Nélküle a PowerShell az alapértelmezett kérést 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 prompt függvény későbbi munkamenetekhez való mentéséhez adja hozzá a PowerShell-profilokhoz. További információ a profilokról: about_Profiles.

Lásd még