Share this post:

Ein PowerShell-Profil ist ein Skript, das beim Start von PowerShell ausgeführt wird und einen bestimmten Namen hat.

PowerShell unterstützt verschiedene Profile für Benutzer und Host-Programme. Wenn wir von Hostprogrammen sprechen, denken wir in erster Linie an Windows PowerShell Console und Windows PowerShell ISE. Allerdings werden die Profile nicht für Sie erstellt, also lesen Sie diesen Artikel weiter und ich werde Ihnen zeigen, wie Sie Profile mit tollen Beispielen erstellen und anpassen können.

Wir können 3 Profildateien für jeden Benutzer im System, eine für jeden Host (Windows PowerShell Console und ISE) und eine für alle Hosts erstellen.

Zusätzlich ist es möglich, 3 Profildateien für alle Benutzer zu erstellen, wenn wir einige Anpassungen für alle Benutzer anwenden möchten.

WICHTIG: Wenn Sie eine separate Installation von PowerShell Version 6 haben, können wir 4 zusätzliche Profile erstellen. Zwei Profildateien pro Benutzer und zwei Profildateien für alle Benutzer.

Inhaltsverzeichnis

PowerShell-Profilbefehle, Hosts, Profilnamen, Profilspeicherorte

Hier ist eine Tabelle, die Profiltypen, Befehle, die verwendet werden können, um zu testen, ob ein Profil vorhanden ist, und sie zu erstellen, wenn wir dies möchten, den Host, für den dieses Profil gilt, den Namen der Profildatei und den Speicherort der Profildatei zeigt.

# Profiltyp Befehl Host Profildateiname Speicherort der Profildatei
1* Aktueller Benutzer, Aktueller Host $profile Konsole Microsoft.PowerShell_profile.ps1 $HOME\ Documents\WindowsPowerShell\
2 Alle Benutzer, aktueller Host $profile.AllUsersCurrentHost Konsole Microsoft.PowerShell_profile.ps1 $PSHOME\
3 Aktueller Benutzer, alle Hosts $profile.CurrentUserAllHosts Konsole, ISE Profile.ps1 $HOME\ Documents\WindowsPowerShell\
4 Alle Benutzer, Alle Hosts $profile.AllUsersAllHosts Konsole, ISE Profile.ps1 $PSHOME\
5** Aktueller Benutzer, Aktueller Host $profile ISE Microsoft.PowerShellISE_profile.ps1 $HOME\ Documents\WindowsPowerShell\
6** Alle Benutzer, Aktueller Host $profile.AllUsersCurrentHost ISE Microsoft.PowerShellISE_profile.ps1 $PSHOME\

Tabelle 1 – PowerShell-Profiltypen, Befehle, Hosts, Dateinamen, Dateispeicherorte

* Anstelle von $profile können wir $profile verwenden.CurrentUserCurrentHost-Befehl verwenden.

** Führen Sie den Befehl von der Windows PowerShell ISE-Konsole aus.

Um die richtigen Werte für die Variablen $HOME und $PSHOME auf Ihrer PowerShell-Installation zu finden, führen Sie bitte die folgenden Befehle aus:

$HOME

In der Regel ist der Wert für $HOME C:\Benutzer\Benutzername

$HOME-Wert
$PSHOME

Normalerweise ist der Wert für $PSHOME C:\Windows\System32\WindowsPowerShell\v1.0

$PSHOME-Wert

REMEMBER: Wenn Sie eine separate Installation von PowerShell Version 6 haben, können wir zusätzliche Profile erstellen. Zwei pro aktuellem Benutzer und zwei für alle Benutzer.

# Profiltyp Befehl Host Profil Dateiname Profil Dateispeicherort
1 CurrentUserCurrentHost $profile Console Microsoft.PowerShell_profile.ps1 $HOME\ Documents\PowerShell\
2 CurrentUserAllHosts $profile.CurrentUserAllHosts profile.ps1 $HOME\ Documents\PowerShell\
3 AllUsersCurrentHost $profile.AllUsersCurrentHost Console Microsoft.PowerShell_profile.ps1 $PSHOME\
4 AllUsersAllHosts $profile.AllUsersAllHosts profile.ps1 $PSHOME\

