about_Profiles

Kurze Beschreibung

Beschreibt, wie Sie ein PowerShell-Profil erstellen und verwenden.

Lange Beschreibung

Sie können ein PowerShell-Profil erstellen, um Ihre Umgebung anzupassen und um sitzungsspezifische Elemente zu jeder gestarteten PowerShell-Sitzung hinzuzufügen.

Ein PowerShell-Profil ist ein Skript, das ausgeführt wird, wenn 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 PowerShell-Laufwerke hinzufügen. Sie können Ihrem Profil auch weitere sitzungsspezifische Elemente hinzufügen, sodass sie in jeder Sitzung verfügbar sind, ohne sie importieren oder erneut erstellen zu müssen.

PowerShell unterstützt mehrere Profile für Benutzer und Hostprogramme. Sie erstellt jedoch nicht die Profile für Sie. In diesem Thema werden die Profile beschrieben, und es beschreibt, wie Profile auf Ihrem Computer erstellt und verwaltet werden.

Es wird erläutert, wie Sie den NoProfile-Parameter der PowerShell-Konsole (PowerShell.exe) verwenden, um PowerShell ohne Profile zu starten. Außerdem wird die Auswirkung der PowerShell-Ausführungsrichtlinie auf Profile erläutert.

Die Profildateien

PowerShell unterstützt mehrere Profildateien. Außerdem können PowerShell-Hostprogramme ihre eigenen hostspezifischen Profile unterstützen.

Die PowerShell-Konsole unterstützt beispielsweise die folgenden grundlegenden Profildateien. Die Profile werden in der Rangfolge aufgeführt. Das erste Profil hat die höchste Rangfolge.

BESCHREIBUNG `Path`
Alle Benutzer, alle Hosts Windows - $PSHOME\Profile.ps1
Linux – /usr/local/microsoft/powershell/7/profile.ps1
macOS – /usr/local/microsoft/powershell/7/profile.ps1
Alle Benutzer, aktueller Host Windows - $PSHOME\Microsoft.PowerShell_profile.ps1
Linux – /usr/local/microsoft/powershell/7/Microsoft.Powershell_profile.ps1
macOS – /usr/local/microsoft/powershell/7/Microsoft.Powershell_profile.ps1
Aktueller Benutzer, alle Hosts Windows – $Home\[Mein ]Documents\PowerShell\Profile.ps1
Linux – ~/.config/powershell/profile.ps1
macOS – ~/.config/powershell/profile.ps1
Aktueller Benutzer, aktueller Host Windows – $Home\[Mein ]Documents\PowerShell\Microsoft.PowerShell_profile.ps1
Linux – ~/.config/powershell/Microsoft.Powershell_profile.ps1
macOS – ~/.config/powershell/Microsoft.Powershell_profile.ps1

Die Profilpfade umfassen die folgenden Variablen:

  • Die $PSHOME Variable, die das Installationsverzeichnis für PowerShell speichert
  • Die $Home Variable, die das Startverzeichnis des aktuellen Benutzers speichert

Darüber hinaus können andere Programme, die PowerShell hosten, eigene Profile unterstützen. Visual Studio Code unterstützt beispielsweise die folgenden hostspezifischen Profile.

BESCHREIBUNG `Path`
Alle Benutzer, aktueller Host $PSHOME\Microsoft.VSCode_profile.ps1
Aktueller Benutzer, aktueller Host $Home\[Meine ]Dokumente\PowerShell\
Microsoft.VSCode_profile.ps1

In der PowerShell-Hilfe ist das Profil "CurrentUser, Current Host" das Profil, das am häufigsten als "Ihr PowerShell-Profil" bezeichnet wird.

Hinweis

In Windows kann der Speicherort des Ordners "Dokumente" durch Ordnerumleitung oder OneDrive geändert werden. Es wird nicht empfohlen, den Ordner "Dokumente" auf eine Netzwerkfreigabe umzuleiten oder ihn in OneDrive einzufügen. Das Umleiten des Ordners kann dazu führen, dass Ihre Profilskripts fehlschlagen und Module nicht geladen werden.

