Informazioni sulle richiesteAbout Prompts

Breve descrizioneShort description

Viene descritta la Prompt funzione e viene illustrato come creare una Prompt funzione personalizzata.Describes the Prompt function and demonstrates how to create a custom Prompt function.

Descrizione lungaLong description

Il prompt dei comandi di PowerShell indica che PowerShell è pronto per l'esecuzione di un comando:The PowerShell command prompt indicates that PowerShell is ready to run a command:

PS C:\>

Il prompt di PowerShell è determinato dalla Prompt funzione predefinita.The PowerShell prompt is determined by the built-in Prompt function. Per personalizzare il prompt, è possibile creare una Prompt funzione personalizzata e salvarla nel profilo di PowerShell.You can customize the prompt by creating your own Prompt function and saving it in your PowerShell profile.

Informazioni sulla funzione promptAbout the Prompt function

La Prompt funzione determina l'aspetto del prompt di PowerShell.The Prompt function determines the appearance of the PowerShell prompt. PowerShell include una Prompt funzione predefinita, ma è possibile eseguirne l'override definendo una Prompt funzione personalizzata.PowerShell comes with a built-in Prompt function, but you can override it by defining your own Prompt function.

La Prompt funzione presenta la sintassi seguente:The Prompt function has the following syntax:

function Prompt { <function-body> }

La Prompt funzione deve restituire un oggetto.The Prompt function must return an object. Come procedura consigliata, restituire una stringa o un oggetto formattato come stringa.As a best practice, return a string or an object that is formatted as a string. La lunghezza massima consigliata è di 80 caratteri.The maximum recommended length is 80 characters.

Ad esempio, la Prompt funzione seguente restituisce una stringa "Hello, World" seguita da una parentesi uncinata chiusa ( > ).For example, the following Prompt function returns a "Hello, World" string followed by a right angle bracket (>).

PS C:\> function prompt {"Hello, World > "}
Hello, World >

Recupero della funzione promptGetting the Prompt function

Per ottenere la Prompt funzione, utilizzare il Get-Command cmdlet o utilizzare il Get-Item cmdlet nell'unità di funzione.To get the Prompt function, use the Get-Command cmdlet or use the Get-Item cmdlet in the Function drive.

Ad esempio:For example:

PS C:\> Get-Command Prompt

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

Per ottenere lo script che imposta il valore della richiesta, usare il metodo del punto per ottenere la proprietà scriptblock della Prompt funzione.To get the script that sets the value of the prompt, use the dot method to get the ScriptBlock property of the Prompt function.

Ad esempio:For example:

