about_Prompts

Rövid leírás

Ismerteti a függvényt Prompt , é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-parancssort a beépített Prompt függvény határozza meg. A kérdés testreszabásához hozzon létre egy saját Prompt függvényt, és mentse azt a PowerShell-profiljába.

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

A Prompt függvény határozza meg a PowerShell-parancssor megjelenését. A PowerShell tartalmaz egy beépített Prompt függvényt, de felülbírálhatja a saját Prompt függvényének definiálásával.

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 sztringként formázott sztringet vagy objektumot adjon 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 függvény lekéréséhez Prompt használja a Get-Command parancsmagot, vagy használja a Get-Item függvénymeghajtó parancsmagját.

Például:

PS C:\> Get-Command Prompt

CommandType     Name      ModuleName
-----------     ----      ----------
Function        prompt

A parancssor értékét beállító 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é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ó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érdés

Az alapértelmezett kérdés csak akkor jelenik meg, ha a Prompt függvény hibát okoz, vagy nem ad vissza objektumot.

Az alapértelmezett PowerShell-parancssor a következő:

PS>

Az alábbi parancs például a Prompt függvényt $nullérvénytelenre állítja. Ennek eredményeképpen megjelenik az alapértelmezett kérdés.

PS C:\> function prompt {$null}
PS>

Mivel a PowerShell beépített parancssort tartalmaz, általában nem jelenik meg az alapértelmezett kérdés.

Beépített parancssor

A PowerShell tartalmaz egy beépített függvényt Prompt .

function prompt {
    $(if (Test-Path variable:/PSDebugContext) { '[DBG]: ' }
      else { '' }) + 'PS ' + $(Get-Location) +
        $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
}

A függvény a Test-Path parancsmaggal állapítja meg, hogy az $PSDebugContext automatikus változó fel van-e töltve. Ha $PSDebugContext a rendszer feltölti, hibakeresési módban van, é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áadódik PS a parancssorhoz. A függvény a Get-Location parancsmag használatával lekéri 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és jelenik meg, ha az $NestedPromptLevel automatikus változó értéke nagyobb, mint 0.

Ha például beágyazott parancssorban keres hibakeresést, a parancssor a következőhöz hasonló:

[DBG] PS C:\ps-test>>>

A kérdé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ényhez fűzi. 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éldául:

PS Hello, World> Enter-PSSession Server01
[Server01]: PS Hello, World>

Más PowerShell-gazdaalkalmazások és alternatív rendszerhéjak saját egyéni parancssorokkal rendelkezhetnek.

A változókkal és $NestedPromptLevel az $PSDebugContext automatikus változókkal kapcsolatos további információkért lásd about_Automatic_Variables.

A parancssor 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 kapcsos 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őpontot 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 hozzáadja [ADMIN]: a beépített PowerShell-parancssorhoz, amikor a PowerShellt a Futtatás rendszergazdaként lehetőséggel nyitja meg:

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 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 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 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