So verwenden Sie PowerShell-Standardparameter, um das Befehlsverhalten zu ändern

So verwenden Sie PowerShell-Standardparameter, um das Befehlsverhalten zu ändern

Viele Leute verwenden gerne PowerShell , weil sie damit Dinge tun können, die mit der Windows-GUI nicht möglich sind. Dennoch lässt sich nicht leugnen, dass einige PowerShell-Cmdlets etwas mühsam oder kompliziert sein können. Aber was wäre, wenn es eine Möglichkeit gäbe, diese Cmdlets zu bearbeiten und dafür zu sorgen, dass sie sich so „verhalten“, wie Sie es möchten? Ob Sie es glauben oder nicht, es gibt einen einfachen Weg, dies zu tun. Sie können das Verhalten des Cmdlets ändern, indem Sie die Werte der PowerShell-Standardparameter ändern. In diesem Artikel erfahren Sie, wie Sie die Standardparameter von PowerShell verwenden, um das Verhalten von Cmdlet-Befehlen zu ändern.

Warnung

Bevor Sie beginnen, müssen Sie einige Dinge beachten. Obwohl das Ändern der PowerShell-Standardparameter und des Cmdelt-Verhaltens praktisch ist, kann es zu Problemen führen. Wenn Sie ein Skript ausführen und dieses davon ausgeht, dass sich das geänderte Cmdlet auf eine bestimmte Weise verhält, erhalten Sie möglicherweise unvorhersehbare Ergebnisse. Daher sollten Sie darauf achten, die PowerShell-Standardparameter sorgfältig zu ändern.

Kurze Rezension

Es gibt zwei PowerShell-Konzepte, mit denen Sie vertraut sein müssen, um mit Standardparametern arbeiten zu können. Das erste Konzept ist variabel. In PowerShell beginnen Variablennamen immer mit einem Dollarzeichen, und Sie können den Inhalt einer Variablen schreiben, indem Sie den Variablennamen eingeben.

Das zweite Konzept, mit dem Sie vielleicht vertraut sind, ist die Hash-Tabelle. Eine Hash-Tabelle ist im Wesentlichen eine Liste, die aus Schlüssel/Wert-Paaren besteht. Angenommen, Sie möchten eine Hash-Tabelle erstellen, die die Namen der US-Bundesstaaten und deren Abkürzungen enthält. Unten ist der Code:

$StateList = @{}
$StateList.add('Florida','FL')
$StateList.add('South Carolina','SC')
$StateList.add('Georgia','GA')
$StateList

Die erste Codezeile erstellt eine leere Hash-Tabelle namens $StateList . Die nächsten drei Zeilen fügen der Tabelle Einträge hinzu. Jeder Eintrag besteht aus einem Schlüssel (Staatsname) und einem Wert (Staatskürzel). Die letzte Zeile listet den Inhalt der Tabelle auf. Im Bild unten können Sie den Code in Aktion sehen.

Dies ist nur ein sehr einfaches Beispiel und es gibt viele andere Möglichkeiten, Hash-Tabellen zu verwenden.

Arbeiten Sie mit PowerShell-Standardparametern

PowerShell verfügt über eine integrierte Variable zum Speichern von Standardparametern, die mit seinen Cmdlets verwendet werden. Diese Variable heißt $PSDefaultParameterValues . Wie Sie vielleicht anhand der ersten Einführung und des Namens der Variablen bemerkt haben, handelt es sich hierbei nicht um eine gewöhnliche Variable, sondern um eine Hash-Tabelle. Wenn Sie jedoch den Variablennamen in PowerShell eingeben, werden Sie schnell feststellen, dass die Tabelle leer ist, wie unten gezeigt.

So verwenden Sie PowerShell-Standardparameter, um das Befehlsverhalten zu ändern

Was können wir also mit dieser $PSDefaultParameterValues- Variable machen ? Wie oben erwähnt, können Sie das Verhalten von PowerShell-Cmdlets steuern. Der einzige Punkt ist, dass Sie die inhärenten Fähigkeiten des Cmdlet-Befehls nicht überwinden können. Schauen wir uns also ein Beispiel an.

