Share via


about_Profiles

Kurze Beschreibung

Beschreibt das Erstellen und Verwenden eines PowerShell-Profils.

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 ausgeführt wird, wenn PowerShell gestartet wird. Sie können das Profil als Startskript verwenden, um Ihre Umgebung anzupassen. Sie können Befehle, Aliase, Funktionen, Variablen, Module, PowerShell-Laufwerke und vieles mehr hinzufügen. Sie können Ihrem Profil auch andere sitzungsspezifische Elemente hinzufügen, sodass 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. Die Profile werden jedoch nicht für Sie erstellt.

Profiltypen und Speicherorte

PowerShell unterstützt mehrere Profildateien, die für Benutzer und PowerShell-Hosts gelten. Sie können beliebige oder alle diese Profile auf Ihrem Computer haben.

Die PowerShell-Konsole unterstützt die folgenden grundlegenden Profildateien. Diese Dateipfade sind die Standardspeicherorte.

  • Alle Benutzer, alle Hosts
    • Windows – $PSHOME\Profile.ps1
    • Linux: /opt/microsoft/powershell/7/profile.ps1
    • macOS: /usr/local/microsoft/powershell/7/profile.ps1
  • Alle Benutzer, aktueller Host
    • Windows – $PSHOME\Microsoft.PowerShell_profile.ps1
    • Linux: /opt/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
    • macOS: /usr/local/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
  • Aktueller Benutzer, alle Hosts
    • Windows – $HOME\Documents\PowerShell\Profile.ps1
    • Linux: ~/.config/powershell/profile.ps1
    • macOS: ~/.config/powershell/profile.ps1
  • Aktueller Benutzer, Aktueller Host
    • Windows – $HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
    • Linux: ~/.config/powershell/Microsoft.PowerShell_profile.ps1
    • macOS: ~/.config/powershell/Microsoft.PowerShell_profile.ps1

Hinweis

In Windows kann der Speicherort des Ordners Documents durch Ordnerumleitung oder OneDrive geändert werden. Es wird nicht empfohlen, den Documents Ordner zu einer Netzwerkfreigabe umzuleiten oder ihn in OneDrive einzubinden. Die Umleitung des Ordners kann dazu führen, dass Module nicht geladen werden und Fehler in Ihren Profilskripts erstellt werden. Informationen zum Entfernen des Ordners aus der Documents OneDrive-Verwaltung finden Sie in der OneDrive-Dokumentation.

Die Profilskripts werden in der aufgeführten Reihenfolge ausgeführt. Dies bedeutet, dass änderungen, die im Profil AllUsersAllHosts vorgenommen wurden, von jedem der anderen Profilskripts überschrieben werden können. Das CurrentUserCurrentHost-Profil wird immer zuletzt ausgeführt. In der PowerShell-Hilfe ist das CurrentUserCurrentHost-Profil das Profil, das am häufigsten als Ihr PowerShell-Profil bezeichnet wird.

Andere Programme, die PowerShell hosten, können ihre eigenen Profile unterstützen. Visual Studio Code (VS Code) unterstützt beispielsweise die folgenden hostspezifischen Profile.

  • Alle Benutzer, Aktueller Host : $PSHOME\Microsoft.VSCode_profile.ps1
  • Aktueller Benutzer, Aktueller Host: $HOME\Documents\PowerShell\Microsoft.VSCode_profile.ps1

Die Profilpfade enthalten die folgenden Variablen:

  • Die $PSHOME Variable speichert das Installationsverzeichnis für PowerShell.
  • Die $HOME Variable speichert das Basisverzeichnis des aktuellen Benutzers.

Hinweis

In Windows kann der Speicherort des Ordners Documents durch Ordnerumleitung oder OneDrive geändert werden. Es wird nicht empfohlen, den Documents Ordner zu einer Netzwerkfreigabe umzuleiten oder ihn in OneDrive einzubinden. Die Umleitung des Ordners kann dazu führen, dass Module nicht geladen werden und Fehler in Ihren Profilskripts erstellt werden. Informationen zum Entfernen des Ordners aus der Documents OneDrive-Verwaltung finden Sie in der OneDrive-Dokumentation.

Die $PROFILE-Variable

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 $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 den Eigenschaften der $PROFILE Variablen gespeichert.

Beispielsweise weist die $PROFILE Variable die folgenden Werte in der Windows PowerShell-Konsole auf.

  • 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 verwendeten PowerShell-Hostanwendung anzeigen.

Geben Sie Folgendes ein, um die aktuellen Werte der $PROFILE Variablen anzuzeigen:

