Wie man PowerShell-Funktionen verwendet

  1. Unterschied Zwischen Funktionen und Cmdlets in PowerShell
  2. Einführung in Funktionen in PowerShell
  3. Parameter zu Funktionen in PowerShell hinzufügen
  4. Erstellen eines einfachen Parameters für eine Funktion in PowerShell
Wie man PowerShell-Funktionen verwendet

Wenn wir ein PowerShell-Skript schreiben, haben wir viele Optionen. Zum Beispiel könnten wir tausend Zeilen Code für Aufgaben schreiben, alles in einem einzigen Codeblock.

Das wäre jedoch kompliziert. Stattdessen sollten wir PowerShell-Funktionen schreiben.

PowerShell-Funktionen erhöhen die Nutzbarkeit und Lesbarkeit unseres Codes dramatisch, was die Arbeit damit viel einfacher macht. In diesem Artikel werden wir lernen, Funktionen zu schreiben, die Parameter unserer Funktionen hinzuzufügen und zu verwalten und Funktionen so einzurichten, dass sie Pipeline-Eingaben akzeptieren.

Unterschied Zwischen Funktionen und Cmdlets in PowerShell

Das Konzept einer PowerShell-Funktion könnte bekannt vorkommen, da es den nativen PowerShell-Cmdlets ähnelt. Befehle wie Write-Host und Start-Service sind beispielsweise sehr ähnlich wie Funktionen.

Cmdlets sind jedoch benannte Codeabschnitte, die ein einzelnes Problem lösen und nicht leicht anpassbar sind. Der Unterschied zwischen einem Cmdlet und einer Funktion liegt in der Art und Weise, wie diese Konstrukte erstellt werden.

Wir können sehen, welche Befehle Cmdlets und Funktionen sind, indem wir das Cmdlet Get-Command und seinen Parameter -CommandType verwenden.

Get-Command -CommandType Function

Der obige Befehl gibt alle Funktionen zurück, die derzeit in unsere PowerShell-Sitzung oder in Modulen geladen sind, die PowerShell zur Verfügung stehen.

Einführung in Funktionen in PowerShell

Wir verwenden das Schlüsselwort function, um eine Funktion zu definieren, gefolgt von einem beschreibenden, benutzerdefinierten Namen und einem Satz geschweifter Klammern. Innerhalb der geschweiften Klammern befindet sich ein Skriptblock, den wir von PowerShell ausführen lassen möchten.

Im Folgenden sehen wir eine primäre Funktion und die Ausführung dieser Funktion. Die Funktion, die Install-Software heißt, verwendet Write-Host, um eine Ausgabemeldung in der Konsole anzuzeigen (hauptsächlich zur Simulation einer Installation).

Sobald sie definiert ist, können wir den Namen dieser Funktion verwenden, um den Code in ihrem Skriptblock auszuführen.

Beispiel Code:

function Install-Software {
    Write-Host 'The software has been installed.'
}

Install-Software

Ausgabe:

The software has been installed.

Beste Praktiken für die Funktionsbenennung mit der Verb-Noun-Syntax in PowerShell

Der Name einer Funktion ist entscheidend. Wir können unsere Funktionen benennen, wie wir möchten, aber der Name sollte immer beschreiben, was die Funktion tut.

Die beste Praktik für die Funktionsbenennung in PowerShell ist die Verb-Noun-Syntax.

Wir sollten immer mit einem Verb beginnen, gefolgt von einem Bindestrich und einem Nomen. Verwenden Sie das Cmdlet Get-Verb, um die Liste der genehmigten Verben zu finden.

Definieren einer erweiterten Funktion in PowerShell

Das Tutorial geht davon aus, dass wir den vorherigen Code direkt in die PowerShell-Konsole kopiert und eingefügt haben. Wir können Funktionen auch in einem Skript definieren.

Wir haben im vorherigen Abschnitt mit einer kleinen Funktion gearbeitet, sodass es kein großes Problem war, sie in der Konsole zu definieren. Doch meistens werden wir viel größere Funktionen haben.

Daher wird es einfacher sein, diese Funktionen in einem Skript oder Modul zu definieren und dann dieses Skript oder Modul zu laden, um die Funktion in den Speicher zu bringen.