Tabelle 2 – PowerShell v6 Profiltypen, Befehle, Hosts, Dateinamen, Dateispeicherorte

Der Wert für $HOME ist normalerweise C:\Benutzer\Benutzername

$HOME-Wert für PowerShell v6

In der Regel ist der Wert für $PSHOME C:\Programme\PowerShell\6

$PSHOME-Wert für PowerShell v6

Hinweis: Der Unterschied zwischen den Ordnernamen im Ordner Dokumente PowerShell v6 ist PowerShell und der Ordnername für frühere PowerShell-Versionen ist WindowsPowerShell.

So erstellen Sie ein PowerShell-Profil Schritt für Schritt

Hier zeige ich Ihnen genau, wie Sie ein PowerShell-Profil erstellen.

Erstellen eines PowerShell-Profils für den aktuellen Benutzer und den aktuellen Host

Dies ist das Standardprofil von Windows PowerShell.

Befolgen Sie diese Schritte, um ein PowerShell-Profil für die Konsole als Host und den aktuellen Benutzer zu erstellen:

Schritt 1: Öffnen Sie die Windows PowerShell-Konsole (aktueller Host).

Window PowerShell-Konsole

Schritt 2: Zuerst testen wir, ob das Profil in unserer PowerShell-Installation vorhanden ist oder nicht. Geben Sie den folgenden Befehl in die Windows PowerShell-Konsole ein, und drücken Sie die EINGABETASTE.

Test-Path $PROFILE

ERINNERUNG: Parameterwert für Test-Pfad CmdLassen Sie uns aus Tabelle 2 – Befehlsspalte entnehmen. ($profile, $profile.CurrentUserAllHosts, etc)

Schritt 3: Wenn das Ergebnis des vorherigen Befehls falsch ist, existiert das Profil nicht, also gehen Sie zu Schritt 4. Wenn das Ergebnis wahr ist, existiert die Profildatei, also gehen Sie zu Schritt 5

Profildatei existiert nicht (falsch)

Schritt 4: Da das Profil nicht existiert, erstellen wir eines mit dem folgenden Befehl, den Sie eingeben und ENTER drücken.

New-Item -Type File -Force $PROFILE

Profildatei wurde erstellt
Microsoft.PowerShell_profile.ps1 – Profil für den aktuellen Benutzer und die Konsole als Host

Schritt 5: Das Profil wurde erstellt und wir können die Profildatei in PowerShell ISE mit dem folgenden Befehl öffnen und ENTER drücken.

ise $PROFILE
Windows PowerShell ISE mit Profildatei öffnen

Schritt 6: Die leere Profildatei wurde in Windows PowerShell ISE geöffnet

Windows PowerShell ISE hat eine leere Profildatei Microsoft.PowerShell_profile.ps1

Schritt 7: Fahren Sie mit Beispiel 1 fort, um zu sehen, wie Sie dieses Profil anpassen können.

Erstellen eines PowerShell-Profils für den aktuellen Benutzer und alle Hosts

Befolgen Sie die folgenden Schritte, um ein PowerShell-Profil zu erstellen:

Schritt 1: Öffnen Sie die Windows PowerShell-Konsole (Dies ist nur ein beliebiger Host, um die Befehle auszuführen, und wir können diese Schritte auch von Windows PowerShell ISE aus durchführen).

Schritt 2: Zuerst testen wir, ob das Profil in unserer PowerShell-Installation vorhanden ist oder nicht. Geben Sie den folgenden Befehl in die Windows PowerShell-Konsole ein, und drücken Sie die EINGABETASTE.

Test-Path $PROFILE.CurrentUserAllHosts

ERINNERUNG: Parameterwert für Test-Path CmdLet we get from Table 2 – Command column. ($profile, $profile.CurrentUserAllHosts, etc)

