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.

Lásd még