- 30.11.2017
- 7 Minuten zu lesen
-
- S
- s
- x
- q
- Kurzbeschreibung
- Lange Beschreibung
- Die Profildateien
- Die Variable $PROFILE
- So erstellen Sie ein Profil
- So bearbeiten Sie ein Profil
- Wie Sie ein Profil auswählen
- Wie Sie ein Profil verwenden
- Wie Sie ein Profil starten
- Fügen Sie Befehle hinzu, die das Öffnen Ihres Profils erleichtern
- Hinzufügen einer Funktion, die die Aliase für jedes Cmdlet auflistet
- Anpassen der Konsole
- Hinzufügen einer angepassten PowerShell-Eingabeaufforderung
- Der NoProfile-Parameter
- Profile und Ausführungsrichtlinie
- Profile und Remotesitzungen
- Siehe auch
Kurzbeschreibung
Beschreibt, wie man ein PowerShell-Profil erstellt und verwendet.
Lange Beschreibung
Sie können ein PowerShell-Profil erstellen, um Ihre Umgebung anzupassen und jeder PowerShell-Sitzung, die Sie starten, sitzungsspezifische Elemente hinzuzufügen.
Ein PowerShell-Profil ist ein Skript, das beim Start von PowerShell ausgeführt wird. Sie können das Profil als Anmeldeskript verwenden, um die Umgebung anzupassen. Sie können Befehle, Aliase, Funktionen, Variablen, Snap-Ins, Module und PowerShell-Laufwerke hinzufügen. Sie können auch andere sitzungsspezifische Elemente zu Ihrem Profil hinzufügen, damit sie in jeder Sitzung verfügbar sind, ohne sie importieren oder neu erstellen zu müssen.
PowerShell unterstützt mehrere Profile für Benutzer und Hostprogramme. Sie erstellt die Profile jedoch nicht für Sie. In diesem Thema werden die Profile beschrieben, und es wird erläutert, wie Sie Profile auf Ihrem Computer erstellen und verwalten.
Es wird erklärt, wie Sie den NoProfile-Parameter der PowerShell-Konsole (PowerShell.exe) verwenden, um PowerShell ohne Profile zu starten. Außerdem wird erklärt, wie sich die PowerShell-Ausführungsrichtlinie auf Profile auswirkt.
Die Profildateien
PowerShell unterstützt mehrere Profildateien. Außerdem können PowerShell-Hostprogramme ihre eigenen hostspezifischen Profile unterstützen.
Die PowerShell-Konsole unterstützt zum Beispiel die folgenden Basisprofildateien. Die Profile sind in der Rangfolge aufgelistet. Das erste Profil hat den höchsten Vorrang.
Beschreibung | Pfad |
---|---|
Alle Benutzer, alle Hosts | $PSHOME\Profile.ps1 |
Alle Benutzer, aktueller Host | $PSHOME\Microsoft.PowerShell_profile.ps1 |
Aktueller Benutzer, alle Hosts | $Home\Dokumente\PowerShell\Profile.ps1 |
Aktueller Benutzer, Aktueller Host | $Home\Documents\PowerShell\ Microsoft.PowerShell_profile.ps1 |
Die Profilpfade enthalten die folgenden Variablen:
- Die
$PSHOME
-Variable, die das Installationsverzeichnis fürPowerShell speichert - Die
$Home
-Variable, die das Home-Verzeichnis des aktuellen Benutzers speichert
Außerdem können andere Programme, die PowerShell hosten, ihre eigenen Profile unterstützen. Visual Studio Code unterstützt beispielsweise die folgenden hostspezifischen Profile.
Beschreibung | Pfad |
---|---|
Alle Benutzer, aktueller Host | $PSHOME\Microsoft.VSCode_profile.ps1 |
Aktueller Benutzer, Aktueller Host | $Home\Dokumente\PowerShell\ Microsoft.VSCode_profile.ps1 |
In der PowerShell-Hilfe ist das Profil „Aktueller Benutzer, aktueller Host“ das Profil, das am häufigsten als „Ihr PowerShell-Profil“ bezeichnet wird.
Die Variable $PROFILE
Die automatische Variable $PROFILE
speichert die Pfade zu den PowerShell-Profilen, die in der aktuellen Sitzung verfügbar sind.
Um einen Profilpfad anzuzeigen, zeigen Sie den Wert der Variablen $PROFILE
an. Sie können auch die Variable $PROFILE
in einem Befehl verwenden, um einen Pfad darzustellen.
Die Variable $PROFILE
speichert den Pfad zum Profil „Aktueller Benutzer, aktueller Host“. Die anderen Profile werden in den Noteneigenschaften der $PROFILE
Variablen gespeichert.
Die $PROFILE
Variable hat beispielsweise die folgenden Werte in der WindowsPowerShell-Konsole.
Beschreibung | Name |
---|---|
Aktueller Benutzer, aktueller Host | $PROFILE |
Aktueller Benutzer, Aktueller Host | $PROFILE.CurrentUserCurrentHost |
Aktueller Benutzer, Alle Hosts | $PROFILE.CurrentUserAllHosts |
Alle Benutzer, Aktueller Host | $PROFILE.AllUsersCurrentHost |
Alle Benutzer, alle Hosts | $PROFILE.AllUsersAllHosts |
Da sich die Werte der $PROFILE
-Variable für jeden Benutzer und in jeder Hostanwendung ändern, stellen Sie sicher, dass Sie die Werte der Profilvariablen in jeder PowerShell-Hostanwendung anzeigen, die Sie verwenden.
Um die aktuellen Werte der Variablen $PROFILE
anzuzeigen, geben Sie ein:
$PROFILE | Get-Member -Type NoteProperty
Sie können die Variable $PROFILE
in vielen Befehlen verwenden. Der folgende Befehl öffnet beispielsweise das Profil „Aktueller Benutzer, aktueller Host“ in Notepad:
notepad $PROFILE
Der folgende Befehl ermittelt, ob auf dem lokalen Computer ein Profil „Alle Benutzer, alle Hosts“ erstellt wurde:
Test-Path -Path $PROFILE.AllUsersAllHosts
So erstellen Sie ein Profil
Um ein PowerShell-Profil zu erstellen, verwenden Sie das folgende Befehlsformat:
if (!(Test-Path -Path <profile-name>)) { New-Item -ItemType File -Path <profile-name> -Force}
Um beispielsweise ein Profil für den aktuellen Benutzer in der aktuellenPowerShell-Hostanwendung zu erstellen, verwenden Sie den folgenden Befehl:
if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force}
In diesem Befehl verhindert die Anweisung If
, dass Sie ein vorhandenes Profil überschreiben. Ersetzen Sie den Wert des Platzhalters <Profilpfad> durch den Pfad zu der Profildatei, die Sie erstellen möchten.
Hinweis
Um „Alle Benutzer“-Profile in Windows Vista und späteren Versionen von Windows zu erstellen, starten Sie PowerShell mit der Option Als Administrator ausführen.
So bearbeiten Sie ein Profil
Sie können jedes PowerShell-Profil in einem Texteditor wie Notepad öffnen.
Um das Profil des aktuellen Benutzers in der aktuellen PowerShell-Hostanwendung in Notepad zu öffnen, geben Sie ein:
notepad $PROFILE
Um andere Profile zu öffnen, geben Sie den Profilnamen an. Um beispielsweise das Profil für alle Benutzer aller Hostanwendungen zu öffnen, geben Sie ein:
notepad $PROFILE.AllUsersAllHosts
Um die Änderungen zu übernehmen, speichern Sie die Profildatei und starten Sie PowerShell neu.
Wie Sie ein Profil auswählen
Wenn Sie mehrere Hostanwendungen verwenden, legen Sie die Elemente, die Sie in allen Hostanwendungen verwenden, in Ihrem $PROFILE.CurrentUserAllHosts
-Profil ab. Elemente, die für eine Hostanwendung spezifisch sind, wie z. B. ein Befehl, der die Hintergrundfarbe für eine Hostanwendung festlegt, werden in ein Profil aufgenommen, das für diese Hostanwendung spezifisch ist.
Wenn Sie ein Administrator sind, der die PowerShell für viele Benutzer anpasst, befolgen Sie diese Richtlinien:
- Speichern Sie die allgemeinen Elemente im
$PROFILE.AllUsersAllHosts
-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 unbedingt die Dokumentation der Hostanwendung auf spezielle Implementierungen von PowerShell-Profilen.
Wie Sie ein Profil verwenden
Viele der in PowerShell erstellten Elemente und die meisten ausgeführten Befehle wirken sich nur auf die aktuelle Sitzung aus. Wenn Sie die Sitzung beenden, werden die Elemente gelöscht.
Zu den sitzungsspezifischen Befehlen und Elementen gehören Variablen, Einstellungsvariablen, Aliase, Funktionen, Befehle (mit Ausnahme vonSet-ExecutionPolicy) und PowerShell-Module, die Sie der Sitzung hinzufügen.
Um diese Elemente zu speichern und sie in allen zukünftigen Sitzungen verfügbar zu machen, fügen Sie sie einem PowerShell-Profil hinzu.
Eine weitere häufige Verwendung von Profilen ist das Speichern häufig verwendeter Funktionen, Aliase und Variablen. Wenn Sie die Elemente in einem Profil speichern, können Sie sie in jeder anwendbaren Sitzung verwenden, ohne sie neu zu erstellen.
Wie Sie ein Profil starten
Wenn Sie die Profildatei öffnen, ist sie leer. Sie können sie jedoch mit Variablen, Aliasen und Befehlen füllen, die Sie häufig verwenden.
Hier sind einige Vorschläge für den Anfang.
Fügen Sie Befehle hinzu, die das Öffnen Ihres Profils erleichtern
Dies ist besonders nützlich, wenn Sie ein anderes Profil als das Profil „Aktueller Benutzer, aktueller Host“ verwenden. Fügen Sie beispielsweise den folgenden Befehl hinzu:
function Pro {notepad $PROFILE.CurrentUserAllHosts}
Hinzufügen einer Funktion, die die Aliase für jedes Cmdlet auflistet
function Get-CmdletAlias ($cmdletname) { Get-Alias | Where-Object -FilterScript {$_.Definition -like "$cmdletname"} | Format-Table -Property Definition, Name -AutoSize}
Anpassen der Konsole
function Color-Console { $Host.ui.rawui.backgroundcolor = "white" $Host.ui.rawui.foregroundcolor = "black" $hosttime = (Get-ChildItem -Path $PSHOME\PowerShell.exe).CreationTime $hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)" $Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)" Clear-Host}Color-Console
Hinzufügen einer angepassten PowerShell-Eingabeaufforderung
function Prompt{$env:COMPUTERNAME + "\" + (Get-Location) + "> "}
Weitere Informationen zur PowerShell-Eingabeaufforderung finden Sie unterabout_Prompts.
Der NoProfile-Parameter
Um PowerShell ohne Profile zu starten, verwenden Sie den NoProfile-Parameter vonPowerShell.exe, dem Programm, das PowerShell startet.
Um zu beginnen, öffnen Sie ein Programm, das PowerShell starten kann, z. B. Cmd.exe oderPowerShell selbst. Sie können auch das Dialogfeld Ausführen in Windows verwenden.
Tippen Sie:
PowerShell -NoProfile
Für eine vollständige Liste der Parameter von PowerShell.exe geben Sie ein:
PowerShell -?
Profile und Ausführungsrichtlinie
Die Ausführungsrichtlinie von PowerShell bestimmt zum Teil, ob Sie Skripts ausführen und Konfigurationsdateien, einschließlich der Profile, laden können. Die Richtlinie „Eingeschränkte Ausführung“ ist die Standardeinstellung. Sie verhindert die Ausführung aller Skripts, einschließlich der Profile. Wenn Sie die Richtlinie „Eingeschränkt“ verwenden, wird das Profil nicht ausgeführt, und sein Inhalt wird nicht angewendet.
Mit dem Befehl Set-ExecutionPolicy
können Sie Ihre Ausführungsrichtlinie festlegen und ändern. Er ist einer der wenigen Befehle, die in allen PowerShell-Sitzungen gelten, da der Wert in der Registrierung gespeichert wird. Sie müssen ihn nicht festlegen, wenn Sie die Konsole öffnen, und Sie müssen keinen Set-ExecutionPolicy
-Befehl in Ihrem Profil speichern.
Profile und Remotesitzungen
PowerShell-Profile werden nicht automatisch in Remotesitzungen ausgeführt, sodass die von den Profilen hinzugefügten Befehle nicht in der Remotesitzung vorhanden sind. Außerdem wird die automatische Variable $PROFILE
in Remotesitzungen nicht ausgefüllt.
Um ein Profil in einer Sitzung auszuführen, verwenden Sie das Invoke-Commandcmdlet.
Der folgende Befehl führt beispielsweise das Profil „Aktueller Benutzer, aktueller Host“ vom lokalen Computer in der Sitzung in $s
aus.
Invoke-Command -Session $s -FilePath $PROFILE
Der folgende Befehl führt das Profil „Aktueller Benutzer, aktueller Host“ vom Remotecomputer in der Sitzung in $s
aus. Da die Variable $PROFILE
nicht ausgefüllt ist, verwendet der Befehl den expliziten Pfad zum Profil. Wir verwenden den Operator dotsourcing, damit das Profil im aktuellen Bereich auf dem Remote-Computer und nicht in seinem eigenen Bereich ausgeführt wird.
Invoke-Command -Session $s -ScriptBlock { . "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}
Nach Ausführung dieses Befehls sind die Befehle, die das Profil der Sitzung hinzufügt, in $s
verfügbar.
Siehe auch
über_Automatic_Variables
über_Funktionen
über_Prompts
über_Ausführungsrichtlinien
über_Signieren
über_Remote
über_Bereiche
Set-ExecutionPolicy