Dieses Beispiel möchten Sie vielleicht nicht im wirklichen Leben verwenden, aber es zeigt Ihnen, wie einfach es ist, das Cmdlet-Verhalten radikal zu ändern. Wenn Sie das Cmdlet Get-TimeZone in PowerShell eingeben, wird der Name der Zeitzone angezeigt, für die Ihr PC derzeit konfiguriert ist. Sie können dieses Beispiel im Bild unten sehen.

So verwenden Sie PowerShell-Standardparameter, um das Befehlsverhalten zu ändern

Jetzt ändern wir dieses Cmdlet so, dass es nicht die Zeitzone anzeigt, für die das System konfiguriert ist, sondern die verfügbaren Zeitzonen. Dazu benötigen wir eine Cmdlet-Syntax mit dem Cmdlet Get-Help , gefolgt vom Cmdlet Get-TimeZone . Die Syntax des Cmdlets können Sie unten sehen.

So verwenden Sie PowerShell-Standardparameter, um das Befehlsverhalten zu ändern

Diese Syntax enthält einen Parameter namens ListAvailable . Geben Sie den folgenden Befehl ein:

$PSDefaultParameterValues.Add(“Get-TimeZone:ListAvailable”,$True)

Der erste Teil dieses Befehls teilt PowerShell lediglich mit, dass Sie der Hash-Tabelle einen Wert hinzufügen möchten, genau wie wir es im vorherigen Abschnitt mit dem Beispiel für die Abkürzung des US-Bundesstaates getan haben. Diese Hash-Tabelle enthält ein Schlüssel/Wert-Paar. In diesem Fall ist der Schlüssel der Cmdlet-Name (Get-TimeZone), gefolgt von einem Komma und dem Namen des Parameters, den Sie festlegen möchten. In diesem Fall lautet der Parametername ListAvailable. Der zweite Teil dieses Cmdlets ist der Wert, den Sie dem Parameter zuweisen möchten. Hier ist es $True . Der ListAvailable-Parameter benötigt normalerweise keinen Wert. Wenn Sie also „$True“ angeben , weisen Sie PowerShell an, diesen Parameter zu verwenden, ohne ihm einen Wert zuzuweisen.

Wenn Sie sich das Bild unten ansehen, sehen Sie, was passiert, wenn Sie das Cmdlet Get-TimeZone ausführen.

So verwenden Sie PowerShell-Standardparameter, um das Befehlsverhalten zu ändern

Dinge, die Sie beachten sollten

Das Wichtigste, was Sie verstehen müssen, ist, dass das Hinzufügen eines neuen Werts für einen PowerShell-Standardparameter dazu dient, das Standardverhalten des Cmdlets zu ändern, und nicht, dass die Funktionen des Cmdlets entfernt werden. Auch wenn Sie das Cmdlet „Get-TimeZone“ ändern, um verfügbare Zeitzonen anstelle der aktuellen Zeitzone anzuzeigen. Sie können weiterhin die aktuellen Zeitzoneninformationen anzeigen, wenn Sie mehr anzeigen.

Sie müssen außerdem wissen, dass benutzerdefinierte Standardparameter entfernt werden können. Um ein einzelnes Element zu entfernen, verwenden Sie den Befehl $PSDefaultParameterValues.Remove , gefolgt vom Namen des Elements, das Sie entfernen möchten. Zum Beispiel:

$PSDefaultParameterValues.Remove(“Get-TimeZone:ListAvailable”)

Stattdessen können Sie mit diesem Befehl den gesamten Inhalt der Hash-Tabelle löschen:

$PSDefaultParameterValues.Clear();

Beispiele für beide Techniken finden Sie unten:

So verwenden Sie PowerShell-Standardparameter, um das Befehlsverhalten zu ändern

Sie können die gesamte Hash-Tabelle oder einen einzelnen Eintrag löschen.

Das Standardverhalten eines Cmdlet-Befehls zu ändern, kommt nicht oft vor, aber wenn Sie es brauchen, wissen Sie bereits, wie Sie es ändern können.

Ich wünsche Ihnen viel Erfolg!

Mehr sehen:


So installieren Sie das macOS Big Sur/iOS 14-Widget unter Windows 10

So installieren Sie das macOS Big Sur/iOS 14-Widget unter Windows 10