Schritt 3: Wenn das Ergebnis des vorherigen Befehls falsch ist, existiert das Profil nicht, also gehen Sie zu Schritt 4. Wenn das Ergebnis wahr ist, existiert die Profildatei, also gehen Sie zu Schritt 5

Profildatei existiert nicht (falsch)

Schritt 4: Da das Profil nicht existiert, erstellen wir eines mit dem folgenden Befehl, den Sie eingeben und ENTER drücken.

New-Item -Type File -Force $PROFILE.CurrentUserAllHosts
Die Profildatei wurde erstellt
Datei Profil.ps1 – Profil für den aktuellen Benutzer und alle Hosts

Schritt 5: Das Profil wurde erstellt und wir können die Profildatei in PowerShell ISE mit dem folgenden Befehl öffnen und ENTER drücken.

ise $PROFILE.CurrentUserAllHosts

Schritt 6: Die leere Profildatei wurde in Windows PowerShell ISE geöffnet

Windows PowerShell ISE hat eine leere Profildatei profile.ps1 geöffnet

Schritt 7: Fahren Sie mit Beispiel 2 fort, um zu sehen, wie Sie das Profil anpassen können.

Wir wiederholen den Vorgang für andere Profiltypen, nur dass wir den richtigen Variablenwert in der Spalte Befehl aus Tabelle 1 – PowerShell-Profiltypen, Befehle, Hosts, Dateinamen, Dateispeicherorte verwenden.

  • $profile.AllUsersCurrentHost
  • $profile.AllUsersAllHosts

REMEMBER: Wenn Sie ein Profil für Windows PowerShell ISE als Host erstellen möchten, müssen Sie Windows PowerShell ISE öffnen und die Schritte befolgen, indem Sie die Befehle von der Windows PowerShell ISE-Konsole ausführen (siehe den Screenshot unten)

Windows PowerShell ISE-Konsole und entsprechende Profildatei für die ISE als Host

Bearbeiten von Windows PowerShell-Profilen mit Beispielen

Beispiel 1 – Profil für Konsole als Host und aktueller Benutzer (aktueller Benutzer – aktueller Host)

Profilname: Microsoft.PowerShell_profile.ps1
Profilspeicherort: $Home\Documents\WindowsPowerShell\
Verwendet für: In diesem Beispiel habe ich die Hintergrundfarben der Schrift geändert, damit sie besser lesbar sind.

Hier ist der Code in der Profildatei Microsoft.PowerShell_profile.ps1. Kopieren Sie einfach den Code in die Profildatei und speichern Sie die Änderungen, um das gleiche Farbschema zu haben oder passen Sie es nach Ihren Wünschen an.

Set-PSReadLineOption -colors @{ Operator = 'Cyan' Parameter = 'Cyan' String = 'White'}
Microsoft.PowerShell_profile.ps1 profile file code

Auf einigen älteren Systemen war die Einstellung von Set-PSReadLineOption CmdLet ein wenig anders, wie im folgenden Beispiel.

Set-PSReadlineOption -TokenKind String -ForegroundColor MagentaSet-PSReadlineOption -TokenKind Operator -ForegroundColor CyanSet-PSReadlineOption -TokenKind Parameter -ForegroundColor Cyan 

Die Schriftfarben wurden von diesem…

PowerShell Console-Schriftfarben ohne Profilanpassung.

… zu diesem geändert.

PowerShell Console-Schriftfarben nach Profilanpassung.

Verwenden Sie Get-PSReadLineOption CmdLet, um die gültigen Farbargumente und aktuellen Argumentwerte (Farben) anzuzeigen.

Get-PSReadLineOption CmdLet und aktuelles Farbschema

Beispiel 2 – Profil für Windows PowerShell Console und ISE als Hosts (Aktueller Benutzer – Alle Hosts)

