PowerShell-Profile

In diesem Tutorial werden wir uns mit PowerShell-Profilen und deren Verwendung beschäftigen. PowerShell-Profile helfen Ihnen, Ihre Umgebung anzupassen und Elemente für jede PowerShell-Sitzung, die Sie starten, hinzuzufügen. Ein PowerShell-Profil ist ein Skript, das jedes Mal ausgeführt wird, wenn wir PowerShell starten. Sie können ein PowerShell-Profil als Anmeldeskript verwenden, um die Umgebung anzupassen. Durch die Verwendung eines PowerShell-Profils können Sie Befehle, Aliase, Funktionen, Variablen, Snap-Ins, Module, PSDrives und andere sitzungsspezifische Elemente zu Ihrer Umgebung hinzufügen. Sie müssen sie nicht jedes Mal importieren oder neu erstellen, wenn Sie PowerShell ausführen. Sie werden automatisch geladen. PowerShell unterstützt mehrere Profile für Benutzer und Hostprogramme. PowerShell erstellt keine Profile für Sie.

Wenn Sie sitzungsspezifische Befehle, Variablen, Einstellungsvariablen, Aliase, Funktionen, Befehle (mit Ausnahme von Set-ExecutionPolicy) und PowerShell-Module, die Sie häufig verwenden, wünschen, können Sie Profile verwenden, um sie in allen zukünftigen Sitzungen zu laden.

Profildateien

Die PowerShell-Konsole unterstützt die folgenden Profile:

  • $Home\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 – Aktueller Benutzer, aktueller Host
  • $Home\Documents\PowerShell\Profile.ps1 – Aktueller Benutzer, alle Hosts
  • $PsHome\Microsoft.PowerShell_profile.ps1 – Alle Benutzer, aktueller Host
  • $PsHome\Profile.ps1 – Alle Benutzer, alle Hosts

Die obigen Profile werden in der Rangfolge angezeigt. Das erste Profil in der Liste hat die höchste Rangfolge. Wie Sie in den obigen Profilen sehen können, haben wir zwei Variablen. Die Variablen $PSHome und $Home weisen die folgenden Werte auf.

  • $PSHome – Speichert das Installationsverzeichnis für PowerShell
  • $Home – Speichert das Heimatverzeichnis des aktuellen Benutzers

Andere Programme, die PowerShell hosten, können ihre eigenen Profile unterstützen. PowerShell Integrated Scripting Environment (ISE) unterstützt die folgenden hostspezifischen Profile.

  • $Home\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1 – Aktueller Benutzer, aktueller Host
  • $PsHome\Microsoft.PowerShellISE_profile.ps1 – Alle Benutzer, aktueller Host

Das Profil „CurrentUser, Current Host“ wird laut Microsoft in der PowerShell-Hilfe am häufigsten als „Ihr PowerShell-Profil“ bezeichnet.

Profilvariable

In PowerShell gibt es eine automatische Variable namens $Profile. Alle PowerShell-Profilpfade, die in der aktuellen Sitzung verfügbar sind, werden in der Variablen $Profile gespeichert. Wenn Sie die Variable $Profile anzeigen, sehen Sie den Pfad des Profils.

Die Variable $Profile speichert den Pfad zum Profil „Current User, Current Host“. Die anderen Profile werden in den Noteneigenschaften der Variablen $Profile gespeichert.

Sie können ein Profil mithilfe der Eigenschaften der Variablen angeben. In der Windows PowerShell-Konsole haben wir die folgenden Werte in der Variablen $Profile.

  • $Profile – Aktueller Benutzer, aktueller Host
  • $Profile.CurrentUserCurrentHost – Aktueller Benutzer, aktueller Host
  • $Profile.CurrentUserAllHosts – Aktueller Benutzer, alle Hosts
  • $Profile.AllUsersCurrentHost – Alle Benutzer, aktueller Host
  • $Profile.AllUsersAllHosts – Alle Benutzer, alle Hosts

Sie können die Variable $Profile in Ihren Befehlen verwenden.

Code:

Test-Path -Path $PROFILETest-Path -Path $PROFILE.CurrentUserCurrentHostTest-Path -Path $PROFILE.CurrentUserAllHostsTest-Path -Path $PROFILE.AllUsersCurrentHostTest-Path -Path $PROFILE.AllUsersAllHosts

Ausgabe:

Die obigen Befehle testen, ob das angegebene Profil erstellt wurde. Wie Sie sehen können, ist die Antwort auf alle Befehle falsch. Wie Sie bereits erwähnt haben, werden Profile nicht standardmäßig erstellt. Sie müssen sie erstellen.

Profil erstellen

Um ein Profil zu erstellen, müssen Sie den folgenden Befehl verwenden.

Code:

New-Item -ItemType File -Path $profile -Force

Der obige Befehl erstellt ein Profil für „Aktueller Benutzer, aktueller Host“.

Beachten Sie, dass der obige Befehl ein vorhandenes Profil ersetzt. Wenn Sie sicherstellen möchten, dass Sie kein bereits vorhandenes Profil ersetzen und die Änderungen, die Sie bereits vorgenommen haben, verlieren, können Sie Folgendes versuchen.

Code:

if (-not (Test-Path -Path $profile.AllUsersAllHosts)){ New-Item -ItemType File -Path $profile.AllUsersAllHosts -Force}

