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
$PSHOME
Normalerweise ist der Wert für $PSHOME C:\Windows\System32\WindowsPowerShell\v1.0
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
In der Regel ist der Wert für $PSHOME C:\Programme\PowerShell\6
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).
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
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
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
Schritt 6: Die leere Profildatei wurde in Windows PowerShell ISE geöffnet
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
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 leere Profildatei wurde in Windows PowerShell ISE 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)
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'}
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…
… zu diesem geändert.
Verwenden Sie Get-PSReadLineOption CmdLet, um die gültigen Farbargumente und aktuellen Argumentwerte (Farben) anzuzeigen.
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
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
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
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)
Wir können schnell testen, ob importierte Module wirklich geladen werden, wenn wir die PowerShell-Konsole mit dem folgenden Befehl öffnen:
Get-Module -ListAvailable
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.
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
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
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.
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.
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
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.
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.
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
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
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
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