Beschreibt die Prompt-Funktion und veranschaulicht, wie eine (about_prompts)
# 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
C:\Windows>powershell get-help about_properties -full
ColorConsole [Version 1.7.1000] PowerShell 2.0-Export
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2014 Microsoft Corporation.
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
C:\Windows>powershell get-help about_properties -full
ColorConsole [Version 1.7.1000] PowerShell 2.0-Export
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2014 Microsoft Corporation.