Profilname: profile.ps1
Profilspeicherort: $Home\Documents\WindowsPowerShell\
Verwendet für: Wenn Sie die Windows PowerShell-Konsole und ISE gleichzeitig anpassen oder eigene erweiterte Funktionen oder CmdLets sowohl in der PowerShell-Konsole als auch in der ISE ausführen möchten.

In diesem Beispiel lade ich meine eigenen PowerShell-Module für einige CmdLets, die ich geschrieben habe und die Teil des Efficiency Booster PowerShell-Projekts sind. Dieses Projekt ist eine Bibliothek meiner eigenen CmdLets, die in verschiedenen Modulen organisiert sind, und ich empfehle Ihnen dringend, die Zip-Datei mit den Projektdateien herunterzuladen und in Ihrer eigenen Umgebung zu testen, damit Sie mir in den Artikeln auf diesem Blog folgen können.

Hier sind die Befehle zum Importieren der Module und des Inhalts der Profildatei.

Import-Module 02utilsImport-Module 03commonImport-Module 04maintenance
Profile.ps1 profile file code

Wir können schnell testen, ob die importierten Module wirklich geladen werden, wenn wir die PowerShell-Konsole mit dem folgenden Befehl öffnen:

Get-Module -ListAvailable
Importierte Module in der Profildatei werden in der PowerShell Console-Umgebung geladen

Um die Verknüpfung von PowerShell-Profilen, Modulen und CmdLets besser zu verstehen, lesen Sie bitte die folgende Unterüberschrift dieses Beitrags Wie Sie Ihre eigenen PowerShell-CmdLets in PowerShell-Modulen organisieren und welches Profil Sie verwenden, um diese Struktur zu organisieren und wie wir PowerShell-Profil, Modul und CmdLet miteinander verknüpfen.

Beispiel 3 – Profil für ISE als Host (Aktueller Benutzer – Aktueller Host)

Profilname: Microsoft.PowerShellISE_profile.ps1
Profilstandort: $Home\Documents\WindowsPowerShell\
Verwendet für: In diesem Beispiel habe ich ein Modul importiert, das CmdLets enthält, die Add-ons für Windows PowerShell ISE sein werden.

Hier ist der Befehl, der in die Profildatei kopiert werden muss.

Import-Module 09addons
Microsoft.PowerShellISE_profile.ps1 profile file code

Als Ergebnis werden wir zwei Add-ons in Windows PowerShell ISE haben. Bitte lesen Sie diese beiden Artikel, um mehr darüber zu erfahren, wie man sie codiert.

  • Wie Sie erweiterte Funktionen oder CmdLets mit PowerShell schreiben (schnell)
  • Wie Sie PowerShell-Funktionen oder CmdLet-Hilfen schreiben (schnell)
Windows PowerShell ISE Add-ons

Wir können schnell testen, ob importierte Module wirklich geladen werden, wenn wir die PowerShell-Konsole mit dem folgenden Befehl öffnen:

Get-Module -ListAvailable
Importiertes Modul in Profildatei wird in der PowerShell ISE-Umgebung geladen

Hinweis: Windows PowerShell ISE importiert vier Modelle aus zwei Profildateien ( profile.ps1 und Microsoft.PowerShellISE_profile.ps1 ).

Beispiel 4 – Profil für Windows PowerShell Console und ISE als Hosts (alle Benutzer – alle Hosts)

Profilname: profile.ps1
Profilspeicherort: $PSHOME\
Verwendet für: In diesem Beispiel habe ich nur den Titel der PowerShell-Konsole und der ISE für den aktuellen Benutzer und den Administrator geändert.

Hier ist der Code in der Profildatei:

