Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Kurzbeschreibung
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 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 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. 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 Sie den NoProfile-Parameter der PowerShell-Konsole (PowerShell.exe) verwenden, um PowerShell ohne Profile zu starten. Außerdem werden die Auswirkungen der PowerShell-Ausführungsrichtlinie auf Profile erläutert.
Die Profildateien
PowerShell unterstützt mehrere Profildateien. Darüber hinaus können PowerShell-Hostprogramme ihre eigenen hostspezifischen Profile unterstützen.
Die PowerShell-Konsole unterstützt z. B. die folgenden grundlegenden Profildateien. Die Profile werden in der Reihenfolge der Rangfolge aufgelistet. Das erste Profil hat die höchste Priorität.
| BESCHREIBUNG | Pfad |
|---|---|
| Alle Benutzer, alle Hosts | $PSHOME\Profile.ps1 |
| Alle Benutzer, aktueller Host | $PSHOME\Microsoft.PowerShell_profile.ps1 |
| Aktueller Benutzer, Alle Hosts | $Home\[My ]Documents\WindowsPowerShell\Profile.ps1 |
| Aktueller Benutzer, Aktueller Host | $Home\[Eigene ]Dokumente\WindowsPowerShell\ Microsoft.PowerShell_profile.ps1 |
Die Profilpfade umfassen die folgenden Variablen:
- Die
$PSHOMEVariable, in der das Installationsverzeichnis für PowerShell gespeichert wird - Die
$HomeVariable, die das Home-Verzeichnis des aktuellen Benutzers speichert
Darüber hinaus können andere Programme, die PowerShell hosten, ihre eigenen Profile unterstützen. PowerShell Integrated Scripting Environment (ISE) unterstützt beispielsweise die folgenden hostspezifischen Profile.
| BESCHREIBUNG | Pfad |
|---|---|
| Alle Benutzer, Aktueller Host | $PSHOME\Microsoft.PowerShellISE_profile.ps1 |
| Aktueller Benutzer, Aktueller Host | $Home\[Eigene ]Dokumente\WindowsPowerShell\ Microsoft.PowerShellISE_profile.ps1 |
In der PowerShell-Hilfe ist das Profil "CurrentUser, Current Host" das Profil, das am häufigsten als "Ihr PowerShell-Profil" bezeichnet wird.
Die variable $PROFILE
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 variablen $PROFILE an. Sie können auch die $PROFILE Variable 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 variablen $PROFILE gespeichert.
Die variable $PROFILE hat beispielsweise die folgenden Werte in der Windows PowerShell-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 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 variablen $PROFILE anzuzeigen:
$PROFILE | Get-Member -Type NoteProperty
Sie können die variable $PROFILE 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 des Platzhalters <profile-path> durch den Pfad zu der Profildatei, die Sie erstellen möchten.
Hinweis
Um "Alle Benutzer"-Profile in Windows Vista und höheren Versionen von Windows zu erstellen, starten Sie PowerShell mit der Option Als Administrator ausführen Option.
So bearbeiten Sie ein Profil
Sie können ein beliebiges PowerShell-Profil in einem Text-Editor öffnen, z. B. Editor.
Um das Profil des aktuellen Benutzers in der aktuellen PowerShell-Hostanwendung im Editor zu öffnen, geben Sie Folgendes 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 Folgendes ein:
notepad $PROFILE.AllUsersAllHosts
Um die Änderungen anzuwenden, speichern Sie die Profildatei, und starten Sie 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 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.AllUsersAllHostsProfil - Speichern von Elementen, die für eine Hostanwendung spezifisch sind, in
$PROFILE.AllUsersCurrentHostProfilen, die für die Hostanwendung spezifisch sind - Speichern von Elementen für bestimmte Benutzer in den benutzerspezifischen Profilen
Überprüfen Sie unbedingt die Hostanwendungsdokumentation auf 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.
Zu den sitzungsspezifischen Befehlen und Elementen gehören Variablen, Einstellungsvariablen, Aliase, Funktionen, Befehle (mit Ausnahme von 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 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.
So starten Sie ein Profil
Wenn Sie die Profildatei öffnen, ist sie leer. Sie können sie jedoch mit den Variablen, Aliasen und Befehlen ausfüllen, die Sie häufig verwenden.
Hier sind einige Vorschläge, die Ihnen den Einstieg erleichtern.
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 z. B. den folgenden Befehl hinzu:
function Pro {notepad $PROFILE.CurrentUserAllHosts}
Fügen Sie eine Funktion hinzu, die die Aliase für ein beliebiges 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 benutzerdefinierten 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, 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:
PowerShell -NoProfile
Geben Sie für eine vollständige Liste der Parameter von PowerShell.exeFolgendes 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 Eingeschränkte Ausführungsrichtlinie 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 sein Inhalt wird nicht angewendet.
Eine Set-ExecutionPolicy Befehlssätze und Änderungen ihrer Ausführungsrichtlinie. Es ist einer der wenigen Befehle, der in allen PowerShell-Sitzungen angewendet wird, da der Wert in der Registrierung gespeichert wird. Sie müssen es 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 in Remotesitzungen nicht automatisch ausgeführt, sodass die Befehle, die die Profile hinzufügen, in der Remotesitzung nicht vorhanden sind. Darüber hinaus wird die $PROFILE automatische Variable in Remotesitzungen nicht aufgefüllt.
Um ein Profil in einer Sitzung auszuführen, verwenden Sie das Cmdlet Invoke-Command.
Mit dem folgenden Befehl wird beispielsweise das Profil "Aktueller Benutzer, Aktueller Host" vom 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 variable $PROFILE nicht aufgefüllt wird, verwendet der Befehl den expliziten Pfad zum Profil. Wir verwenden dot sourcing operator so, dass das Profil im aktuellen Bereich auf dem Remotecomputer und nicht in seinem 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.