Die $PROFILE Variable

Die $PROFILE automatische Variable speichert die Pfade zu den PowerShell-Profilen, die in der aktuellen Sitzung verfügbar sind.

Um einen Profilpfad anzuzeigen, zeigen Sie den Wert der $PROFILE Variablen an. Sie können die $PROFILE Variable auch in einem Befehl verwenden, um einen Pfad darzustellen.

Die $PROFILE Variable speichert den Pfad zum Profil "Aktueller Benutzer, Aktueller Host". Die anderen Profile werden in Notizeigenschaften der $PROFILE Variablen gespeichert.

Die Variable weist beispielsweise $PROFILE die folgenden Werte in der Windows PowerShell Konsole auf.

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 Variablen für jeden Benutzer und in jeder Hostanwendung ändern, stellen Sie sicher, dass Sie die Werte der Profilvariablen in jeder von Ihnen verwendeten PowerShell-Hostanwendung anzeigen.

Um die aktuellen Werte der $PROFILE Variablen anzuzeigen, geben Sie Folgendes ein:

$PROFILE | Get-Member -Type NoteProperty

Sie können die $PROFILE Variable in vielen Befehlen verwenden. Der folgende Befehl öffnet beispielsweise das Profil "Aktueller Benutzer, aktueller Host" im Editor:

notepad $PROFILE

Der folgende Befehl bestimmt, ob auf dem lokalen Computer ein Profil "Alle Benutzer, alle Hosts" erstellt wurde:

Test-Path -Path $PROFILE.AllUsersAllHosts

So erstellen Sie ein Profil

Verwenden Sie zum Erstellen eines PowerShell-Profils das folgende Befehlsformat:

if (!(Test-Path -Path <profile-name>)) {
  New-Item -ItemType File -Path <profile-name> -Force
}

Wenn Sie beispielsweise ein Profil für den aktuellen Benutzer in der aktuellen PowerShell-Hostanwendung erstellen möchten, verwenden Sie den folgenden Befehl:

if (!(Test-Path -Path $PROFILE)) {
  New-Item -ItemType File -Path $PROFILE -Force
}

In diesem Befehl verhindert die If Anweisung, dass Sie ein vorhandenes Profil überschreiben. Ersetzen Sie den Wert des <Profilpfadplatzhalters> durch den Pfad zur 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 Text-Editor öffnen, z. B. Editor.

Um das Profil des aktuellen Benutzers in der aktuellen PowerShell-Hostanwendung in Editor zu öffnen, geben Sie Folgendes ein:

notepad $PROFILE

Geben Sie den Profilnamen an, um andere Profile zu öffnen. Wenn Sie beispielsweise das Profil für alle Benutzer aller Hostanwendungen öffnen möchten, geben Sie Folgendes ein:

notepad $PROFILE.AllUsersAllHosts

Um die Änderungen anzuwenden, speichern Sie die Profildatei, und starten Sie PowerShell dann neu.

Auswählen eines Profils

Wenn Sie mehrere Hostanwendungen verwenden, platzieren Sie die Elemente, die Sie in allen Hostanwendungen in Ihrem $PROFILE.CurrentUserAllHosts Profil verwenden. Platzieren Sie Elemente, die für eine Hostanwendung spezifisch sind, z. B. einen Befehl, der die Hintergrundfarbe für eine Hostanwendung festlegt, in einem Profil, das für diese Hostanwendung spezifisch ist.

Wenn Sie ein Administrator sind, der PowerShell für viele Benutzer angepasst, befolgen Sie die folgenden Richtlinien:

  • Speichern der allgemeinen Elemente im $PROFILE.AllUsersAllHosts Profil
  • Speichern von Elementen, die spezifisch für eine Hostanwendung in $PROFILE.AllUsersCurrentHost Profilen sind, die für die Hostanwendung spezifisch sind
  • Speichern von Elementen für bestimmte Benutzer in den benutzerspezifischen Profilen