$NTIdentity = ::GetCurrent()$NTPrincipal = new-object Security.Principal.WindowsPrincipal $NTIdentity$IsAdmin = $NTPrincipal.IsInRole(::Administrator)$hostversion="v$($Host.Version.Major).$($Host.Version.Minor)"$hostname = $host.NameIF ($IsAdmin){ if($hostname -eq "ConsoleHost") { $host.ui.RawUI.WindowTitle = "Your Text in Windows PowerShell $hostversion - Running as ADMINISTRATOR" } else { $host.ui.RawUI.WindowTitle = "Your Text in Windows PowerShell ISE $hostversion - Running as ADMINISTRATOR" }}Else{ if($hostname -eq "ConsoleHost") { $host.ui.RawUI.WindowTitle = "Your Text in Windows PowerShell $hostversion" } else { $host.ui.RawUI.WindowTitle = "Your Text in Windows PowerShell ISE $hostversion" }}

Sie können sehen, dass die Titel der PowerShell-Konsole und der ISE einen benutzerdefinierten Text, den Namen des Hosts und die Version von PowerShell im Titel enthalten.

Benutzerdefinierter Text für Konsolentitel
Benutzerdefinierter Text für Konsolentitel bei Ausführung als Administrator
Benutzerdefinierter Text für Windows PowerShell ISE-Titel

Nützliche PowerShell-Befehle, die Sie in Bezug auf Profile kennen müssen

Hier sind einige nützliche PowerShell-Befehle, die Ihnen helfen, Informationen über Profile zu erhalten.

Als Ergebnis der Ausführung eines der Profilbefehle erhalten Sie den Speicherort der Profildatei.

$profile$profile.AllUsersCurrentHost$profile.CurrentUserAllHosts$profile.AllUsersAllHosts
Profilbefehle

WICHTIG: Wenn Sie den Speicherort der Profildatei für Windows PowerShell ISE als Host finden möchten, müssen Sie Windows PowerShell ISE öffnen und Profilbefehle von der Windows PowerShell ISE-Konsole ausführen

Verwenden Sie Test-Path CmdLet, um zu prüfen, ob die Profildatei auf dem System vorhanden ist oder nicht. Wenn Sie True als Ergebnis erhalten, ist das Profil vorhanden und false bedeutet, dass die Profildatei nicht vorhanden ist. Verwenden Sie Befehle aus Tabelle 1 – PowerShell-Profiltypen, Befehle, Hosts, Dateinamen, Dateispeicherorte, um nach anderen Profiltypen zu suchen, unabhängig davon, ob sie vorhanden sind oder nicht.

Test-Path $PROFILE

Mit dieser Codezeile wird eine Profildatei erstellt. Verwenden Sie Befehle aus Tabelle 1 – PowerShell-Profiltypen, Befehle, Hosts, Dateinamen, Dateispeicherorte, um andere Profiltypen zu erstellen.

New-Item -Type File -Force $PROFILE.CurrentUserAllHosts

Wenn Sie den Inhalt der Profildatei entweder in Notepad oder Windows PowerShell ISE lesen möchten, verwenden Sie diese beiden Befehle.

ise $PROFILEnotepad $PROFILE

Persönlich bevorzuge ich Windows PowerShell ISE, da dies eine bequemere Umgebung für das Schreiben von PowerShell-Code ist.

Verwenden Sie diese Codezeile, um Profilpositionen für alle Profiltypen abzurufen.

$profile | Get-Member -Type NoteProperty | Select-Object Definition
Speicherorte der Profildateien

Kreuzen Sie diese beiden Variablen an, um den Speicherort der PowerShell-Installation bzw. das Home-Verzeichnis abzurufen.

$pshome$home 

So wählen Sie die zu verwendende Profildatei aus

Wenn Sie mehrere Hostanwendungen wie Windows PowerShell Console und ISE verwenden, legen Sie alle Anpassungen im Profil $PROFILE.CurrentUserAllHosts für den aktuell angemeldeten Benutzer ab. Ich habe zum Beispiel meine eigenen CmdLets erstellt, die in Modulen organisiert sind, also habe ich die Befehle zum Laden dieser Module in diesem Profil abgelegt, da ich möchte, dass die Module sowohl beim Öffnen von PowerShell Console als auch von ISE geladen werden. Siehe Beispiel 2 zur Veranschaulichung.

