THEMA
    about_Prompts

KURZBESCHREIBUNG
    Beschreibt die Prompt-Funktion und veranschaulicht, wie eine 
    benutzerdefinierte Prompt-Funktion erstellt wird.

  
DETAILBESCHREIBUNG
    Die Windows PowerShell-Eingabeaufforderung gibt an, dass Windows 
    PowerShell bereit ist, einen Befehl auszuführen: 

	PS C:\>


    Die Windows PowerShell-Eingabeaufforderung wird von der 
    Prompt-Funktion bestimmt. Sie können die Eingabeaufforderung 
    anpassen, indem Sie eine eigene Prompt-Funktion erstellen. 
    Anschließend können Sie die Funktion im Windows PowerShell-Profil 
    speichern.

   
  Prompt-Funktion

      Die Prompt-Funktion bestimmt die Darstellung der Windows PowerShell-
      Eingabeaufforderung. Windows PowerShell verfügt über eine integrierte 
      Prompt-Funktion. Diese kann jedoch überschrieben werden, indem eine 
      eigene Prompt-Funktion definiert wird.


      Die Prompt-Funktion hat folgende Syntax:

	  function prompt { <Funktionstext> }


      Die Prompt-Funktion muss ein Objekt zurückgeben, in der Regel 
      ist dies eine Zeichenfolge. Es wird empfohlen, eine 
      Zeichenfolge oder ein Objekt zurückzugeben, das als 
      Zeichenfolge formatiert ist. Die Zeichenfolge sollte in eine 
      Zeile mit 80 Zeichen Länge passen.


      Beispiel:

	  PS C:\> function prompt {"Hallo, Welt > "}
          Hallo, Welt > 

  
      Wie alle Funktionen wird auch die Prompt-Funktion im Laufwerk 
      "Function:" gespeichert. Um den Code in der aktuellen 
      Prompt-Funktion anzuzeigen, geben Sie Folgendes ein:

	  (get-item function:prompt).definition


      Dieser Befehl verwendet das Cmdlet "Get-Item", um das 
      Eingabeaufforderungselement im Laufwerk "Function:" anzuzeigen. 
      Anschließend wird der Wert der Definition-Eigenschaft für die 
      Prompt-Funktion mit der punktierten Notation angezeigt. 

    
  Standardeingabeaufforderung 

      Die Standardeingabeaufforderung von Windows PowerShell lautet 
      wie folgt:

	  PS>


      Diese Eingabeaufforderung wird nur angezeigt, wenn die 
      prompt-Funktion einen Fehler generiert oder keine Zeichenfolge 
      oder kein Objekt zurückgibt.

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


      Da Windows PowerShell über eine integrierte Eingabeaufforderung 
      verfügt, wird die Standardeingabeaufforderung normalerweise 
      nicht angezeigt, solange Sie keine eigene prompt-Funktion schreiben.


  Integrierte Eingabeaufforderung
    
 
      Windows PowerShell enthält eine integrierte prompt-Funktion 
      ein, mit der die bekannten Eingabeaufforderungen erstellt 
      werden. Die integrierte prompt-Funktion lautet wie folgt:

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

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

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


      Die Funktion bestimmt mit dem Cmdlet "Test-Path", ob die 
      automatische Variable "$PSDebugContext" aufgefüllt wird. Wenn 
      $PSDebugContext aufgefüllt wird, wird der Debugmodus verwendet, 
      und der Eingabeaufforderung wird "[DBG]" hinzugefügt, wie 
      nachfolgend veranschaulicht:

	  [DBG] PS C:\ps-test>
	
     
      Wenn $PSDebugContext nicht aufgefüllt wird, fügt die Funktion der 
      Eingabeaufforderung "PS" hinzu. Außerdem ruft die Funktion mit dem 
      Cmdlet "Get-Location" den aktuellen Speicherort im Dateisystemverzeich
      nis ab. Anschließend wird eine schließende spitze Klammer (>) 
      hinzugefügt. 
      Beispiel: 

	  PS C:\ps-test>	


      In einer geschachtelten Eingabeaufforderung werden der 
      Eingabeaufforderung von der Funktion zwei spitze Klammern (>>) 
      hinzugefügt. (Bei einer geschachtelten Eingabeaufforderung 
      weist die automatische Variable "$NestedPromptLevel" einen Wert 
      größer als 1 auf.)


      Wenn Sie beispielsweise in einer geschachtelten Eingabeauffor-
      derung debuggen, sieht die Eingabeaufforderung ungefähr wie folgt aus:

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


      Das Cmdlet "Enter-PSSession" stellt den Namen des 
      Remotecomputers der aktuellen Prompt-Funktion voran. Wenn Sie 
      mit dem Cmdlet "Enter-PSSession" eine Sitzung mit einem 
      Remotecomputer starten, ändert sich die Eingabeaufforderung und 
      enthält den Namen des Remotecomputers. Beispiel:

          PS Hallo, Welt> Enter-PSSession Server01

          [Server01]: PS Hallo, Welt>


      Andere Windows PowerShell-Hostanwendungen und alternative 
      Shells weisen möglicherweise eigene benutzerdefinierte 
      Eingabeaufforderungen auf.


      Weitere Informationen über die automatische Variable 
      "$PSDebugContext" und die automatische Variable 
      "$NestedPromptLevel" finden Sie unter "about_Automatic_Variables".
 	

  Anpassen der Eingabeaufforderung

      Um die Eingabeaufforderung anzupassen, schreiben Sie eine neue 
      Prompt-Funktion. Die Funktion ist nicht geschützt, sie kann 
      daher überschrieben werden. 
 

      Um eine prompt-Funktion zu schreiben, geben Sie Folgendes ein:

	  function prompt { }


      Geben Sie anschließend zwischen den geschweiften Klammern die 
      Befehle oder die Zeichenfolge ein, mit denen die Eingabeaufforde-
      rung erstellt wird.


      Die folgende Eingabeaufforderung enthält beispielsweise den 
      Computernamen:

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


      Die Eingabeaufforderung auf dem Computer "Server01" sieht in 
      etwa wie folgt aus:

	  PS [Server01] >


      Die folgende prompt-Funktion enthält das aktuelle Datum und die 
      aktuelle Uhrzeit:

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


      Die Eingabeaufforderung sieht ähnlich wie die folgende 
      Eingabeaufforderung aus:

	  01/01/2008 17:49:47>


      Sie können auch die Prompt-Standardfunktion ändern:


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

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

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

  
      Die folgende geänderte Prompt-Funktion fügt der integrierten 
      Windows PowerShell-Eingabeaufforderung z. B. "[ADMIN]:" hinzu, 
      wenn Windows PowerShell mit der Option "Als Administrator 
      ausführen" geöffnet wird:
    
          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) { '>>' }) + '> ' 
          }



      Wenn Sie Windows PowerShell mit der Option "Als Administrator 
      ausführen" starten, wird eine Eingabeaufforderung ähnlich der 
      folgenden angezeigt:
                
	  [ADMIN]: PS C:\ps-test>


      Die folgende Prompt-Funktion zeigt die Verlaufs-ID des nächsten 
      Befehls an. Mit dem Cmdlet "Get-History" können Sie den 
      Befehlsverlauf anzeigen.  

          function prompt
          {
             # Das @-Zeichen erstellt ein Array, falls nur ein 
             Verlaufselement vorhanden ist.
             $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 >"
          }



      Die folgende Eingabeaufforderung erstellt mithilfe des Cmdlets 
      "Write-Host" und des Cmdlets "Get-Random" eine Eingabeaufforderung, 
      deren Farbe sich zufällig ändert. Da Write-Host in die 
      aktuelle Hostanwendung schreibt, jedoch kein Objekt zurückgibt, 
      enthält diese Funktion eine Return-Anweisung. Fehlt diese, 
      verwendet Windows PowerShell die Standardeingabeaufforderung "PS>".

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


  Speichern der Eingabeaufforderung
	
      Wie alle Funktionen wirkt sich die Prompt-Funktion nur auf die 
      aktuelle Sitzung aus. Fügen Sie die Prompt-Funktion den Windows 
      PowerShell-Profilen hinzu, um sie für zukünftige Sitzungen zu 
      speichern. Weitere Informationen zu Profilen finden Sie unter 
      "about_Profiles".


SIEHE AUCH
    Get-Location
    Enter-PSSession
    Get-History
    Get-Random
    Write-Host
    about_Profiles
    about_Functions
    about_Scopes
    about_Debuggers
    about_Automatic_Variables




Inhaltsverzeichnis