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