PowerShell 7-Funktionen, die Administratoren prüfen sollten

Die meisten Ergänzungen zu den kommenden PowerShell 7-Operatoren und Cmdlets Dies sind mehr Komfort und Tools für Kreaturen, die die Verwendung der Open Source-Version von PowerShell für alle verbessern.

Zwar gibt es einige leistungsorientierte Änderungen, doch viele konzentrieren sich darauf, PowerShell 7 zur Go-to-Version für alle Benutzer zu machen, einschließlich derer, die noch Windows PowerShell verwenden. Zum Zeitpunkt der Veröffentlichung hat das PowerShell-Entwicklungsteam einen PowerShell 7-Release-Kandidaten herausgebracht, den Microsoft in der Produktion unterstützt. Die offizielle allgemein verfügbare Version wird voraussichtlich Ende Februar erscheinen. Bei einer Markenänderung wird Microsoft den Kernteil des PowerShell-Namens in Version 7 löschen.

Ältere Windows-Befehle werden unterstützt

Der Übergang von PowerShell nur für Windows zu plattformübergreifendem PowerShell Core 6 hinterließ viele Befehle, die Administratoren und andere IT-Mitarbeiter häufig verwendeten. In PowerShell Core 6.1 wurden einige dieser Befehle zurückgegeben, um die Funktionslücke mit Windows PowerShell zu schließen. PowerShell Core wurde entwickelt, um mit der vorhandenen Windows PowerShell-Installation zusammenzuarbeiten und Administratoren beim Übergangsprozess zu unterstützen.
PowerShell 7 erweitert diese Liste der Nur-Windows-Befehle weiter, indem ein neuer Prozess zur Verarbeitung der Befehle verwendet wird. Wenn Sie in PowerShell 7 einen Nur-Windows-Befehl ausführen, wird ein neuer Runspace ausgeführt und die Version von Windows PowerShell auf dem Computer geöffnet, um den Befehl auszuführen. Da dies im Hintergrund geschieht, ist die Ausführung nahtlos.

Die Get-Error-Funktion

Das Lesen von PowerShell-Fehlern hat noch nie Spaß gemacht, und es kann schwierig sein, herauszufinden, was der Fehler wirklich bedeutet und, was noch wichtiger ist, was den Fehler verursacht. Um zu helfen, hat PowerShell 7 eine neue Get-Error Befehl.

Cmdlet Get-Error
Das neue
Get-Error Mit dem Cmdlet erhalten Sie umfangreiche Informationen in einem PowerShell-Fehlerdatensatz

Ausführen der Get-Error Befehl erweitert die Details des letzten Fehlers. Zuvor mussten Sie sich daran erinnern, wo die einzelnen Objekte begraben sind. In PowerShell 7 können Sie verwenden Get-Error um alle Daten in einer leicht lesbaren Liste darzustellen.

Eine neue Möglichkeit, Skripte parallel auszuführen

PowerShell bietet seit einiger Zeit mehrere Möglichkeiten, mehrere Prozesse mithilfe von Workflows, Hintergrundjobs und Runspaces parallel auszuführen. Leider kann es schwierig sein, mit diesen Prozessen Ihren Code zum Laufen zu bringen, wenn Sie nicht mit der Parallelisierung begonnen haben.
Sie könnten Runspaces verwenden, dies erfordert jedoch einige Kenntnisse über .NET-Klassen und kann schwierig zu beheben sein. Mit PowerShell 7 gibt es jetzt eine -Parallel Schalter für die Für jedes Objekt Befehl, mit dem die Runspaces hinter den Kulissen arbeiten. Sie können Code schreiben, der problemlos mehrere Instanzen der Schleife gleichzeitig ausführt, solange er nicht mit etwas interagiert, das serialisiert werden muss. Beim Hinzufügen der Parallel Mit switch wird nicht jedes Skript schneller ausgeführt, es kann in einigen Fällen einen signifikanten Unterschied bewirken.

Ternäre Operatoren helfen beim Trimmen der Codelänge

PowerShell hatte wenn Aussagen von Anfang an, aber jetzt führen die PowerShell-Entwickler die ternärer Operator zu der Mischung. Diese Funktion kann das Einfache vereinfachen und verdichten wenn Anweisungen, die bereits verwendet werden.
Schauen Sie sich als Beispiel den Codeblock an, der mehrere enthält wenn Aussagen:

if (Test-Path $Path) {
    $Property1 = $Path
} else {
    $Property1 = "C:"
}
if ((Get-Date).DayOfWeek -eq "Monday") {
    $Property2 = "Monday"
} else {
    $Property2 = "Not Monday"
}

