Share via


about_Prompts

Aggiornamento: agosto 2012

Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0

ARGOMENTO

about_Prompts

DESCRIZIONE BREVE

Decrive la funzione prompt e illustra come creare una funzione prompt personalizzata.

DESCRIZIONE LUNGA

Il prompt dei comandi di Windows PowerShell indica che Windows PowerShell è pronto per eseguire un comando:

        PS C:\>

Il prompt Windows PowerShell è determinato dalla funzione prompt predefinita. È possibile personalizzare il prompt creando una funzione prompt e salvandola nel proprio profilo Windows PowerShell.

INFORMAZIONI SULLA FUNZIONE PROMPT DEI COMANDI

La funzione prompt determina l'aspetto del prompt di Windows PowerShell. Windows PowerShell include una funzione prompt predefinita che può essere sostituita definendone una propria.

La funzione prompt presenta la sintassi seguente:

        function Prompt { <function-body> }

La funzione prompt deve restituire un oggetto. Come procedura consigliata, restituire una stringa o un oggetto formattato come stringa. La lunghezza massima consigliata è 80 caratteri.

Ad esempio, la funzione prompt seguente restituisce una stringa "Hello, World" seguita da un accento circonflesso (>).

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

OTTENERE LA FUNZIONE PROMPT

Per ottenere la funzione prompt, usare il cmdlet Get-Command o il cmdlet Get-Item nell'unità Function.

Le funzioni sono comandi. Pertanto, è possibile usare il cmdlet Get-Command per ottenere funzioni, inclusa la funzione prompt.

Ad esempio:

        PS C:\>Get-Command Prompt

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

Per ottenere lo script che imposta il valore del prompt, usare il metodo "Dot" per ottenere la proprietà ScriptBlock della funzione prompt.

Ad esempio:

        PS C:\>(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 funzione prompt viene archiviata nell'unità Function: . Per visualizzare lo script che crea la funzione prompt corrente, digitare:

        (Get-Item function:prompt).ScriptBlock

IL PROMPT PREDEFINITO

Il prompt predefinito viene visualizzato solo quando la funzione prompt genera un errore o non restituisce un oggetto.

Il prompt predefinito di Windows PowerShell è:

        PS>

Ad esempio, il comando seguente imposta la funzione prompt su $null, un valore non valido. Di conseguenza, viene visualizzato il prompt predefinito.

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

Poiché Windows PowerShell include un prompt predefinito, in genere non viene visualizzato il prompt predefinito.

PROMPT PREDEFINITO

Windows PowerShell include una funzione prompt predefinita.

In Windows PowerShell 3.0, la funzione prompt predefinita è:

        function prompt
        {
            "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
        }

Questo prompt semplificato inizia con "PS" seguito dal percorso corrente e un ">" per ogni livello di prompt annidato.

In Windows PowerShell 2,0, la funzione prompt predefinita è:

        function prompt
        {
            $(if (test-path variable:/PSDebugContext) { '[DBG]: ' } 
            else { '' }) + 'PS ' + $(Get-Location) `
            + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> '
        } 

La funzione usa il cmdlet Test-Path per determinare se la variabile automatica $PSDebugContext è popolata. Se $PSDebugContext è popolata, si è in modalità di debug e "[DBG]" viene aggiunto al prompt, come indicato di seguito:

        [DBG] PS C:\ps-test>

Se $PSDebugContext non è popolata, la funzione aggiunge "PS" al prompt. Inoltre, la funzione usa il cmdlet Get-Location per ottenere il percorso della directory di sistema corrente del file. Quindi, viene aggiunta una parentesi uncinata chiusa (>).

    For example:        
        PS C:\ps-test>

Se si usa un prompt nidificato, la funzione aggiunge due parentesi uncinate (>>) al prompt. Un prompt nidificato è disponibile se il valore della variabile automatica $NestedPromptLevel è maggiore di 1.

Ad esempio, quando si esegue il debug in un prompt nidificato, il prompt è simile al seguente:

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

MODIFICHE AL PROMPT

Il cmdlet Enter-PSSession consente di anteporre il nome del computer remoto alla funzione prompt corrente. Quando si usa il cmdlet Enter-PSSession per avviare una sessione con un computer remoto, il prompt dei comandi viene modificato per includere il nome del computer remoto. Ad esempio:

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

Altre applicazioni host e shell alternative di Windows PowerShell potrebbero disporre di propri prompt dei comandi personalizzati.

Per altre informazioni sulle variabili automatiche $PSDebugContext e $NestedPromptLevel, vedere about_Automatic_Variables.

COME PERSONALIZZARE IL PROMPT

Per personalizzare il prompt, scrivere una nuova funzione prompt. La funzione non è protetta, pertanto è possibile sovrascriverla.

Per scrivere una funzione prompt, digitare:

        function prompt { }

Poi, tra parentesi graffe, immettere i comandi o la stringa che crea il prompt.

Ad esempio, il prompt seguente include il nome del computer:

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

Nel computer Server01, il prompt è simile al seguente:

        PS [Server01] >

La funzione prompt seguente include data e ora correnti:

        function prompt {"$(get-date)> "}

Il prompt è simile al seguente:

        03/15/2012 17:49:47>

È anche possibile modificare la funzione prompt predefinita:

Ad esempio, la funzione prompt seguente aggiunge "[ADMIN]:" al prompt Windows PowerShell predefinito quando Windows PowerShell viene aperto usando l'opzione "Esegui come amministratore":

        function prompt 
        {
            $identity = [Security.Principal.WindowsIdentity]::GetCurrent()
            $principal = [Security.Principal.WindowsPrincipal] $identity

            $(if (test-path variable:/PSDebugContext) { '[DBG]: ' } 

            elseif($principal.IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
            { "[ADMIN]: " }

            else { '' }) + 'PS ' + $(Get-Location) + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> '
        }

Quando si avvia Windows PowerShell con l'opzione "Esegui come amministratore", viene visualizzato un prompt analogo al seguente:

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

La funzione prompt seguente visualizza l'ID di cronologia del comando successivo. Per visualizzare la cronologia dei comandi, usare il cmdlet Get-History.

          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 cmdlet Write-Host e Get-Random per creare un prompt che cambia colore in modo casuale. Siccome Write-Host scrive nell'applicazione host corrente ma non restituisce un oggetto, questa funzione include un'istruzione Return. In caso contrario, Windows PowerShell usa il prompt predefinito, "PS>".

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

SALVATAGGIO DELLA FUNZIONE PROMPT

Come qualsiasi altra funzione, la funzione prompt esiste solo nella sessione corrente. Per salvare la funzione prompt per sessioni future, aggiungerla ai profili Windows PowerShell. Per altre informazioni sui profili, vedere about_Profiles.

VEDERE ANCHE

Get-Location

Enter-PSSession

Get-History

Get-Random

Write-Host

about_Profiles

about_Functions

about_Scopes

about_Debuggers

about_Automatic_Variables