Wenn Sie die Hostanwendung spezifisch anpassen möchten, fügen Sie den gesamten Anpassungscode in ein für diese Hostanwendung spezifisches Profil ein. Ich ändere zum Beispiel die Hintergrundfarbe der PowerShell-Konsolen-Schriftarten, damit sie besser sichtbar sind, oder ich habe Module geladen, die Add-Ons für ISE sind. Ich habe das in Beispiel 1 für die PowerShell Console und in Beispiel 3 für PowerShell ISE gezeigt.

Wenn Sie PowerShell für viele Benutzer anpassen müssen und Sie ein Administrator sind, dann befolgen Sie diese Tipps:

  • Speichern Sie die häufigsten Anpassungen im $PROFILE.AllUsersAllHosts-Profil, da dies den größten Umfang hat
  • Wenn Sie Windows PowerShell für alle Benutzer, aber spezifisch für eine Hostanwendung anpassen möchten. Wenn Sie z. B. eine andere Anpassung für die Windows PowerShell-Konsole und eine andere Anpassung für Windows PowerShell ISE vornehmen möchten, legen Sie den Code in $PROFILE.AllUsersCurrentHost-Profile
  • Schreiben Sie den Code für bestimmte Benutzer in die benutzerspezifischen Profile. Grundsätzlich bedeutet das, dass Sie entweder das Profil $PROFILE.CurrentUserAllHosts oder $PROFILE.CurrentUserCurrentHost verwenden.

So führen Sie die Konsole oder ISE ohne geladene Profile aus

Öffnen Sie den Ausführungsdialog Win + R und öffnen Sie PowerShell mit der Option -NoProfile.

PowerShell.exe -NoProfile

Warnung: PowerShell-Ladezeit

Mit einem größeren und komplexeren Profil kann es Auswirkungen darauf haben, wie schnell PowerShell geöffnet wird. Um herauszufinden, ob Ihr Profil für schlechte PowerShell-Ladezeiten verantwortlich ist, öffnen Sie das Ausführen-Dialogfeld Win + R und öffnen Sie PowerShell mit der Option -NoProfile.

PowerShell.exe -NoProfile

Profile und Remotesitzungen

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

Um ein Profil in einer Sitzung auszuführen, verwenden Sie den Invoke-Befehl CmdLet.

Der folgende Befehl führt zum Beispiel das Profil „Aktueller Benutzer, aktueller Host“ vom lokalen Computer in der Sitzung in $s aus.

Invoke-Command -Session $s -FilePath $PROFILE

Wie Sie Ihre eigenen PowerShell-CmdLets in PowerShell-Modulen und -Profilen organisieren

Um die Verbindung zwischen PowerShell-Profil, Modul und CmdLet zu verstehen, habe ich ein Efficiency Booster-PowerShell-Projekt mit vielen meiner eigenen CmdLets erstellt, die in einer Reihe von Modulen organisiert sind, die in jeder PowerShell-Sitzung mit dem PowerShell-Profil geladen werden, wenn ich die Windows PowerShell Console oder ISE öffne.

Bitte laden Sie sich die Zip-Datei herunter, die den Code für das Projekt enthält, damit Sie einfach mitmachen können. In der ReadMe.txt-Datei werden die Installations- und Anpassungsschritte erläutert, also lesen Sie bitte die Anweisungen in dieser Datei. Noch besser können Sie die Installations- und Anpassungsanweisungen im folgenden Artikel How To Install And Configure PowerShell lesen: CmdLets, Modules, Profiles.

Ich werde die Analogie zwischen Buchhandlung, Bücherregalen und Büchern verwenden, um die Verbindung zwischen Powershell Profile, Module und CmdLet zu erklären.

Stellen Sie sich zum Beispiel vor, dass Sie mehr über PowerShell Scripting lernen möchten und Sie einige Bücher zu diesem Thema in der Buchhandlung kaufen möchten.

