Getty Images
Wie Sie Ihr PowerShell-Profil finden und anpassen
PowerShell ist für viele Admins unverzichtbar, und jede Möglichkeit, das Skripting-Tool zu optimieren, ist wichtig. Ein PowerShell-Profil ist eine Option für einen optimierten Ansatz.
Wenn Sie jedes Mal, wenn Sie die PowerShell-Konsole starten, die gleichen Befehle ausführen, ist es wahrscheinlich an der Zeit, Ihr PowerShell-Profil anzupassen, um die Skripterstellung zu vereinfachen.
Wenn Sie ein Profil in PowerShell entwickeln, definieren Sie Ihre Einstellungen als PowerShell-Skript, um den Prozess zu vereinfachen. In diesem Artikel erfahren Sie mehr über das PowerShell-Profil, wie Sie Ihr Profil für eine beliebige PowerShell-Konsole – die neuere plattformübergreifende PowerShell 7, Windows Powershell 5.1, Visual Studio (VS) Code und PowerShell Integrated Script Environment (ISE) – bearbeiten können, und über mehrere praktische Ergänzungen für Ihr Profil.
Was ist das PowerShell-Profil?
Das PowerShell-Profil ist ein PowerShell-Skript, das jedes Mal ausgeführt wird, wenn Sie PowerShell starten, außer wenn Sie das -NoProfile-Option verwenden. Der Speicherort des PowerShell-Profils hängt von mehreren Bedingungen ab:
- Die Version von PowerShell: Windows PowerShell oder PowerShell 7?
- Gilt das Profil für alle Benutzer oder für den aktuellen Benutzer?
- Ist das Profil anwendungsspezifisch?
Bei den folgenden Listen handelt es sich um Verzeichnisse. Die Namen der Profilskripts hängen von der Host-Anwendung ab.
Für alle Benutzer befindet sich das Profil an den folgenden Speicherorten:
- Windows PowerShell: $PSHOME\
- PowerShell 7:
Für bestimmte Benutzer befindet sich das Profil hier:
- Windows PowerShell: $HOME\Documents\WindowsPowerShell\
- PowerShell 7:
- Windows: $HOME\Documents\PowerShell\
- Linux: ~/.config/powershell/
- macOS: ~.config/powershell/
Die Verzeichnisse können mehrere gültige Profildateien enthalten. Der Unterschied zwischen den Profilen basiert auf der Host-Anwendung, die die PowerShell startet. Wir verwenden ISE und VS Code als Beispiele für Hosts:
- alle Hosts: profile.ps1
- ISE: Microsoft.PowerShellISE_profile.ps1
- VS Code: Microsoft.VSCode_profile.ps1
Wenn ein Benutzer VS Code startet, könnten die folgenden Profile unter Windows ausgeführt werden:
- alle Benutzer, alle Hosts: $PSHOME\profile.ps1
- alle Benutzer, VS Code: $PSHOME\Microsoft.VSCode_profile.ps1
- aktueller Benutzer, alle Hosts: $HOME\profile.ps1
- aktueller Benutzer, VS Code: $HOME\Microsoft.VSCode_profile.ps1
Wenn eine dieser Dateien nicht vorhanden ist, überspringt PowerShell dieses Profil.
So greifen Sie auf Ihr PowerShell-Profil zu
Der einfachste Weg, das PowerShell-Profil abzurufen, ist über PowerShell selbst. Sie brauchen sich die Profilpfade nicht zu merken, da sie in der Variablen $Profile gespeichert sind.
Der einzige angezeigte Pfad ist das PowerShell-Host-Anwendungsprofil des aktuellen Benutzers. Die Variable $Profile verfügt über zusätzliche Eigenschaften, um die anderen Pfade anzuzeigen, die Sie finden, indem Sie Variable über die Pipeline an das Cmdlet Get-Member übergeben:
$Profile | Get-Member -MemberType NoteProperty
Um den Pfad für das Profil Alle Benutzer, alle Hosts (All Users, All Hosts) zu finden, führen Sie den folgenden Befehl aus:
$Profile.AllUsersAllHosts
Die Host-Profildatei befindet sich in der Programmdateienhierarchie und kann ohne Administratorrechte nicht bearbeitet werden. Konzentrieren Sie sich stattdessen auf das Profil Aktueller Benutzer, aktueller Host (current user, current host profil), das Sie mit dem folgenden Befehl finden:
$Profile.CurrentUserCurrentHost
Um dieses Skript zu bearbeiten, führen Sie den folgenden Befehl aus, um VS Code zu starten und diese Datei zu öffnen:
code $Profile.CurrentUserCurrentHost
So passen Sie das PowerShell-Profil an
Aufgrund der Flexibilität des PowerShell-Profils stehen Ihnen eine Reihe von Anpassungsoption zur Verfügung, um die Funktionsweise der PowerShell Ihren Wünschen anzupassen.
Anpassen der Powershell-Eingabeaufforderung
Wir könnten diesem Thema einen ganzen Artikel widmen und trotzdem nicht alle Möglichkeiten zur Anpassung der PowerShell-Eingabeaufforderung abdecken. Wenn Sie mit dem Anpassen Ihrer PowerShell-Eingabeaufforderung nicht vertraut sind, finden Sie viele Beispiele für Eingabeaufforderungen, um zu sehen, was möglich ist. Dieser Artikel behandelt ein grundlegendes Beispiel.
Um zum Beispiel den Cursor auf die Zeile unter dem Pfad zu setzen und das #-Symbol anzuzeigen, wenn der Administrator unter Windows arbeiten, kann er Folgendes tun:
Function Prompt {
$endChar = '>'
# check if running as admin
If
(([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
$endChar = '#'
}
@"
$PWD
PS$endChar
"@
}
Damit diese Funktion jedes Mal ausgeführt wird, wenn PowerShell geladen wird, müssen Sie sie in Ihr Profil aufnehmen.
Laden eines PowerShell-Moduls und Festlegen von Standardeinstellungen
Ein Fehler, den ich regelmäßig mache, ist die Verwendung eines Moduls, das eine Authentifizierung erfordert, bevor ich mich authentifiziert habe. Einige Module haben Prüfungen, die Sie an die Authentifizierung erinnern, während andere eine kryptische Fehlermeldung ausgeben. Wenn dieses Problem bei einem Modul auftritt, das Sie häufig verwenden, sollten Sie die Authentifizierungsschritte zu Ihrem Profil hinzufügen.
In diesem Beispiel verwenden wir das Microsoft.Graph-Modul, mit dem Sie sich mit zwischengespeicherten Anmeldedaten authentifizieren können. Sobald Sie sich authentifiziert haben, können Sie den folgenden Befehl zu Ihrem Profil hinzufügen:
Connect-Graph
Es gibt eine Besonderheit in Microsoft.Graph.Users, die erfordert, dass Sie die Standardeigenschaften angeben, um mehrere Eigenschaften von Benutzern zurückzugeben. Sie können dieses Problem umgehen, indem Sie eine Variable in Ihrem PowerShell-Profil erstellen:
$graphUserProps = @(
'BusinessPhones',
'DisplayName',
'GivenName',
'Id',
'Mail',
'PreferredLanguage',
'Surname',
'UserPrincipalName'
)
Wenn Sie weitere Eigenschaften für einen Microsoft-Graph-Benutzer hinzufügen müssen, können Sie auf diese Variable verweisen und zusätzliche Eigenschaften hinzufügen:
Get-MgUser -UserId <upn> -Select ($graphUserProps + 'AccountEnabled','UsageLocation')
Hinzufügen von Aliasen und Argumentvervollständigungen
Eine weitere hervorragende Verwendung für ein PowerShell-Profil ist das Hinzufügen eines Alias. Wenn Sie interaktiv mit PowerShell arbeiten, können Sie mit Aliasen eine Menge Tipparbeit sparen. Anhand des vorherigen Microsoft.Graph-Beispiels könnten Sie Get-MgUser zu gmu verkürzen:
New-Alias -Name gmu -Value Get-MgUser
Eines der häufig genutzten Aliase ist jedoch für kubectl, das mit Kubernetes-Befehlszeilen-Tool für die Arbeit mit Clustern. Ich verwenden den Buchstaben k als Alias:
New-Alias -Name k -Value kubectl
Einer der Vorteile von kubectl ist, dass es eine Autovervollständigung für PowerShell enthält. Wenn Sie kubectl häufig verwenden, können Sie den Anweisungen unter diesem Link folgen, um diese Funktion zu Ihrem Profil hinzuzufügen.
So fügen Sie Ihrem PowerShell-Profil benutzerdefinierte Funktionen hinzu
Wenn Sie Ihre PowerShell-Fähigkeiten ausbauen, schreiben Sie vielleicht mehr einmalige Funktionen, die Ihnen bei Ihrer Arbeit helfen. Möglicherweise sind Sie aber nicht der Meinung, dass der Code es wert ist, einem Modul hinzugefügt zu werden. Nachdem Sie Ihren Code in eine Versionskontrollplattform, wie zum Beispiel GitHub, gestellt haben, können Sie Dot Sourcing verwenden, um den Code beim Ausführen von PowerShell zu laden:
. C:\path\to\Function.ps1
Das ist nur der Anfang dessen, was möglich ist. Denken Sie über die Befehle nach, die Sie häufig ausführen, und überlegen Sie, auf welche anderen Arten Sie Ihr PowerShell-Profil anpassen können, um Ihr Leben einfacher zu machen.