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.
Ein PowerShell-Profil ist ein Skript, das ausgeführt wird, wenn PowerShell gestartet wird. Sie können das Profil verwenden, um die Umgebung anzupassen. Sie haben folgende Möglichkeiten:
- Hinzufügen von Aliasen, Funktionen und Variablen
- Laden von Modulen
- Erstellen von PowerShell-Laufwerken
- Ausführen beliebiger Befehle
- Präferenzeinstellungen ändern
Wenn Sie diese Einstellungen in Ihr Profil einfügen, wird sichergestellt, dass sie immer verfügbar sind, wenn Sie PowerShell auf Ihrem System starten.
Hinweis
Zum Ausführen von Skripts in Windows muss die PowerShell-Ausführungsrichtlinie mindestens auf RemoteSigned
ein Minimum festgelegt sein. Ausführungsrichtlinien gelten nicht für macOS und Linux. Weitere Informationen finden Sie unter about_Execution_Policy.
Die variable $PROFILE
Die $PROFILE
automatische Variable speichert die Pfade zu den PowerShell-Profilen, die in der aktuellen Sitzung verfügbar sind.
Es stehen vier mögliche Profile zur Verfügung, um verschiedene Benutzerbereiche und verschiedene PowerShell-Hosts zu unterstützen. Die vollqualifizierten Pfade für jedes Profilskript werden in den folgenden Membereigenschaften von $PROFILE
gespeichert.
- AllUsersAllHosts
- AllUsersCurrentHost
- CurrentUserAllHosts
- CurrentUserCurrentHost
Sie können Profilskripts erstellen, die für alle Benutzer oder nur einen Benutzer ausgeführt werden, der CurrentUser. CurrentUser-Profile werden unter dem Heimverzeichnispfad des Benutzers gespeichert. Der Speicherort variiert je nach Betriebssystem und Version von PowerShell, die Sie verwenden.
Standardmäßig gibt das Verweisen auf die $PROFILE
Variable den Pfad zum Profil "Aktueller Benutzer, aktueller Host" zurück. Auf den anderen Profilpfad kann über die Eigenschaften der $PROFILE
Variablen zugegriffen werden.
Der folgende Befehl zeigt die Standardprofilspeicherorte unter Windows.
PS> $PROFILE | Select-Object *
AllUsersAllHosts : C:\Program Files\PowerShell\7\profile.ps1
AllUsersCurrentHost : C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts : C:\Users\username\Documents\PowerShell\profile.ps1
CurrentUserCurrentHost : C:\Users\username\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
Length : 69
Der folgende Befehl zeigt die Standardprofilspeicherorte unter Ubuntu Linux.
$PROFILE | Select-Object *
AllUsersAllHosts : /opt/microsoft/powershell/7/profile.ps1
AllUsersCurrentHost : /opt/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts : /home/username/.config/powershell/profile.ps1
CurrentUserCurrentHost : /home/username/.config/powershell/Microsoft.PowerShell_profile.ps1
Length : 67
Es gibt auch Profile, die für alle PowerShell-Hosts oder bestimmte Hosts ausgeführt werden. Das Profilskript für jeden PowerShell-Host weist einen eindeutigen Namen für diesen Host auf. Der Dateiname für den Standardkonsolenhost unter Windows oder die Standard-Terminalanwendung auf anderen Plattformen lautet Microsoft.PowerShell_profile.ps1
z. B. . Für Visual Studio Code (VS Code) lautet Microsoft.VSCode_profile.ps1
der Dateiname .
Weitere Informationen finden Sie unter about_Profiles.
So erstellen Sie Ihr persönliches Profil
Wenn Sie PowerShell zum ersten Mal auf einem System installieren, sind die Profilskriptdateien und die Verzeichnisse, denen sie angehören, nicht vorhanden. Mit dem folgenden Befehl wird die Profilskriptdatei "Aktueller Benutzer, Aktueller Host" erstellt, falls sie nicht vorhanden ist.
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
Der Parameter "Force " des New-Item
Cmdlets erstellt die erforderlichen Ordner, wenn sie nicht vorhanden sind.
Nachdem Sie die Skriptdatei erstellt haben, können Sie Ihren bevorzugten Editor verwenden, um Ihre Shellumgebung anzupassen.
Hinzufügen von Anpassungen zu Ihrem Profil
In den vorherigen Artikeln wurde über die Verwendung von Tab-Vervollständigung, Befehlsprädiktoren und Aliasse gesprochen. In diesen Artikeln wurden die Befehle gezeigt, die zum Laden der erforderlichen Module, zum Erstellen von benutzerdefinierten Abschlussern, zum Definieren von Schlüsselbindungen und anderen Einstellungen verwendet wurden. Dies sind die Arten von Anpassungen, die Sie in jeder interaktiven PowerShell-Sitzung zur Verfügung haben möchten. Das Profilskript ist der Ort für diese Einstellungen.
Die einfachste Möglichkeit zum Bearbeiten Ihres Profilskripts besteht darin, die Datei in Ihrem bevorzugten Code-Editor zu öffnen. Beispielsweise öffnet der folgende Befehl das Profil in VS Code.
code $PROFILE
Sie könnten auch notepad.exe
unter Windows, vi
unter Linux oder einen anderen Texteditor verwenden.
Das folgende Profilskript enthält Beispiele für viele der in den vorherigen Artikeln erwähnten Anpassungen. Sie können jede dieser Einstellungen in Ihrem eigenen Profil verwenden.
## Map PSDrives to other registry hives
if (!(Test-Path HKCR:)) {
$null = New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
$null = New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS
}
## Customize the prompt
function prompt {
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = [Security.Principal.WindowsPrincipal] $identity
$adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator
$prefix = if (Test-Path Variable:/PSDebugContext) { '[DBG]: ' } else { '' }
if ($principal.IsInRole($adminRole)) {
$prefix = "[ADMIN]:$prefix"
}
$body = 'PS ' + $PWD.path
$suffix = $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
"${prefix}${body}${suffix}"
}
## Create $PSStyle if running on a version older than 7.2
## - Add other ANSI color definitions as needed
if ($PSVersionTable.PSVersion.ToString() -lt '7.2.0') {
# define escape char since "`e" may not be supported
$esc = [char]0x1b
$PSStyle = [pscustomobject]@{
Foreground = @{
Magenta = "${esc}[35m"
BrightYellow = "${esc}[93m"
}
Background = @{
BrightBlack = "${esc}[100m"
}
}
}
## Set PSReadLine options and keybindings
$PSROptions = @{
ContinuationPrompt = ' '
Colors = @{
Operator = $PSStyle.Foreground.Magenta
Parameter = $PSStyle.Foreground.Magenta
Selection = $PSStyle.Background.BrightBlack
InLinePrediction = $PSStyle.Foreground.BrightYellow + $PSStyle.Background.BrightBlack
}
}
Set-PSReadLineOption @PSROptions
Set-PSReadLineKeyHandler -Chord 'Ctrl+f' -Function ForwardWord
Set-PSReadLineKeyHandler -Chord 'Enter' -Function ValidateAndAcceptLine
## Add argument completer for the dotnet CLI tool
$scriptblock = {
param($wordToComplete, $commandAst, $cursorPosition)
dotnet complete --position $cursorPosition $commandAst.ToString() |
ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
}
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock $scriptblock
Dieses Profilskript enthält Beispiele für die folgende Anpassung:
- Fügt zwei neue PSDrives für die anderen Stammregistrierungsstrukturen hinzu.
- Erstellt eine angepasste Eingabeaufforderung , die sich ändert, wenn Sie in einer Sitzung mit erhöhten Rechten ausgeführt werden.
- Konfiguriert PSReadLine und fügt eine Schlüsselbindung hinzu. Die Farbeinstellungen verwenden das feature $PSStyle , um die ANSI-Farbeinstellungen zu definieren.
- Fügt die Tab-Vervollständigung für das dotnet CLI-Tool hinzu. Das Tool stellt Parameter bereit, um die Befehlszeilenargumente zu beheben. Der Skriptblock für Register-ArgumentCompleter verwendet diese Funktion, um die Tab-Vervollständigung bereitzustellen.