Sie gehen in die Buchhandlung und sehen viele Regale mit verschiedenen Etiketten für Buchabteilungen wie Kunst, Wirtschaft, Computer, Literatur, Reisen, usw. Natürlich gehen Sie zu den Regalen mit der Aufschrift Computer und finden dort das Buch, das PowerShell Scripting erklärt und das Sie kaufen möchten.

Lassen Sie uns nun zurück in die PowerShell-Welt gehen und die Analogiegeschichte mit PowerShell verknüpfen:

  • Das CmdLet, das wir mit PowerShell oder einem selbst geschriebenen CmdLet verwenden, ist das Buch.
  • Der Code dieses CmdLets ist der Inhalt des Buches.
  • Das PowerShell-Modul ist das Regal einer Buchhandlung, z. B. das Regal der Computerbuchhandlung, in dem unser Buch steht.
  • Das PowerShell-Profil schließlich ist die Buchhandlung selbst.

Jedes Mal, wenn wir die Windows PowerShell-Konsole oder ISE öffnen, öffnen wir unsere Sitzung und mit dieser Sitzung werden Profildateien geladen und angepasst, um unsere PowerShell-Umgebung so einzurichten, wie wir es wünschen.

Im Fall von Modulen und CmdLets. Die Profildatei importiert die Module und das Modul lädt jedes CmdLet-Skript, das zu diesem Modul gehört.

Da ich meine eigenen CmdLets sowohl in der Windows PowerShell-Konsole als auch in den ISE-Host-Anwendungen verwenden möchte, bevorzuge ich es, ein $profile zu erstellen.CurrentUserAllHosts-Profiltyp, der nichts anderes als die Datei Profile.ps1 ist, die in folgendem Ordner erstellt wird:

  • $Home\ Documents\WindowsPowerShell\ Ordner für PowerShell Version 5.1 und älter
  • $Home\ Documents\PowerShell\ Ordner für PowerShell Version 6.0.

So verknüpfen wir PowerShell-Profil, Modul, und CmdLet

Hier ist eine kurze Beschreibung dieser Struktur in PowerShell

  • Erstellen eines PowerShell-Profils
  • Erstellen eines Modulordners und einer Dateistruktur
  • Anpassen des Profils zum Importieren der erforderlichen Module
  • CmdLet PowerShell-Skript erstellen
  • Eigenen CmdLet-Funktionscode schreiben
  • Modul-Datei anpassen, um das CmdLet-Skript zu importieren

Ich werde diesen Prozess anhand von Beispielen des Efficiency Booster PowerShell-Projekts für das Profil veranschaulichen, Module und CmdLets veranschaulichen, damit es für jeden einfacher ist, den gesamten Prozess zu verstehen. Ich empfehle daher nochmals jedem, die mitgelieferte Zip-Datei zu installieren.

Befolgen Sie diese Schritte, um ein PowerShell-Profil, ein Modul und ein CmdLet zu erstellen und miteinander zu verknüpfen:

Schritt 1: Öffnen Sie die Windows PowerShell-Konsole

Schritt 2: Als erstes werden wir testen, ob das Profil in unserer PowerShell-Installation vorhanden ist oder nicht. Geben Sie den folgenden Befehl in die Windows PowerShell ein und drücken Sie die EINGABETASTE

Test-Path $PROFILE.CurrentUserAllHosts

Schritt 3: Wenn das Ergebnis des vorherigen Befehls falsch ist, existiert das Profil nicht, gehen Sie also zu Schritt 4. Wenn das Ergebnis wahr ist, existiert die Profildatei, also gehen Sie zu Schritt 5

Schritt 4: Da das Profil nicht existiert, erstellen wir eines mit dem folgenden Befehl, den Sie eingeben und ENTER drücken.

New-Item -Type File -Force $PROFILE.CurrentUserAllHosts

Schritt 5: Das Profil wurde erstellt und wir können die Profildatei in PowerShell ISE mit dem folgenden Befehl öffnen und ENTER drücken.

ise $PROFILE.CurrentUserAllHosts