$PROFILE | Select-Object *

Sie können die $PROFILE Variable in vielen Befehlen verwenden. Mit dem folgenden Befehl wird beispielsweise das Profil "Aktueller Benutzer, aktueller Host" im Editor geöffnet:

notepad $PROFILE

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

Test-Path -Path $PROFILE.AllUsersAllHosts

Erstellen eines Profils

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

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

Verwenden Sie beispielsweise den folgenden Befehl, um ein Profil für den aktuellen Benutzer in der aktuellen PowerShell-Hostanwendung zu erstellen:

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 der $PROFILE Variablen durch den Pfad zur Profildatei, die Sie erstellen möchten.

Hinweis

Um Profile "Alle Benutzer" in Windows Vista und höheren Versionen von Windows zu erstellen, starten Sie PowerShell mit der Option Als Administrator ausführen .

Bearbeiten eines Profils

Sie können ein beliebiges PowerShell-Profil in einem Text-Editor öffnen, z. B. Editor.

Geben Sie Folgendes ein, um das Profil des aktuellen Benutzers in der aktuellen PowerShell-Hostanwendung im Editor zu öffnen:

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 Folgendes ein:

notepad $PROFILE.AllUsersAllHosts

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

Auswählen eines Profils

Wenn Sie mehrere Hostanwendungen verwenden, fügen Sie die Elemente, die Sie in allen Hostanwendungen verwenden, in Ihr $PROFILE.CurrentUserAllHosts Profil ein. Platzieren Sie Elemente, die spezifisch für eine Hostanwendung sind, z. B. einen Befehl, mit dem die Hintergrundfarbe für eine Hostanwendung festgelegt wird, in einem Profil, das für diese Hostanwendung spezifisch ist.

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

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

Überprüfen Sie unbedingt die Dokumentation zur Hostanwendung auf spezielle Implementierungen 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.

Zu den sitzungsspezifischen Befehlen und Elementen gehören PowerShell-Variablen, Umgebungsvariablen, Aliase, Funktionen, Befehle 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 von Profilen 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 neu zu erstellen.

Starten eines Profils

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

Hier sind einige Vorschläge für den Einstieg.

Hinzufügen einer Funktion, 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 CustomizeConsole {
  $hosttime = (Get-ChildItem -Path $PSHOME\pwsh.exe).CreationTime
  $hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
  $Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)"
  Clear-Host
}
CustomizeConsole

Hinzufügen einer benutzerdefinierten PowerShell-Eingabeaufforderung

function Prompt {
    $env:COMPUTERNAME + "\" + (Get-Location) + "> "
}

Weitere Informationen zur PowerShell-Eingabeaufforderung finden Sie unter about_Prompts.

Weitere Profilbeispiele finden Sie unter Anpassen Ihrer Shellumgebung.

Der NoProfile-Parameter

Um PowerShell ohne Profile zu starten, verwenden Sie den NoProfile-Parameter von pwsh.exe, dem 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:

pwsh -NoProfile

Um eine vollständige Liste der Parameter von pwsh.exezu erstellen, geben Sie Folgendes ein:

pwsh -?

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

Ein Set-ExecutionPolicy Befehl legt Ihre Ausführungsrichtlinie fest und ändert sie. Es ist einer der wenigen Befehle, der in allen PowerShell-Sitzungen gilt, 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 in Remotesitzungen nicht automatisch ausgeführt, sodass die von den Profilen hinzugefügten Befehle in der Remotesitzung nicht vorhanden sind. Darüber hinaus wird die $PROFILE automatische Variable in Remotesitzungen nicht aufgefüllt.

Verwenden Sie zum Ausführen eines Profils in einer Sitzung das Cmdlet Invoke-Command .

Mit dem folgenden Befehl wird beispielsweise das Profil "Aktueller Benutzer, aktueller Host" auf dem lokalen Computer in der Sitzung in $sausgeführt.

Invoke-Command -Session $s -FilePath $PROFILE

Der folgende Befehl führt das Profil "Aktueller Benutzer, aktueller Host" vom Remotecomputer in der Sitzung in $saus. Da die $PROFILE Variable nicht aufgefüllt wird, verwendet der Befehl den expliziten Pfad zum Profil. Wir verwenden den Dot Sourcing-Operator, damit das Profil im aktuellen Bereich auf dem Remotecomputer und nicht im eigenen Bereich ausgeführt wird.

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

Nach dem Ausführen dieses Befehls sind die Befehle, die das Profil der Sitzung hinzufügt, in $sverfügbar.

Weitere Informationen