Der obige Befehl prüft, ob ein Profil für „Alle Benutzer, alle Hosts“ vorhanden ist, und erstellt das Profil, wenn dies nicht der Fall ist.

Um ein Profil zu erstellen, müssen Sie die PowerShell-Konsole als Administrator ausführen. Dies gilt ab Windows Vista und späteren Versionen.

Bearbeiten eines Profils

Wenn ein Profil existiert und Sie einige Änderungen oder Ergänzungen vornehmen müssen, müssen Sie einen Texteditor verwenden, um das Profil zu bearbeiten. Mit Notepad lässt sich das Profil leicht bearbeiten.

Code:

notepad $profile

Wie Sie unten sehen können, ist mein aktuelles Profil so konfiguriert, dass eine Willkommensnachricht angezeigt wird, wenn ich meine Konsole öffne.

Nun werde ich den obigen Befehl verwenden, um einige Änderungen an meinem Profil vorzunehmen.

Nachfolgend die Änderungen, die ich vorgenommen habe.

Nachdem ich die PowerShell-Konsole neu gestartet habe, wurden die Änderungen übernommen.

Richtlinien für Profile

Nachfolgend finden Sie einige Richtlinien zum Einrichten von Profilen, die von Microsoft bereitgestellt werden.

Wenn Sie mehrere Host-Anwendungen verwenden, fügen Sie die Elemente, die Sie in allen Host-Anwendungen verwenden, in Ihr $Profile.CurrentUserAllHostsProfil ein. Legen Sie Elemente, die für eine Hostanwendung spezifisch sind, z. B. einen Befehl, der die Hintergrundfarbe für eine Hostanwendung festlegt, in einem Profil ab, das für diese Hostanwendung spezifisch ist.

Wenn Sie ein Administrator sind, der 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 eine spezielle Implementierung von PowerShell-Profilen.

Kein Profil

Selbst wenn Sie Profile erstellt haben, die bei jedem Öffnen der Konsole geladen werden, können Sie PowerShell ausführen, ohne dass ein Profil geladen wird. Sie können dies tun, indem Sie PowerShell mit dem Parameter -NoProfile ausführen. Dies kann über cmd.exe, das Dialogfeld „Ausführen“ oder PowerShell selbst erfolgen.

Code:

PowerShell -NoProfile

Ausführungsrichtlinie

Die PowerShell-Ausführungsrichtlinie bestimmt, ob Sie Skripte ausführen und Konfigurationsdateien, einschließlich der Profile, laden können. Die Ausführungsrichtlinie „Eingeschränkt“ ist die Standardeinstellung. Weitere Informationen zur PowerShell-Ausführungsrichtlinie finden Sie hier. Wenn Sie die Richtlinie „Eingeschränkt“ verwenden, wird die Ausführung aller Skripts, einschließlich der Profile, verhindert. Der Inhalt des Profils wird nicht angewendet. Mit dem Befehl Set-ExecutionPolicy wird Ihre Ausführungsrichtlinie in allen PowerShell-Sitzungen festgelegt und geändert, da der Wert in der Registrierung gespeichert wird. Sie müssen ihn nicht festlegen, wenn Sie die Konsole öffnen, oder einen Set-ExecutionPolicy-Befehl in Ihrem Profil speichern.

Profil in Remotesitzung

PowerShell-Profile werden nicht automatisch in Remotesitzungen ausgeführt, daher sind die Befehle, die die Profile hinzufügen, in der Remotesitzung nicht vorhanden. Außerdem wird die automatische Variable $Profile in Remotesitzungen nicht aufgefüllt.

Wenn wir das Profil von unserem lokalen Computer in einer Remotesitzung ausführen möchten, müssen wir das Cmdlet Invoke-Command verwenden.

Das folgende Beispiel führt das lokale Profil in einer Remotesitzung aus.

Code:

$MySession = New-PSSession -ComputerName RemoteComputerInvoke-Command -Session $MySession -FilePath $profile

Output:

Da das Profil in der Remotesitzung nicht ausgefüllt wird, können wir auch das Remoteprofil in die Sitzung laden. Prüfen Sie das folgende Beispiel.

Code:

$MySession = New-PSSession -ComputerName RemoteComputerInvoke-Command -Session $MySession -ScriptBlock {. "$env:USERPROFILE\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}

Output:

Ich hoffe, das Tutorial über PowerShell-Profile ist hilfreich.

Bitte teilen Sie mir Ihre Kommentare und Gedanken mit.

Ihr Feedback wird geschätzt.

Verwandte Links

  • PowerShell-Tutorials
  • PowerShell-Skripts
  • über_Profile | Microsoft Docs
  • PowerShell-Automatische Variablen
  • PowerShell-Logische Operatoren
  • PowerShell-Ausführungsrichtlinie
  • Test-.Pfad – Microsoft Docs
  • Neu-Element – Microsoft Docs
  • Schreibausgabe – Microsoft Docs
  • Set-ExecutionPolicy – Microsoft Docs
  • Invoke-Befehl – Microsoft Docs
Zusammenfassung
Artikelname
PowerShell-Profile
Beschreibung
PowerShell-Profile. In diesem Tutorial finden Sie Informationen zu PowerShell Profiles und deren Verwendung. Stephanos Constantinou Blog
Autor
Stephanos
Verlagsname
Stephanos Constantinou Blog
Verlagslogo

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.