Wie wir uns vorstellen können, könnte es verwirrend sein, eine größere Funktion jedes Mal neu einzugeben, wenn wir ihre Funktionalität anpassen möchten.

Parameter zu Funktionen in PowerShell hinzufügen

Funktionen können eine beliebige Anzahl von Parametern haben. Wenn wir unsere Funktionen erstellen, haben wir die Möglichkeit, Parameter einzufügen und zu entscheiden, wie diese Parameter funktionieren.

Die Parameter können entweder optional oder obligatorisch sein, und sie können entweder gezwungen werden, einen von einer begrenzten Liste von Argumenten zu akzeptieren, oder alles annehmen.

Zum Beispiel könnte die fiktive Software, die wir über die Funktion Install-Software installieren, viele mögliche Versionen haben. Derzeit bietet die Funktion Install-Software dem Benutzer jedoch keine Möglichkeit, anzugeben, welche Version er installieren möchte.

Wenn wir die einzigen Benutzer der Funktion wären, könnten wir den Code darin jedes Mal ändern, wenn wir eine bestimmte Version wollten, aber das würde viel Zeit in Anspruch nehmen. Diese Methode wäre auch anfällig für potenzielle Fehler, und wir möchten, dass andere unseren Code verwenden können.

Die Einführung von Parametern in unsere Funktion ermöglicht es, Variabilität zu haben. So wie Variablen es uns ermöglichten, Skripts zu schreiben, die viele Versionen derselben Situation verarbeiten können, ermöglichen es uns Parameter, eine einzige Funktion zu schreiben, die eine Sache auf viele Arten tut.

In diesem Fall möchten wir, dass es Versionen derselben Software installiert und dies auf vielen Computern tut.

Zuerst fügen wir der Funktion einen Parameter hinzu, der es einem Benutzer oder uns ermöglicht, die zu installierende Version anzugeben.

Erstellen eines einfachen Parameters für eine Funktion in PowerShell

Um einen Parameter für eine Funktion zu definieren, benötigt man einen Parameterblock. Der Parameterblock enthält alle Parameter für die Funktion.

Definieren Sie einen Parameterblock mit dem Schlüsselwort param, gefolgt von Klammern, wie unten gezeigt.

Beispiel Code:

function Install-Software {
    [CmdletBinding()]
    param()

    Write-Host 'The software has been installed.'
}

An diesem Punkt hat sich die tatsächliche Funktionalität unserer Funktion nicht geändert. Wir haben nur die Vorarbeit geleistet und die Funktion für einen Parameter vorbereitet.

Sobald wir den param-Block hinzugefügt haben, können wir den Parameter erstellen, indem wir ihn in seine Klammern setzen, wie unten gezeigt.

Beispiel Code:

function Install-Software {
    [CmdletBinding()]
    param(
        [Parameter()]
        [string] $Version
    )

    Write-Host "The software version $Version has been installed."

}

Innerhalb des obigen param-Blocks würden wir zuerst den Parameter-Block definieren. Die Verwendung des Parameter()-Blocks macht den Parameter zu einem „erweiterten Parameter“.

Ein leerer param-Block wie der hier tut nichts, ist aber erforderlich; wir werden im nächsten Abschnitt erläutern, wie man ihn verwendet.

Lassen Sie uns auf den [string]-Typ vor dem Parameternamen konzentrieren. Wir geben die Parameter an, indem wir den Typ des Parameters in eckige Klammern vor den Variablennamen des Parameters setzen.

PowerShell wird Werte immer standardmäßig als Zeichenfolgen behandeln. Alles, was in die Variable $Version übergeben wird, wird immer als Zeichenfolge behandelt.

Wir fügen auch $Version in unsere Write-Host-Anweisung ein. Dann, wenn wir die Funktion Install-Software mit dem Version-Parameter ausführen und ihm eine Versionsnummer übergeben, sollten wir eine Nachricht erhalten, die dies anzeigt.

Beispiel Code:

Install-Software -Version 2

Ausgabe:

The software version 2 has been installed.
Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Verwandter Artikel - PowerShell Function