ARGOMENTO
    about_Prompts

DESCRIZIONE BREVE
    Descrive la funzione Prompt e illustra come creare una funzione 
    Prompt personalizzata.


  
DESCRIZIONE DETTAGLIATA
    Il prompt dei comandi di Windows PowerShell indica che Windows 
    PowerShell è pronto ad eseguire un comando: 

	PS C:\>


    Il prompt di Windows PowerShell è determinato dalla funzione 
    Prompt. È possibile personalizzare il prompt creando la propria 
    funzione Prompt. Quindi, è possibile salvare la funzione nel 
    profilo di Windows PowerShell.

   
  Funzione Prompt

      La funzione Prompt determina l'aspetto del prompt di Windows 
      PowerShell. Windows PowerShell è fornito con una funzione 
      Prompt incorporata ma è possibile eseguirne l'override e 
      definire una propria funzione Prompt.


      La funzione Prompt ha la sintassi seguente:

	  function prompt { <corpo-funzione> }


      La funzione Prompt deve restituire un oggetto, in genere una 
      stringa. Si consiglia di restituire una stringa o un oggetto 
      formattato come una stringa. La stringa deve essere contenuta 
      in una riga di 80 caratteri.


      Ad esempio:

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

  
      Come tutte le funzioni, la funzione Prompt viene archiviata 
      nell'unità Function:. Per visualizzare il codice nella funzione 
      Prompt corrente, digitare:

	  (get-item function:prompt).definition


      Questo comando utilizza il cmdlet Get-Item per visualizzare la 
      voce Prompt nell'unità Function:. Quindi, utilizza la notazione 
      con punto per visualizzare il valore della proprietà Definition 
      della funzione Prompt. 

    
  Prompt predefinito 

      Il prompt predefinito di Windows PowerShell è il seguente:

	  PS>


      Questo prompt viene visualizzato solo quando la funzione prompt 
      genera un errore o quando la funzione prompt non restituisce 
      una stringa o un oggetto.

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


      Poiché Windows PowerShell è fornito con un prompt incorporato, 
      non viene normalmente visualizzato il prompt predefinito se non 
      si scrive la propria funzione prompt.


  Prompt incorporato
    
 
      Windows PowerShell include una funzione prompt incorporata che 
      crea i prompt comuni. La funzione prompt incorporata è la seguente:

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

              else { '' }) + 'PS ' + $(Get-Location) `

              + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> ' 
          } 


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

	  [DBG] PS C:\ps-test>
	
     
      Se $PSDebugContext non è compilata, la funzione aggiunge "PS" 
      al prompt e utilizza il cmdlet Get-Location per ottenere il 
      percorso corrente della directory di file system. Quindi, 
      aggiunge una parentesi angolare destra (>).
           
	  PS C:\ps-test>	


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


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

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


      Il cmdlet Enter-PSSession antepone il nome del computer remoto 
      alla funzione Prompt corrente. Quando si utilizza 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 di Windows PowerShell e altre shell 
      possono presentare i loro prompt dei comandi personalizzati.


      Per ulteriori informazioni sulle variabili automatiche 
      $PSDebugContext e $NestedPromptLevel, vedere about_Automatic_Var
      iables.
 	

  Personalizzazione del prompt

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

      Per scrivere una funzione prompt, digitare quanto segue:

	  function prompt { }


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


      Ad esempio, il prompt include il nome del computer:

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


      Nel computer Server01, il prompt è analogo al seguente:

	  PS [Server01] >


      La funzione prompt seguente include la data e l'ora correnti:

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


      Il prompt è analogo al seguente:

	  01/01/2008 17:49:47>


      È anche possibile modificare la funzione Prompt predefinita:


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

              else { '' }) + "$(get-date)" `

              + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> ' 
          } 

  
      Ad esempio, la funzione Prompt modificata seguente aggiunge 
      "[ADMIN]:" al prompt di Windows PowerShell incorporato quando 
      Windows PowerShell viene aperto tramite 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 tramite l'opzione "Esegui 
      come amministratore", viene visualizzato un prompt analogo al 
      seguente:
                
	  [ADMIN]: PS C:\ps-test>


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

          function prompt
          {
             # Il segno chiocciola crea una matrice in caso sia 
             presente un solo elemento di cronologia.
             $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 utilizza i cmdlet Write-Host e Get-Random 
      per creare un prompt che modifica il colore in modo casuale. 
      Poiché Write-Host scrive nell'applicazione host corrente ma non 
      restituisce un oggetto, questa funzione include un'istruzione 
      Return. Senza di essa , Windows PowerShell utilizza il prompt 
      predefinito "PS>".

          function prompt
           {
              $color = get-random -min 1 -max 16
              write-host ("PS " + $(get-location) +">") -nonewline -foregroundcolor $color
              return " "
          }


  Salvataggio del prompt
	
      Come qualsiasi funzione, la funzione Prompt si applica solo 
      alla sessione corrente. Per salvare la funzione Prompt per le 
      sessioni future, aggiungerla ai profili di Windows PowerShell. 
      Per ulteriori 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




Argomenti della Guida