Überprüfen Sie unbedingt die Hostanwendungsdokumentation für eine spezielle Implementierung von PowerShell-Profilen.

Verwenden eines Profils

Viele der Elemente, die Sie in PowerShell erstellen, und die meisten Befehle, die Sie ausführen, 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 für Set-ExecutionPolicy) und PowerShell-Module, 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 PowerShell-Profil hinzu.

Eine weitere häufige Verwendung für Profile besteht darin, häufig verwendete Funktionen, Aliase und Variablen zu speichern. Wenn Sie die Elemente in einem Profil speichern, können Sie sie in jeder anwendbaren Sitzung verwenden, ohne sie erneut zu erstellen.

So starten Sie ein Profil

Wenn Sie die Profildatei öffnen, ist sie leer. Sie können es jedoch mit den Variablen, Aliasen und Befehlen füllen, die Sie häufig verwenden.

Hier finden Sie einige Vorschläge, um Sie zu beginnen.

Hinzufügen von Befehlen, die es einfach machen, Ihr Profil zu öffnen

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 enthält

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 unter about_Prompts.

Der Parameter "NoProfile"

Um PowerShell ohne Profile zu starten, verwenden Sie den NoProfile-Parameter von PowerShell.exe, das Programm, das PowerShell startet.

Öffnen Sie zunächst ein Programm, das PowerShell starten kann, z. B. Cmd.exe oder PowerShell selbst. Sie können auch das Dialogfeld "Ausführen" in Windows verwenden.

Typ:

PowerShell -NoProfile

Geben Sie eine vollständige Liste der Parameter von PowerShell.exe ein:

PowerShell -?

Profile und Ausführungsrichtlinie

Die PowerShell-Ausführungsrichtlinie bestimmt teilweise, ob Sie Skripts ausführen und Konfigurationsdateien laden können, einschließlich der Profile. Die Richtlinie für die eingeschränkte Ausführung ist die Standardeinstellung. Es verhindert, dass alle Skripts ausgeführt werden, einschließlich der Profile. Wenn Sie die Richtlinie "Eingeschränkt" verwenden, wird das Profil nicht ausgeführt, und der Inhalt wird nicht angewendet.

Eine Set-ExecutionPolicy Befehlsmappe und ändert Ihre Ausführungsrichtlinie. Es handelt sich um einen 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 Befehl in Ihrem Profil speichern Set-ExecutionPolicy .

Profile und Remotesitzungen

PowerShell-Profile werden nicht automatisch in Remotesitzungen ausgeführt, sodass die Befehle, die die Profile hinzufügen, nicht in der Remotesitzung vorhanden sind. Darüber hinaus wird die $PROFILE automatische Variable in Remotesitzungen nicht gefüllt.

Verwenden Sie zum Ausführen eines Profils in einer Sitzung das Cmdlet "Aufruf-Befehl ".

Der folgende Befehl führt z. B. das Profil "Aktueller Benutzer, Aktueller Host" aus dem lokalen Computer in der Sitzung in $sder Sitzung aus.

Invoke-Command -Session $s -FilePath $PROFILE

Der folgende Befehl führt das Profil "Aktueller Benutzer, Aktueller Host" vom Remotecomputer in der Sitzung in $sder Sitzung aus. Da die Variable nicht gefüllt ist, verwendet der $PROFILE Befehl den expliziten Pfad zum Profil. Wir verwenden dot sourcing operator so, dass das Profil im aktuellen Bereich auf dem Remotecomputer ausgeführt wird und nicht im eigenen Bereich.

Invoke-Command -Session $s -ScriptBlock {
  . "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}

Nachdem Sie diesen Befehl ausgeführt haben, sind die Befehle, die dem Profil hinzugefügt werden, in der Sitzung verfügbar $s.

Siehe auch