(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

Come tutte le funzioni, la Prompt funzione viene archiviata nell' Function: unità.Like all functions, the Prompt function is stored in the Function: drive. Per visualizzare lo script che crea la Prompt funzione corrente, digitare:To display the script that creates the current Prompt function, type:

(Get-Item function:prompt).ScriptBlock

Prompt predefinitoThe default prompt

Il prompt predefinito viene visualizzato solo quando la Prompt funzione genera un errore o non restituisce alcun oggetto.The default prompt appears only when the Prompt function generates an error or does not return an object.

Il prompt di PowerShell predefinito è:The default PowerShell prompt is:

PS>

Ad esempio, il comando seguente imposta la Prompt funzione su $null , che non è valida.For example, the following command sets the Prompt function to $null, which is invalid. Di conseguenza, viene visualizzato il prompt predefinito.As a result, the default prompt appears.

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

Poiché PowerShell viene fornita con un prompt incorporato, in genere non viene visualizzato il prompt predefinito.Because PowerShell comes with a built-in prompt, you usually do not see the default prompt.

Messaggio predefinitoBuilt-in prompt

PowerShell include una funzione incorporata Prompt .PowerShell includes a built-in Prompt function.

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

La funzione usa il Test-Path cmdlet per determinare se la $PSDebugContext variabile automatica è popolata.The function uses the Test-Path cmdlet to determine whether the $PSDebugContext automatic variable is populated. Se $PSDebugContext viene popolato, si è in modalità di debug e [DBG]: viene aggiunto al prompt, come indicato di seguito:If $PSDebugContext is populated, you are in debugging mode, and [DBG]: is added to the prompt, as follows:

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

Se $PSDebugContext non è popolato, la funzione aggiunge PS al prompt.If $PSDebugContext is not populated, the function adds PS to the prompt. La funzione usa quindi il Get-Location cmdlet per ottenere il percorso della directory file system corrente.And, the function uses the Get-Location cmdlet to get the current file system directory location. Quindi aggiunge una parentesi uncinata chiusa ( > ).Then, it adds a right angle bracket (>).

Ad esempio:For example:

PS C:\ps-test>

Se ci si trova in un prompt annidato, la funzione aggiunge due parentesi angolari ( >> ) al prompt.If you are in a nested prompt, the function adds two angle brackets (>>) to the prompt. Se il valore della $NestedPromptLevel variabile automatica è maggiore di 1, si trova in un prompt annidato.(You are in a nested prompt if the value of the $NestedPromptLevel automatic variable is greater than 1.)

Ad esempio, quando si esegue il debug in un prompt annidato, il prompt è simile al seguente:For example, when you are debugging in a nested prompt, the prompt resembles the following prompt:

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

Modifiche al promptChanges to the prompt

Il Enter-PSSession cmdlet antepone il nome del computer remoto alla Prompt funzione corrente.The Enter-PSSession cmdlet prepends the name of the remote computer to the current Prompt function. Quando si utilizza il Enter-PSSession cmdlet per avviare una sessione con un computer remoto, il prompt dei comandi viene modificato in modo da includere il nome del computer remoto.When you use the Enter-PSSession cmdlet to start a session with a remote computer, the command prompt changes to include the name of the remote computer. Ad esempio:For example:

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

Altre applicazioni host di PowerShell e shell alternative potrebbero avere un prompt dei comandi personalizzato.Other PowerShell host applications and alternate shells might have their own custom command prompts.

Per ulteriori informazioni sulle $PSDebugContext $NestedPromptLevel variabili automatiche e, vedere about_Automatic_Variables.For more information about the $PSDebugContext and $NestedPromptLevel automatic variables, see about_Automatic_Variables.

Come personalizzare il promptHow to customize the prompt

Per personalizzare il prompt, scrivere una nuova Prompt funzione.To customize the prompt, write a new Prompt function. La funzione non è protetta ed è quindi possibile sovrascriverla.The function is not protected, so you can overwrite it.

Per scrivere una Prompt funzione, digitare quanto segue:To write a Prompt function, type the following:

function prompt { }

Quindi, tra parentesi graffe, immettere i comandi o la stringa che crea la richiesta.Then, between the braces, enter the commands or the string that creates your prompt.

Il messaggio seguente, ad esempio, include il nome del computer:For example, the following prompt includes your computer name:

function prompt {"PS [$env:COMPUTERNAME]> "}

Nel computer Server01 il prompt è simile al seguente:On the Server01 computer, the prompt resembles the following prompt:

PS [Server01] >

La Prompt funzione seguente include la data e l'ora correnti:The following Prompt function includes the current date and time:

function prompt {"$(Get-Date)> "}

Il prompt è simile al seguente:The prompt resembles the following prompt:

03/15/2012 17:49:47>

È anche possibile modificare la Prompt funzione predefinita:You can also change the default Prompt function:

Ad esempio, la funzione modificata seguente Prompt aggiunge [ADMIN]: al prompt di PowerShell incorporato quando PowerShell viene aperto usando l'opzione Esegui come amministratore :For example, the following modified Prompt function adds [ADMIN]: to the built-in PowerShell prompt when PowerShell is opened by using the Run as administrator option:

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) { '>>' }) + '> '
}

Quando si avvia PowerShell usando l'opzione Esegui come amministratore , viene visualizzato un messaggio simile al seguente:When you start PowerShell by using the Run as administrator option, a prompt that resembles the following prompt appears:

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

La Prompt funzione seguente consente di visualizzare l'ID cronologia del comando successivo.The following Prompt function displays the history ID of the next command. Per visualizzare la cronologia dei comandi, usare il Get-History cmdlet.To view the command history, use the Get-History cmdlet.

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

Il prompt seguente usa i Write-Host Get-Random cmdlet e per creare una richiesta che modifichi il colore in modo casuale.The following prompt uses the Write-Host and Get-Random cmdlets to create a prompt that changes color randomly. Poiché Write-Host scrive nell'applicazione host corrente ma non restituisce un oggetto, questa funzione include un' Return istruzione.Because Write-Host writes to the current host application but does not return an object, this function includes a Return statement. Senza di esso, PowerShell usa il prompt predefinito PS> .Without it, PowerShell uses the default prompt, PS>.

function prompt {
    $color = Get-Random -Min 1 -Max 16
    Write-Host ("PS " + $(Get-Location) +">") -NoNewLine `
     -ForegroundColor $Color
    return " "
}

Salvataggio della funzione promptSaving the Prompt function

Analogamente a qualsiasi funzione, la Prompt funzione esiste solo nella sessione corrente.Like any function, the Prompt function exists only in the current session. Per salvare la Prompt funzione per le sessioni future, aggiungerla ai profili di PowerShell.To save the Prompt function for future sessions, add it to your PowerShell profiles. Per altre informazioni sui profili, vedere about_Profiles.For more information about profiles, see about_Profiles.

Vedere ancheSee also

Get-LocationGet-Location

Enter-PSSessionEnter-PSSession

Get-HistoryGet-History

Get-RandomGet-Random

Write-HostWrite-Host

about_Profilesabout_Profiles

about_Functionsabout_Functions

about_Scopesabout_Scopes

about_Debuggersabout_Debuggers

about_Automatic_Variablesabout_Automatic_Variables