Wie man mehrere Elemente aus einer PowerShell-Funktion zurückgibt

  1. Verwenden Sie ein Array, um mehrere Elemente aus einer PowerShell-Funktion zurückzugeben
  2. Verwenden Sie [PSCustomObject], um mehrere Elemente aus einer PowerShell-Funktion zurückzugeben
  3. Verwenden Sie Hash-Tabellen, um mehrere Elemente aus einer PowerShell-Funktion zurückzugeben
  4. Verwenden Sie benutzerdefinierte Objekte, um mehrere Elemente aus einer PowerShell-Funktion zurückzugeben
  5. Fazit
Wie man mehrere Elemente aus einer PowerShell-Funktion zurückgibt

Beim Arbeiten mit PowerShell-Funktionen entsteht häufig die Notwendigkeit, mehrere Werte effizient zurückzugeben. Ein effektiver Ansatz besteht darin, Arrays, [PSCustomObject], Hash-Tabellen oder benutzerdefinierte Objekte zu verwenden, um diese Werte zu kapseln und darzustellen.

In diesem Artikel werden wir untersuchen, wie die genannten Methoden verwendet werden können, um mehrere Elemente aus einer PowerShell-Funktion zurückzugeben. Wir werden schrittweise Verfahren für jede Methode skizzieren und Codebeispiele bereitstellen, um deren Implementierung zu veranschaulichen und deren Ausgaben zu zeigen.

Verwenden Sie ein Array, um mehrere Elemente aus einer PowerShell-Funktion zurückzugeben

Um mehrere Werte aus einer PowerShell-Funktion mithilfe eines Arrays zurückzugeben, befolgen Sie diese Schritte:

  • Deklarieren Sie eine Array-Variable: Beginnen Sie mit der Deklaration einer Array-Variablen innerhalb der Funktion, um die mehreren Werte zu speichern, die Sie zurückgeben möchten.
  • Fügen Sie das Array hinzu: Füllen Sie das Array mit den gewünschten Werten, die Sie zurückgeben möchten. Sie können Elemente zum Array mithilfe von Indizes hinzufügen.
  • Geben Sie das Array zurück: Geben Sie das gefüllte Array als Ausgabe der Funktion zurück.

Lassen Sie uns eine einfache PowerShell-Funktion erstellen, die mehrere Werte mithilfe eines Arrays zurückgibt.

function Get-MultipleValues {
    $values = @()

    $values += "Value1"
    $values += "Value2"
    $values += "Value3"

    return $values
}

$resultArray = Get-MultipleValues

Write-Output "Values returned from the function:"
foreach ($value in $resultArray) {
    Write-Output $value
}

Ausgabe:

Values returned from the function:
Value1
Value2
Value3

In diesem Beispiel haben wir eine Funktion namens Get-MultipleValues. Innerhalb der Funktion deklarieren wir eine Array-Variable $values.

Wir fügen dann diesem Array drei Werte hinzu: "Value1", "Value2" und "Value3". Schließlich geben wir das gefüllte Array als Ausgabe der Funktion zurück.

Beim Aufrufen der Funktion speichern wir das Ergebnis in einer Variablen ($resultArray) und zeigen die Werte innerhalb des Arrays mithilfe einer Schleife an.

Verwenden Sie [PSCustomObject], um mehrere Elemente aus einer PowerShell-Funktion zurückzugeben

Sie können auch [PSCustomObject] verwenden, um benutzerdefinierte Objekte in PowerShell zu erstellen. Es ermöglicht Ihnen, Eigenschaften und Werte für ein Objekt zu definieren, was es zu einer geeigneten Wahl macht, um mehrere Werte aus einer Funktion zurückzugeben.

Um ein benutzerdefiniertes Objekt mit [PSCustomObject] zu erstellen, definieren Sie einfach die Eigenschaften und deren entsprechende Werte wie folgt:

$customObject = [PSCustomObject]@{
    Property1 = 'Value1'
    Property2 = 'Value2'
    ...
}

