THEMA
about_Profiles
KURZBESCHREIBUNG
Beschreibt, wie ein Windows PowerShell-Profil erstellt und
verwendet wird.
DETAILBESCHREIBUNG
Sie können ein Windows PowerShell-Profil erstellen, um die
Umgebung anzupassen und den Windows PowerShell-Sitzungen, die Sie
starten, sitzungsspezifische Elemente hinzuzufügen.
Ein Windows PowerShell-Profil ist ein Skript, das ausgeführt
wird, wenn Windows PowerShell gestartet wird. Sie können das
Profil als Anmeldeskript verwenden, um die Umgebung anzupassen.
Sie können Befehle, Aliase, Funktionen, Variablen, Snap-Ins,
Module und Windows PowerShell-Laufwerke hinzufügen. Sie können
dem Profil weitere sitzungsspezifische Elemente hinzufügen, damit
diese in jeder Sitzung zur Verfügung stehen, ohne sie zuvor
importieren oder erstellen zu müssen.
Windows PowerShell unterstützt mehrere Profile für Benutzer und
Hostprogramme.
Diese werden jedoch nicht für den Benutzer erstellt. In diesem
Thema werden die Profile beschrieben, und es wird beschrieben,
wie Profile auf dem Computer erstellt und verwaltet werden.
Es wird erläutert, wie der NoProfile-Parameter der Windows
PowerShell-Konsole ("PowerShell.exe") verwendet wird, um Windows
PowerShell ohne Profile zu starten.
Außerdem wird erläutert, welche Auswirkungen die Windows
PowerShell-Ausführungsrichtlinie auf Profile hat.
PROFILDATEIEN
Windows PowerShell unterstützt mehrere Profildateien. Windows
PowerShell-Hostprogramme können außerdem eigene hostspezifische
Profile unterstützen.
Die Windows PowerShell-Konsole unterstützt beispielsweise
folgende grundlegende Profildateien. Die Profile werden in der
Rangfolge aufgeführt. Das erste Profil stellt die höchste
Rangfolge dar.
Beschreibung Pfad
----------- ----
Aktueller Benutzer, aktueller Host $Home\[Eigene]Dateien\WindowsPowerShell\Profile.ps1
Aktueller Benutzer, alle Hosts $Home\[Eigene]Dateien\Profile.ps1
Alle Benutzer, aktueller Host $PsHome\Microsoft.PowerShell_profile.ps1
Alle Benutzer, alle Hosts $PsHome\Profile.ps1
Die Profilpfade enthalten folgende Variablen:
- Die Variable "$PsHome", in der das Installationsverzeichnis
für Windows PowerShell gespeichert wird.
- Die Variable "$Home", in der das Stammverzeichnis des
aktuellen Benutzers gespeichert wird.
Außerdem können andere Programme, die Windows PowerShell hosten,
eigene Profile unterstützen. Beispielsweise unterstützt die
Windows PowerShell Integrated Scripting Environment [ISE])
folgende hostspezifische Profile:
Beschreibung Pfad
----------- -----
Aktueller Benutzer, $Home\[Eigene ]Dateien\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
aktueller Host
Alle Benutzer, aktueller Host $PsHome\Microsoft.PowerShellISE_profile.ps1
Das Profil "Aktueller Benutzer, aktueller Host" wird in der Hilfe
von Windows PowerShell häufig auch als "das Windows
PowerShell-Profil" bezeichnet.
DIE VARIABLE "$PROFILE"
In der Variablen "$Profile" werden die Pfade für die Windows
PowerShell-Profile gespeichert, die in der aktuellen Sitzung
verfügbar sind.
Um einen Profilpfad anzuzeigen, zeigen Sie den Wert der Variablen
"$Profile" an. Sie können die Variable "$Profile" auch in einem
Befehl verwenden, um einen Pfad darzustellen.
In der Variablen "$Profile" wird der Pfad für das Profil
"Aktueller Benutzer, Aktueller Host" gespeichert. Die anderen
Profile werden in den Notizeigenschaften der Variablen "$profile"
gespeichert.
Beispielsweise weist die Variable "$Profile" folgende Werte in
der Windows PowerShell-Konsole auf:
Name Beschreibung
----------- -----------
$Profile Aktueller Benutzer, aktueller Host
$Profile.CurrentUserCurrentHost Aktueller Benutzer, aktueller Host
$Profile.CurrentUserAllHosts Aktueller Benutzer, alle Hosts
$Profile.AllUsersCurrentHost Alle Benutzer, aktueller Host
$Profile.AllUsersAllHosts Alle Benutzer, alle Hosts
Vergewissern Sie sich, dass die Werte der Profilvariablen in der
jeweiligen Windows PowerShell-Hostanwendung angezeigt werden, die
Sie verwenden, da sich die Werte der Variablen "$Profile" für
jeden Benutzer und in jeder Hostanwendung ändern.
Geben Sie Folgendes ein, um die aktuellen Werte der Variablen
"$Profile" anzuzeigen:
$profile | get-member -type noteproperty
Die Variable "$Profile" kann in zahlreichen Befehlen verwendet
werden. Beispielsweise wird mit folgendem Befehl das Profil
"Aktueller Benutzer, Aktueller Host" in Editor geöffnet:
notepad $profile
Mit dem folgenden Befehl wird bestimmt, ob das Profil "Alle
Benutzer, Alle Hosts" auf dem lokalen Computer erstellt wurde:
test-path $profile.AllUsersAllHosts
SO ERSTELLEN SIE EIN PROFIL
Um ein Windows PowerShell-Profil zu erstellen, verwenden Sie das
folgende Befehlsformat:
if (!(test-path <Profilname>))
{new-item -type file -path <Profilname> -force}
Um ein Profil für den aktuellen Benutzer in der aktuellen Windows
PowerShell-Hostanwendung zu erstellen, verwenden Sie
beispielsweise folgenden Befehl:
if (!(test-path $profile))
{new-item -type file -path $profile -force}
In diesem Befehl verhindert die If-Anweisung, dass ein
vorhandener Platzhalter mit dem Pfad überschrieben wird. Ersetzen
Sie den Wert des Platzhalters <profile-path> durch den Pfad zu
dem Profil, das Sie erstellen möchten.
Hinweis: Starten Sie Windows PowerShell mit der Option "Als
Administrator ausführen", wenn Sie Profile für "Alle Benutzer"
unter Windows Vista und höheren Versionen von Windows erstellen
möchten.
SO BEARBEITEN SIE EIN PROFIL
Windows PowerShell-Profile können in einem Text-Editor wie Editor
geöffnet werden.
Um das Profil des aktuellen Benutzers in der aktuellen Windows
PowerShell-Hostanwendung in Editor zu öffnen, geben Sie Folgendes ein:
notepad $profile
Wenn Sie andere Profile öffnen möchten, geben Sie den Profilnamen
an. Geben Sie beispielsweise Folgendes ein, um das Profil für
alle Benutzer aller Hostanwendungen zu öffnen:
notepad $profile.AllUsersAllHosts
Um die Änderungen zu übernehmen, speichern Sie die Profildatei,
und starten Sie dann Windows PowerShell neu.
SO WÄHLEN SIE EIN PROFIL AUS
Fügen Sie dem $Profile.CurrentUserAllHosts-Profil die Elemente
hinzu, die in allen Hostanwendungen verwendet werden, wenn Sie
mehrere Hostanwendungen verwenden.
Fügen Sie die Elemente, die für eine Hostanwendung spezifisch
sind, beispielsweise ein Befehl, mit dem die Hintergrundfarbe für
eine Hostanwendung festgelegt wird, einem Profil hinzu, das für
diese Hostanwendung spezifisch ist.
Administratoren, die Windows PowerShell für viele Benutzer
anpassen, sollten folgende Richtlinien beachten:
-- Speichern Sie die allgemeinen Elemente im $profile.AllUsers
AllHosts-Profil.
-- Speichern Sie Elemente, die für eine Hostanwendung
spezifisch sind, in $profile.AllUsersCurrentHost-Profilen,
die für die Hostanwendung spezifisch sind.
-- Speichern Sie Elemente für bestimmte Benutzer in den
benutzerspezifischen Profilen.
Überprüfen Sie die Dokumentation der Hostanwendung auf besondere
Implementierungen von Windows PowerShell-Profilen.
SO VERWENDEN SIE EIN PROFIL
Viele Elemente, die in Windows PowerShell erstellt werden sowie
die meisten Befehle, die ausgeführt werden, wirken sich nur auf
die aktuelle Sitzung aus. Wenn Sie die Sitzung beenden, werden
die Elemente gelöscht.
Die sitzungsspezifischen Befehle und Elemente umfassen Variablen,
Einstellungsvariablen, Aliase, Funktionen, Befehle (außer
Set-ExecutionPolicy) und Windows PowerShell-Snap-Ins, die Sie der
Sitzung hinzufügen.
Um diese Elemente zu speichern und in allen zukünftigen Sitzungen
verfügbar zu machen, fügen Sie sie einem Windows PowerShell-Profil
hinzu.
Profile werden oft auch dazu genutzt, um häufig verwendete
Funktionen, Aliase und Variablen zu speichern. Elemente, die in
einem Profil gespeichert werden, können in jeder betreffenden
Sitzung verwendet werden, ohne sie erneut erstellen zu müssen.
SO STARTEN SIE EIN PROFIL
Wenn Sie die Profildatei öffnen, weist diese keinen Inhalt auf.
Sie können die Datei jedoch mit den Variablen, Aliasen und
Befehlen füllen, die Sie häufig verwenden.
Nachfolgend finden Sie einige Vorschläge, um Ihnen den Einstieg
zu erleichtern.
-- Fügen Sie Befehle hinzu, die das Öffnen des Profils
vereinfachen. Dies ist besonders hilfreich, wenn Sie ein
anderes Profil als "Aktueller Benutzer, Aktueller Host"
verwenden. Fügen Sie beispielsweise folgenden Befehl hinzu:
function pro {notepad $profile.CurrentUserAllHosts}
-- Fügen Sie eine Funktion hinzu, mit der die Windows
PowerShell-Hilfe in einer kompilierten HTML-Hilfe-Datei
(".chm") geöffnet wird.
function Get-CHM
{
(invoke-item $env:windir\help\mui\0409\
WindowsPowerShellHelp.chm)
}
Diese Funktion öffnet die englische Version der CHM-Datei. Sie
können jedoch den Sprachcode (0409) ersetzen, um eine andere
Versionen der CHM-Datei zu öffnen.
-- Fügen Sie eine Funktion hinzu, mit der die Aliase für ein
Cmdlet aufgeführt werden.
function Get-CmdletAlias ($cmdletname)
{
get-alias | Where {$_.definition -like "*$cmdletname*"}| ft Definition, Name -auto
}
-- Fügen Sie einen Add-PsSnapin-Befehl hinzu, um die Windows
PowerShell-Snap-Ins hinzuzufügen, die Sie verwenden.
-- Passen Sie die Konsole an.
function Color-Console
{
$host.ui.rawui.backgroundcolor = "white"
$host.ui.rawui.foregroundcolor = "black"
$hosttime = (dir $pshome\powershell.exe).creationtime
$Host.UI.RawUI.WindowTitle = "Windows PowerShell $hostversion ($hosttime)"
clear-host
}
Color-console
-- Fügen Sie eine benutzerdefinierte Windows PowerShell-Eingabeauf-
forderung hinzu, die den Computernamen und den aktuellen Pfad
enthält.
function prompt
{
$env:computername + "\" + (get-location) + "> "
}
Weitere Informationen über die Windows PowerShell-
Eingabeaufforderung finden Sie unter "about_Prompts".
NOPROFILE-PARAMETER
Um Windows PowerShell ohne Profile zu starten, verwenden Sie den
NoProfile-Parameter des Programms "PowerShell.exe", mit dem
Windows PowerShell gestartet wird.
Öffnen Sie zunächst ein Programm, mit dem Windows PowerShell
gestartet werden kann, beispielsweise "Cmd.exe" oder Windows
PowerShell selbst. Sie können auch das Dialogfeld "Ausführen" in
Windows verwenden.
Geben Sie Folgendes ein:
powershell -noprofile
Eine vollständige Liste der Parameter von "PowerShell.exe"
erhalten Sie mit folgendem Befehl:
powershell -?
PROFILE UND AUSFÜHRUNGSRICHTLINIEN
Die Ausführung von Skripts und das Laden von Konfigurationsdateien
einschließlich Profilen werden teilweise durch die Windows
PowerShell-Ausführungsrichtlinie bestimmt. Standardmäßig wird
die Ausführungsrichtlinie "Restricted" verwendet. Diese
Richtlinie verhindert die Ausführung aller Skripts
einschließlich der Profile. Wenn Sie die Ausführungsrichtlinie
"Restricted" verwenden, wird das Profil nicht ausgeführt, und
der Inhalt wird nicht angewendet.
Mit einem Set-ExecutionPolicy-Befehl wird die Ausführungsrichtlinie
festgelegt und geändert. Dies ist einer der wenigen Befehle,
die sich auf alle Windows PowerShell-Sitzungen auswirken, da der
Wert in der Registrierung gespeichert wird. Der Befehl muss nicht
beim Öffnen der Konsole festgelegt werden, und es muss kein
Set-ExecutionPolicy- Befehl im Profil gespeichert werden.
PROFILE UND REMOTESITZUNGEN
Windows PowerShell-Profile werden nicht automatisch in
Remotesitzungen ausgeführt. Die Befehle, die von den Profilen
hinzugefügt werden, sind daher in der Remotesitzung nicht vorhanden.
Ferner wird die automatische Variable "$profile" nicht in
Remotesitzungen aufgefüllt.
Verwenden Sie das Cmdlet "Invoke-Command", um ein Profil in einer
Sitzung auszuführen.
Beispielsweise wird mit dem folgenden Befehl das
CurrentUserCurrentHost-Profil vom lokalen Computer in der
Sitzung in $s ausgeführt.
invoke-command -session $s -filepath $profile
Beispielsweise wird mit dem folgenden Befehl das
CurrentUserCurrentHost-Profil vom Remotecomputer in der
Sitzung in $s ausgeführt.
Da die Variable "$profile" nicht aufgefüllt wird, verwendet der
Befehl den expliziten Pfad für das Profil.
invoke-command -session $s {invoke-expression
"$home\Dateien\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}
Die Befehle, die der Sitzung vom Profil hinzugefügt werden, sind
nach Ausführen des Befehls in $s verfügbar.
SIEHE AUCH
about_Automatic_Variables
about_Functions
about_Prompts
about_Execution_Policies
about_Signing
about_Remote
Set-ExecutionPolicy