In PowerShell 7 werden nicht alle diese Zeilen verwendet, um das Einfache zu handhaben wenn Anweisungen können Sie den ternären Operator wie folgt verwenden:

$Property1 = (Test-Path $Path) ? $Path : "C:"
$Property2 = ((Get-Date).DayOfWeek -eq "Monday") ? "Monday" : "Not Monday"

Während der ternäre Operator eine andere Möglichkeit bietet, einfach zu zeigen wenn Aussagen, es ist kein Ersatz für eine wenn Aussage. Dies gilt insbesondere bei komplizierten wenn Anweisungen mit mehreren elseif Aussagen enthalten.

Pipeline-Kettenoperatoren helfen beim Debuggen von Skripten

Eine weitere nützliche Ergänzung zu PowerShell 7 sind die neuen Pipeline-Betreiber. Wenn Sie zuvor in der Mitte der Pipeline nach Fehlern suchen wollten, war dies unübersichtlich und erforderte, dass Sie die Pipeline um die Erweiterung erweitern wenn Anweisungen zum Verschachteln des nächsten Befehls in der Pipeline. Da dies die Verwendung der Pipeline vereinfacht, entscheiden sich die meisten Benutzer dafür, diese Art von Arbeit in mehrere Befehle aufzuteilen und dazwischen eine Fehlerprüfung durchzuführen.
Die neuen Pipeline-Betreiber ermöglichen eine einfache Fehlerprüfung in der Mitte der Pipeline. Im Folgenden finden Sie ein Beispiel für das Ausführen eines Befehls zum Importieren eines Moduls und anschließendes Ausführen eines Befehls aus dem Modul mit Fehlerbehandlung:

try {
    Import-Module TestModule
    Test-Module
} catch {
    #Does nothing
}

Das versuche … zu fangen Anweisung funktioniert, nimmt aber viel Platz ein. Außerdem nimmt der catch-Block nur Platz mit nicht verwendetem Code ein. Alternativ finden Sie den folgenden Code mit dem neuen UND (&&) Operator, der einen Pipeline-Operator verwendet.

Import-Module TestModule && Test-Module

Das && Der Operator setzt die Pipe nur fort, wenn der vorherige Befehl erfolgreich ausgeführt wurde.
Das ODER (||) Der Operator ist ein weiterer nützlicher Pipeline-Kettenoperator, der in PowerShell 7 neu ist. Der folgende Code verwendet denselben versuche … zu fangen Aussage:

try {
    Get-Content $Path
} catch {
    Get-Content $Path2
}

In PowerShell 7 können wir die verwenden ODER Pipeline-Operator, um den Code stattdessen wie unten gezeigt in eine einzelne Zeile zu komprimieren:

Get-Content $Path || Get-Content $Path2

Ähnlich wie der ternäre Operator ist der Pipeline-Kettenoperator kein Ersatz für den gesamten Code, aber es ist praktisch, viel kürzere Codeblöcke zu erstellen.

Nullzuweisungs- und Koaleszenzoperatoren helfen dabei, den Code zu optimieren

Die letzte neue Erweiterung der Operatoren für PowerShell 7 sind die Nullzuweisungs- und Koaleszenzoperatoren. Diese neuen Operatoren ersetzen die einfachen wenn und sonst Anweisungen, mit denen eine Variable verglichen wird, um festzustellen, ob dies der Fall ist $ null. Im Folgenden finden Sie ein Beispiel dafür, wie Sie dies vor PowerShell 7 codieren würden:

if ($null -eq $Path) {
    $Path = "C:"
}

Mit dem Null-Bedingungsoperator ((?? =)können Sie eine einzelne Codezeile wie unten gezeigt erstellen:

$Path ??= "C:"

Der bedingte Nulloperator prüft, ob der Ausdruck null ist, und wenn dies der Fall ist, macht er die Variable gleich dem zweiten Ausdruck. Ähnlich wie der Null-Bedingungsoperator ist der Null-Koaleszenzoperator (??) vergleicht den ersten Ausdruck mit null. Der Unterschied besteht darin, dass der zweite Ausdruck ausgegeben wird, wenn er gleich null ist. Wenn es nicht null ist, gibt es den ersten Ausdruck aus. Unten finden Sie ein Beispiel für die vorherige Syntax:

if ($null -eq $Path) {
    Write-Host "Path is null"
} else {
    $Path
}

Wenn Sie den Null-Koaleszenz-Operator verwenden, wird dieses Beispiel auf das folgende Beispiel komprimiert:

$Path ?? "Path is null"

In dem Fall, dass $ Pfad ist $ nullwird der Befehl ausgegeben Pfad ist null;; Andernfalls gibt der Befehl den Wert von aus $ Pfad.

Similar Posts

Leave a Reply