Um mehrere Werte mit [PSCustomObject] in einer PowerShell-Funktion zurückzugeben, beginnen Sie mit der Definition der PowerShell-Funktion und der Erstellung einer Instanz von [PSCustomObject]. Definieren Sie die Eigenschaften und Werte, die Sie innerhalb des benutzerdefinierten Objekts zurückgeben möchten.

function Get-MultipleValues {
    [CmdletBinding()]
    param (
        [string]$Value1,
        [int]$Value2,
        [string]$Value3
    )

    $resultObject = [PSCustomObject]@{
        Name    = $Value1
        Age     = $Value2
        Address = $Value3
    }

    return $resultObject
}

Jetzt können Sie die Funktion aufrufen und das benutzerdefinierte Objekt mit mehreren Werten abrufen.

$result = Get-MultipleValues -Value1 'Rohan' -Value2 21 -Value3 'UK'

Write-Output "Values returned from the function:"
foreach ($value in $result) {
    Write-Output $value
}

Ausgabe:

Values returned from the function:
Name  Age Address
----  --- -------
Rohan  21 UK

Wie wir sehen können, führt der oben stehende PowerShell-Code eine Funktion namens Get-MultipleValues ein. Diese Funktion, die mit [CmdletBinding()] gekennzeichnet ist, zeigt ihre Fähigkeit an, gängige Cmdlet-Parameter zu nutzen.

Innerhalb der Funktion werden drei Parameter definiert: $Value1 (ein String), $Value2 (eine Ganzzahl) und $Value3 (ein String). Die Funktion erstellt ein benutzerdefiniertes Objekt namens $resultObject mit diesen Parametern und weist sie den Eigenschaften Name, Age und Address innerhalb des benutzerdefinierten Objekts zu.

Die Anweisung return $resultObject stellt sicher, dass dieses benutzerdefinierte Objekt als Ausgabe der Get-MultipleValues-Funktion zurückgegeben wird.

Danach ruft das Skript die Funktion Get-MultipleValues auf und gibt Werte für jeden Parameter an: $Value1 wird auf 'Rohan', $Value2 auf 21 und $Value3 auf 'UK' gesetzt. Das resultierende benutzerdefinierte Objekt, das die übergebenen Parameterwerte enthält, wird in der Variablen $result gespeichert.

Anschließend verwendet das Skript Write-Output, um eine Nachricht in der Konsole anzuzeigen, und initiieren eine Schleife, die durch die Eigenschaften des benutzerdefinierten Objekts, das in $result gespeichert ist, iteriert. Für jede Eigenschaft zeigt das Skript sowohl den Eigenschaftsnamen als auch den entsprechenden Wert in der Konsole an.

Verwenden Sie Hash-Tabellen, um mehrere Elemente aus einer PowerShell-Funktion zurückzugeben

Eine Hash-Tabelle in PowerShell ist eine ungeordnete Sammlung von Schlüssel-Wert-Paaren. Jeder Schlüssel muss einzigartig sein, und der zugehörige Wert kann jeden Datentyp annehmen.

Sie wird auch als Wörterbuch oder assoziatives Array bezeichnet. Hash-Tabellen sind besonders nützlich, wenn Sie Daten basierend auf bestimmten Schlüsseln speichern und abrufen müssen, und bieten eine strukturierte Möglichkeit, Informationen zu organisieren.

Um mehrere Werte aus einer PowerShell-Funktion mithilfe von Hash-Tabellen zurückzugeben, befolgen Sie diese Schritte:

  • Erstellen Sie eine Hash-Tabelle: Instanziieren Sie eine Hash-Tabelle innerhalb der Funktion, um die Schlüssel-Wert-Paare zu speichern, die die Daten repräsentieren, die Sie zurückgeben möchten.

    Du kannst eine Hash-Tabelle in PowerShell mit @{} erstellen. Die Schlüssel und Werte werden in den {}-Klammern platziert.

    Die Syntax zum Erstellen einer Hash-Tabelle ist wie folgt.

    @{ <key> = <value>; [<key> = <value> ] ... }
    
  • Fügen Sie Schlüssel-Wert-Paare hinzu: Fügen Sie die Schlüssel-Wert-Paare zur Hash-Tabelle hinzu und verknüpfen Sie jeden Wert mit einem einzigartigen Schlüssel.
  • Geben Sie die Hash-Tabelle zurück: Geben Sie die gefüllte Hash-Tabelle als Ausgabe der Funktion zurück.