Schritt 6: Die Profildatei wurde in PowerShell ISE geöffnet.

Schritt 7: Jetzt müssen wir eine Modulordnerstruktur und die erforderlichen Dateien erstellen.

Schritt 8: In dem Ordner, in dem wir unsere Profildatei erstellt haben, erstellen wir einen Modulordner mit dem genauen Namen Module. Hier werden wir die Ordnerstruktur aller unserer Module aufbewahren.

Ordner Module

Schritt 9: Im Ordner Module erstellen Sie die Ordner für jedes Modul, das Sie haben möchten. Ich habe zum Beispiel die folgenden Module im Efficiency Booster PowerShell Project erstellt.

Module des Efficiency Booster PowerShell Project

Schritt 10: In jedem Modulordner erstellen wir eine Datei mit der Erweiterung .psm1 und dem exakt gleichen Namen wie der Modulordner. Zum Beispiel erstellen wir im Ordner 03common die Datei 03common.psm1

PowerShell-Moduldatei psm1

Schritt 11: Optional können wir eine Manifestdatei (.psd1) für jedes Modul erstellen, die diesen Ordner näher beschreibt.

Schritt 12: Im gleichen Modulordner erstellen wir die Datei mit der Erweiterung .ps1 (reguläre PowerShell-Skriptdatei), in die wir den Code für unser eigenes CmdLet schreiben. Zum Beispiel können wir die Datei GetCPUInfo.ps1 erstellen, in der wir den Code für unser eigenes Get-CPUInfo CmdLet schreiben werden.

Get-CPUInfo CmdLet Skriptdatei

Schritt 13: Jetzt sind wir bereit, unseren eigenen CmdLet-Code zu schreiben und ihn zu skripten. Schauen Sie sich das Beispiel Get-CPUInfo und andere CmdLets aus dem Efficiency Booster PowerShell Projekt an. In zukünftigen Beiträgen werde ich mehr Details über jedes CmdLet im Projekt schreiben. Für den Moment können Sie den Quellcode des Projekts hier herunterladen.

Get-CPUInfo CmdLet Quellcode

Schritt 14: Verknüpfen Sie ein CmdLet-Skript mit dem richtigen PowerShell-Modul. Öffnen Sie die .psm1-Datei des Moduls und schreiben Sie diese Codezeile:
. $psScriptRoot\NameOfCmdLetScriptFile.ps1
Zum Beispiel für Get-CPUInfo CmdLet schreiben wir diese Codezeile in 03common.psm1 file:

. $psScriptRoot\GetCPUInfo.ps1 
Die Verbindung zwischen CmdLet-Skriptdatei und Modul

Schritt 15: In der Profil-Skriptdatei importieren wir das Modul, das unsere CmdLet-Skriptdatei enthält, also schreiben wir diesen Befehl in die Profildatei.
Importiere-Modul Modulname
Zum Beispiel ist unser Get-CPUInfo CmdLet Teil des 03common-Moduls, also schreiben wir diesen Code in die Profildatei:

Import-Module 03common
Die Verbindung zwischen Profil und Modul

Schritt 16: Wir wiederholen die Schritte 9 -15 für jedes Modul und CmdLet, das wir in unserem Profil haben möchten und das mit jeder PowerShell-Sitzung geladen werden soll, die wir starten.

Schritt 17: Wir testen, ob alle importierten Module geladen sind, wenn wir einen bestimmten Host öffnen. Wir können die Module mit dem folgenden Befehl auflisten:

Get-Module -ListAvailable
Geladene Module in PowerShell-Konsolenumgebung

Schritt 18: Wir können testen, ob alle CmdLets innerhalb jedes Moduls in die Umgebung geladen werden. Hier ist der nützliche Beispielbefehl:

Get-Command -Module 02utils
Geladene CmdLets in PowerShell-Konsolenumgebungen für 02utils-Modul

Nützliche PowerShell-Profilartikel

Schreibe einen Kommentar

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