Sie sind auf Seite 1von 5

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 auszufhren:
PS C:\>
Die Windows PowerShell-Eingabeaufforderung wird von der
Prompt-Funktion bestimmt. Sie knnen die Eingabeaufforderung
anpassen, indem Sie eine eigene Prompt-Funktion erstellen.
Anschlieend knnen Sie die Funktion im Windows PowerShell-Profil
speichern.

Prompt-Funktion
Die Prompt-Funktion bestimmt die Darstellung der Windows PowerShell-
Eingabeaufforderung. Windows PowerShell verfgt 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 zurckgeben, in der Regel
ist dies eine Zeichenfolge. Es wird empfohlen, eine
Zeichenfolge oder ein Objekt zurckzugeben, das als
Zeichenfolge formatiert ist. Die Zeichenfolge sollte in eine
Zeile mit 80 Zeichen Lnge 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.
Anschlieend wird der Wert der Definition-Eigenschaft fr 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 zurckgibt.
PS C:\> function prompt {$null}
PS>
Da Windows PowerShell ber eine integrierte Eingabeaufforderung
verfgt, wird die Standardeingabeaufforderung normalerweise
nicht angezeigt, solange Sie keine eigene prompt-Funktion schreiben.
Integrierte Eingabeaufforderung


Windows PowerShell enthlt 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" aufgefllt wird. Wenn
$PSDebugContext aufgefllt wird, wird der Debugmodus verwendet,
und der Eingabeaufforderung wird "[DBG]" hinzugefgt, wie
nachfolgend veranschaulicht:
[DBG] PS C:\ps-test>

Wenn $PSDebugContext nicht aufgefllt wird, fgt die Funktion der
Eingabeaufforderung "PS" hinzu. Auerdem ruft die Funktion mit dem
Cmdlet "Get-Location" den aktuellen Speicherort im Dateisystemverzeich
nis ab. Anschlieend wird eine schlieende spitze Klammer (>)
hinzugefgt.
Beispiel:
PS C:\ps-test>
In einer geschachtelten Eingabeaufforderung werden der
Eingabeaufforderung von der Funktion zwei spitze Klammern (>>)
hinzugefgt. (Bei einer geschachtelten Eingabeaufforderung
weist die automatische Variable "$NestedPromptLevel" einen Wert
grer als 1 auf.)
Wenn Sie beispielsweise in einer geschachtelten Eingabeauffor-
derung debuggen, sieht die Eingabeaufforderung ungefhr 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
enthlt den Namen des Remotecomputers. Beispiel:
PS Hallo, Welt> Enter-PSSession Server01
[Server01]: PS Hallo, Welt>
Andere Windows PowerShell-Hostanwendungen und alternative
Shells weisen mglicherweise 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 geschtzt, sie kann
daher berschrieben werden.

Um eine prompt-Funktion zu schreiben, geben Sie Folgendes ein:
function prompt { }
Geben Sie anschlieend zwischen den geschweiften Klammern die
Befehle oder die Zeichenfolge ein, mit denen die Eingabeaufforde-
rung erstellt wird.
Die folgende Eingabeaufforderung enthlt 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 enthlt 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 knnen auch die Prompt-Standardfunktion ndern:
function prompt
{
$(if (test-path variable:/PSDebugContext) { '[DBG]: ' }
else { '' }) + "$(get-date)" `
+ $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> '
}

Die folgende genderte Prompt-Funktion fgt der integrierten
Windows PowerShell-Eingabeaufforderung z. B. "[ADMIN]:" hinzu,
wenn Windows PowerShell mit der Option "Als Administrator
ausfhren" geffnet 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
ausfhren" starten, wird eine Eingabeaufforderung hnlich der
folgenden angezeigt:

[ADMIN]: PS C:\ps-test>
Die folgende Prompt-Funktion zeigt die Verlaufs-ID des nchsten
Befehls an. Mit dem Cmdlet "Get-History" knnen 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 zufllig ndert. Da Write-Host in die
aktuelle Hostanwendung schreibt, jedoch kein Objekt zurckgibt,
enthlt 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 -foregroundco
lor $color
return " "
}
Speichern der Eingabeaufforderung
Wie alle Funktionen wirkt sich die Prompt-Funktion nur auf die
aktuelle Sitzung aus. Fgen Sie die Prompt-Funktion den Windows
PowerShell-Profilen hinzu, um sie fr zuknftige 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