Lassen Sie uns ein Beispiel betrachten, das die Hash-Tabelle verwendet, um mehrere Werte aus einer Funktion namens user zurückzugeben.

Code:

function user() {
    $hash = @{ Name = 'Rohan'; Age = 21; Address = 'UK' }
    return $hash
}

$a = user
Write-Host "$($a.Name) is $($a.Age) and lives in $($a.Address)."

Ausgabe:

Rohan is 21 and lives in UK.

Wie wir sehen können, definiert dieser Code eine Funktion namens user(), die das Schlüsselwort function verwendet. Innerhalb dieser Funktion wird eine Hash-Tabelle namens $hash mit der @{}-Syntax erstellt, die drei Schlüssel-Wert-Paare enthält: Name mit dem Wert 'Rohan', Age mit dem Wert 21 und Address mit dem Wert 'UK'.

Die Anweisung return $hash stellt sicher, dass diese Hash-Tabelle die Ausgabe der user()-Funktion ist.

Anschließend ruft das Skript die Funktion user() auf und weist der resultierenden Hash-Tabelle der Variablen $a zu. Das bedeutet, dass $a nun die Hash-Tabelle enthält, die von der user()-Funktion zurückgegeben wurde.

Schließlich wird das Cmdlet Write-Host verwendet, um eine Nachricht in der Konsole anzuzeigen. Die Nachricht enthält die Werte aus der Hash-Tabelle, die in $a gespeichert sind, die durch $($a.Name), $($a.Age) und $($a.Address) abgerufen werden, um die Werte Name, Age und Address zuzugreifen.

Nun erstellen wir eine weitere PowerShell-Funktion, die die Summe und das Produkt von zwei Zahlen berechnet und die Ergebnisse mithilfe einer Hash-Tabelle zurückgibt.

function Calculate-SumAndProduct {
    param(
        [int]$num1,
        [int]$num2
    )

    $resultHashTable = @{
        Sum     = $num1 + $num2
        Product = $num1 * $num2
    }

    return $resultHashTable
}

$inputNum1 = 5
$inputNum2 = 7

$result = Calculate-SumAndProduct -num1 $inputNum1 -num2 $inputNum2

Write-Output "Sum: $($result['Sum'])"
Write-Output "Product: $($result['Product'])"

Ausgabe:

Sum: 12
Product: 35

Dieser Code beginnt mit der Definition einer Funktion namens Calculate-SumAndProduct, die zwei int-Parameter, $num1 und $num2, akzeptiert. Innerhalb der Funktion wird eine Hash-Tabelle namens $resultHashTable mit der @{}-Syntax erstellt.

Diese Hash-Tabelle enthält zwei Schlüssel-Wert-Paare: Sum mit einem Wert gleich der Summe von $num1 und $num2 sowie Product mit einem Wert gleich dem Produkt von $num1 und $num2. Die Funktion gibt dann diese Hash-Tabelle zurück, wodurch sie die Ausgabe der Funktion Calculate-SumAndProduct wird.

Im Verlauf des Skripts werden zwei Eingabezahlen definiert: $inputNum1 mit dem Wert 5 und $inputNum2 mit dem Wert 7. Die Funktion Calculate-SumAndProduct wird mit diesen Eingabezahlen aufgerufen, und die resultierende Hash-Tabelle wird in einer Variablen namens $result gespeichert.

Schließlich verwendet das Skript das Cmdlet Write-Output, um die Werte von Summe und Produkt anzuzeigen, indem auf die entsprechenden Werte in der Hash-Tabelle zugegriffen wird, die in $result gespeichert ist.

Verwenden Sie benutzerdefinierte Objekte, um mehrere Elemente aus einer PowerShell-Funktion zurückzugeben