Die macOS Big Sur-Version wurde kürzlich auf der WWDC-Konferenz offiziell angekündigt. Und mit dem Rainmeter-Tool können Sie die Benutzeroberfläche von macOS Big Sur vollständig auf Windows 10 übertragen.

So schützen Sie den Remote-Desktop vor RDStealer-Malware

So schützen Sie den Remote-Desktop vor RDStealer-Malware

RDStealer ist Malware, die versucht, Anmeldeinformationen und Daten zu stehlen, indem sie einen RDP-Server infiziert und seine Remote-Verbindungen überwacht.

Die 7 besten Dateiverwaltungsprogramme für Windows als Ersatz für den Datei-Explorer

Die 7 besten Dateiverwaltungsprogramme für Windows als Ersatz für den Datei-Explorer

Vielleicht ist es an der Zeit, sich vom Datei-Explorer zu verabschieden und Dateiverwaltungssoftware von Drittanbietern zu verwenden? Hier sind die 7 besten Windows-Datei-Explorer-Alternativen.

Wie funktioniert LoRaWAN? Warum ist es für das IoT wichtig?

Wie funktioniert LoRaWAN? Warum ist es für das IoT wichtig?

LoRaWAN oder Long Range Wireless Area Network ist nützlich für die Kommunikation zwischen Geräten mit geringem Stromverbrauch über große Entfernungen.

8 Möglichkeiten, die erweiterten Startoptionen unter Windows 10 zu öffnen

8 Möglichkeiten, die erweiterten Startoptionen unter Windows 10 zu öffnen

Durch Navigieren zu „Erweiterte Startoptionen“ können Sie Windows 10 zurücksetzen, Windows 10 wiederherstellen, Windows 10 aus einer zuvor erstellten Image-Datei wiederherstellen, Startfehler beheben, die Eingabeaufforderung öffnen, um Optionen auszuführen, andere auswählen, UEFI-Einstellungen öffnen und Starteinstellungen ändern. ..

Warum sollten Sie sorgfältig überlegen, bevor Sie sich mit einem Konto bei einem sozialen Netzwerk anmelden?

Warum sollten Sie sorgfältig überlegen, bevor Sie sich mit einem Konto bei einem sozialen Netzwerk anmelden?

Jedes Mal, wenn Sie sich für einen neuen Dienst anmelden, können Sie einen Benutzernamen und ein Passwort wählen oder sich einfach mit Facebook oder Twitter anmelden. Aber solltest du es tun?

Anleitung zum Ändern von Google DNS 8.8.8.8 und 8.8.4.4

Anleitung zum Ändern von Google DNS 8.8.8.8 und 8.8.4.4

DNS Google 8.8.8.8 8.8.4.4 ist einer der DNS, den viele Benutzer verwenden, insbesondere um den Netzwerkzugriff zu beschleunigen oder den Zugriff auf blockiertes Facebook zu beschleunigen.

So starten Sie Microsoft Edge unter Windows 10 immer im InPrivate-Modus

So starten Sie Microsoft Edge unter Windows 10 immer im InPrivate-Modus

Wenn Sie Microsoft Edge auf einem gemeinsam genutzten Windows 10-Computer verwenden und Ihren Browserverlauf privat halten möchten, können Sie festlegen, dass Edge immer im InPrivate-Modus startet.

Entdecken Sie den Unterschied zwischen symmetrischer und asymmetrischer Verschlüsselung

Entdecken Sie den Unterschied zwischen symmetrischer und asymmetrischer Verschlüsselung

Heutzutage werden üblicherweise zwei Arten der Verschlüsselung eingesetzt: die symmetrische und die asymmetrische Verschlüsselung. Der grundlegende Unterschied zwischen diesen beiden Verschlüsselungsarten besteht darin, dass bei der symmetrischen Verschlüsselung ein einziger Schlüssel sowohl für Verschlüsselungs- als auch für Entschlüsselungsvorgänge verwendet wird.

So beenden Sie den Vollbildmodus unter Windows

So beenden Sie den Vollbildmodus unter Windows

Der Vollbildmodus auf Ihrem Computer entfernt unnötige Inhalte. Wie kann man den Windows-Vollbildmodus verlassen?