Ein benutzerdefiniertes Objekt in PowerShell ist eine Instanz der Klasse System.Management.Automation.PSCustomObject. Es ermöglicht Ihnen, Eigenschaften und Werte zu definieren, die diesen Eigenschaften zugeordnet sind, und ahmt ein reales Objekt nach.

Benutzerdefinierte Objekte sind flexibel und ermöglichen die Organisation und den Abruf von Daten in strukturierter Form.

Um mehrere Werte aus einer PowerShell-Funktion mithilfe von benutzerdefinierten Objekten zurückzugeben, befolgen Sie diese Schritte:

  • Definieren Sie ein benutzerdefiniertes Objekt: Erstellen Sie ein benutzerdefiniertes Objekt innerhalb der Funktion und definieren Sie Eigenschaften für die Werte, die Sie zurückgeben möchten.
  • Weisen Sie Eigenschaftswerte zu: Weisen Sie die Werte, die Sie zurückgeben möchten, den Eigenschaften des benutzerdefinierten Objekts zu.
  • Geben Sie das benutzerdefinierte Objekt zurück: Geben Sie das gefüllte benutzerdefinierte Objekt als Ausgabe der Funktion zurück.

Lassen Sie uns eine PowerShell-Funktion erstellen, die die Summe und das Produkt von zwei Zahlen berechnet und die Ergebnisse mithilfe eines benutzerdefinierten Objekts zurückgibt.

function Calculate-SumAndProduct {
    param(
        [int]$num1,
        [int]$num2
    )

    $resultObject = New-Object PSObject
    $resultObject | Add-Member -MemberType NoteProperty -Name "Sum" -Value ($num1 + $num2)
    $resultObject | Add-Member -MemberType NoteProperty -Name "Product" -Value ($num1 * $num2)

    return $resultObject
}

$inputNum1 = 5
$inputNum2 = 7

$result = Calculate-SumAndProduct -num1 $inputNum1 -num2 $inputNum2

Write-Output "Sum: $($result.Sum)"
Write-Output "Product: $($result.Product)"

Ausgabe:

Sum: 12
Product: 35

In diesem Beispiel haben wir eine Funktion namens Calculate-SumAndProduct definiert, die zwei Eingabezahlen ($num1 und $num2) akzeptiert. Innerhalb der Funktion haben wir ein benutzerdefiniertes Objekt namens $resultObject erstellt und Eigenschaften (Sum und Product) hinzugefügt, wobei wir die entsprechenden berechneten Werte zugewiesen haben.

Beim Aufrufen der Funktion mit Eingabezahlen (5 und 7) speichern wir das Ergebnis in einer Variablen ($result). Wir zeigen dann die Summe und das Produkt an, indem wir auf die Eigenschaften des resultierenden benutzerdefinierten Objekts zugreifen.

Fazit

In diesem Artikel wurden verschiedene Techniken untersucht, um mehrere Werte aus einer Funktion zurückzugeben, einschließlich der Verwendung von Arrays, [PSCustomObject], Hash-Tabellen und benutzerdefinierten Objekten. Jede Methode bietet ihre Vorteile und kann basierend auf den spezifischen Anforderungen Ihres Skripts ausgewählt werden.

Arrays bieten eine einfache Möglichkeit, mehrere Werte zurückzugeben, insbesondere wenn die Datenelemente einen ähnlichen Typ oder eine ähnliche Struktur aufweisen. [PSCustomObject] ermöglicht es Ihnen, benutzerdefinierte Objekte mit benannten Eigenschaften zu erstellen, die einen strukturierten Ansatz für die Rückgabe von Daten bieten.

Hash-Tabellen sind in Szenarien von Vorteil, in denen der Datenabruf auf bestimmten Schlüsseln basiert und eine organisierte und effiziente Lösung bieten. Benutzerdefinierte Objekte, die mit der Klasse [System.Management.Automation.PSCustomObject] erstellt wurden, bieten Flexibilität und ahmen reale Objekte nach.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Verwandter Artikel - PowerShell Function