Come restituire più elementi da una funzione PowerShell

  1. Utilizzare l’array per restituire diversi elementi da una funzione di PowerShell
  2. Utilizzare [PSCustomObject] per restituire diversi elementi da una funzione di PowerShell
  3. Utilizzare tabelle hash per restituire diversi elementi da una funzione di PowerShell
  4. Utilizzare oggetti personalizzati per restituire diversi elementi da una funzione di PowerShell
  5. Conclusione
Come restituire più elementi da una funzione PowerShell

Quando si lavora con le funzioni di PowerShell, spesso sorge la necessità di restituire più valori in modo efficiente. Un approccio efficace è utilizzare array, [PSCustomObject], tabelle hash o oggetti personalizzati per racchiudere e presentare questi valori.

In questo articolo, approfondiremo come utilizzare i metodi menzionati per restituire più elementi da una funzione di PowerShell. Delineeremo le procedure passo dopo passo per ciascun metodo e forniremo esempi di codice per illustrare la loro implementazione e mostrare i loro output.

Utilizzare l’array per restituire diversi elementi da una funzione di PowerShell

Per restituire più valori da una funzione di PowerShell utilizzando un array, seguire questi passaggi:

  • Dichiarare una variabile array: Iniziare dichiarando una variabile array all’interno della funzione per contenere i valori multipli che si desidera restituire.
  • Popolare l’array: Popolare l’array con i valori desiderati che si desidera restituire. Puoi aggiungere elementi all’array utilizzando l’indicizzazione.
  • Restituire l’array: Restituire l’array popolato come output della funzione.

Creiamo una semplice funzione di PowerShell che restituisce più valori utilizzando un array.

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
}

Output:

Values returned from the function:
Value1
Value2
Value3

In questo esempio, abbiamo una funzione chiamata Get-MultipleValues. All’interno della funzione, dichiariamo una variabile array $values.

Popoliamo quindi questo array con tre valori: "Value1", "Value2" e "Value3". Infine, restituiamo l’array popolato come output della funzione.

Quando chiamiamo la funzione, memorizziamo il risultato in una variabile ($resultArray) e visualizziamo i valori all’interno dell’array utilizzando un ciclo.

Utilizzare [PSCustomObject] per restituire diversi elementi da una funzione di PowerShell

Puoi anche utilizzare [PSCustomObject] per creare oggetti personalizzati in PowerShell. Ti consente di definire proprietà e valori per un oggetto, rendendolo una scelta adatta per restituire più valori da una funzione.

Per creare un oggetto personalizzato utilizzando [PSCustomObject], basta definire le proprietà e i loro valori corrispondenti in questo modo:

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

Per restituire più valori utilizzando [PSCustomObject] in una funzione di PowerShell, inizia definendo la funzione di PowerShell e creando un’istanza di [PSCustomObject]. Definisci le proprietà e i valori che desideri restituire all’interno dell’oggetto personalizzato.

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

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

    return $resultObject
}

Ora, puoi chiamare la funzione e recuperare l’oggetto personalizzato contenente più valori.

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

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

Output:

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

Come possiamo vedere, il codice PowerShell sopra introduce una funzione chiamata Get-MultipleValues. Questa funzione, contrassegnata con [CmdletBinding()], indica la sua capacità di utilizzare parametri cmdlet comuni.

All’interno della funzione, sono definiti tre parametri: $Value1 (una stringa), $Value2 (un intero) e $Value3 (una stringa). La funzione costruisce un oggetto personalizzato chiamato $resultObject utilizzando questi parametri, assegnandoli alle proprietà Name, Age e Address all’interno dell’oggetto personalizzato.

L’istruzione return $resultObject assicura che questo oggetto personalizzato venga restituito come output della funzione Get-MultipleValues.

Dopo di ciò, lo script chiama la funzione Get-MultipleValues, specificando valori per ciascun parametro: $Value1 è impostato su 'Rohan', $Value2 è impostato su 21, e $Value3 è impostato su 'UK'. L’oggetto personalizzato risultante, incorporante i valori dei parametri forniti, è memorizzato nella variabile $result.

Successivamente, lo script utilizza Write-Output per presentare un messaggio sulla console e avvia un ciclo, attraversando le proprietà dell’oggetto personalizzato contenuto in $result. Per ciascuna proprietà, lo script visualizza sia il nome della proprietà che il suo rispettivo valore sulla console.

Utilizzare tabelle hash per restituire diversi elementi da una funzione di PowerShell

Una tabella hash in PowerShell è una collezione non ordinata di coppie chiave-valore. Ogni chiave deve essere unica e il valore associato può essere di qualsiasi tipo di dato.

È anche chiamata dizionario o array associativo. Le tabelle hash sono particolarmente utili quando è necessario memorizzare e recuperare dati basati su chiavi specifiche, fornendo un modo strutturato per organizzare le informazioni.

Per restituire più valori da una funzione di PowerShell utilizzando tabelle hash, seguire questi passaggi:

  • Creare una tabella hash: Instanzia una tabella hash all’interno della funzione per memorizzare le coppie chiave-valore che rappresentano i dati che desideri restituire.

    È possibile creare una tabella hash in PowerShell utilizzando @{}. Le chiavi e i valori vengono inseriti tra le parentesi {}.

    La sintassi per creare una tabella hash è la seguente.

    @{ <key> = <value>; [<key> = <value> ] ... }
    
  • Aggiungere coppie chiave-valore: Aggiungi le coppie chiave-valore alla tabella hash, associando ogni valore a una chiave unica.
  • Restituire la tabella hash: Restituire la tabella hash popolata come output della funzione.

Facciamo un esempio che utilizza la tabella hash per restituire più valori da una funzione chiamata user.

Codice:

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)."

Output:

Rohan is 21 and lives in UK.

Come possiamo vedere, questo codice definisce una funzione chiamata user() utilizzando la parola chiave function. All’interno di questa funzione, viene creata una tabella hash chiamata $hash utilizzando la sintassi @{}, contenente tre coppie chiave-valore: Name con il valore 'Rohan', Age con il valore 21, e Address con il valore 'UK'.

L’istruzione return $hash assicura che questa tabella hash sia l’output della funzione user().

Successivamente, lo script chiama la funzione user() e assegna la tabella hash risultante alla variabile $a. Questo significa che $a ora contiene la tabella hash restituita dalla funzione user().

Infine, il cmdlet Write-Host viene utilizzato per visualizzare un messaggio sulla console. Il messaggio incorpora i valori dalla tabella hash memorizzati in $a, recuperati utilizzando $($a.Name), $($a.Age) e $($a.Address) per accedere ai valori di Name, Age e Address rispettivamente.

Ora, creiamo un’altra funzione di PowerShell che calcola la somma e il prodotto di due numeri e restituisce i risultati utilizzando una tabella hash.

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'])"

Output:

Sum: 12
Product: 35

Questo codice inizia definendo una funzione chiamata Calculate-SumAndProduct, che accetta due parametri int, $num1 e $num2. All’interno della funzione, viene creata una tabella hash chiamata $resultHashTable utilizzando la sintassi @{}.

Questa tabella hash contiene due coppie chiave-valore: Sum con un valore pari alla somma di $num1 e $num2, e Product con un valore pari al prodotto di $num1 e $num2. La funzione poi restituisce questa tabella hash, rendendola l’output della funzione Calculate-SumAndProduct.

Proseguendo nello script, due numeri di input sono definiti: $inputNum1 con un valore di 5 e $inputNum2 con un valore di 7. La funzione Calculate-SumAndProduct viene chiamata con questi numeri di input, e la tabella hash risultante è memorizzata in una variabile chiamata $result.

Infine, lo script utilizza il cmdlet Write-Output per visualizzare i valori della somma e del prodotto accedendo ai valori corrispondenti nella tabella hash memorizzata in $result.

Utilizzare oggetti personalizzati per restituire diversi elementi da una funzione di PowerShell

Un oggetto personalizzato in PowerShell è un’istanza della classe System.Management.Automation.PSCustomObject. Ti consente di definire proprietà e valori associati a tali proprietà, mimando un oggetto del mondo reale.

Gli oggetti personalizzati sono flessibili e consentono l’organizzazione e il recupero dei dati in modo strutturato.

Per restituire più valori da una funzione di PowerShell utilizzando oggetti personalizzati, seguire questi passaggi:

  • Definire un oggetto personalizzato: Crea un oggetto personalizzato all’interno della funzione e definisci le proprietà per i valori che desideri restituire.
  • Assegnare valori alle proprietà: Assegna i valori che desideri restituire alle proprietà dell’oggetto personalizzato.
  • Restituire l’oggetto personalizzato: Restituire l’oggetto personalizzato popolato come output della funzione.

Creiamo una funzione di PowerShell che calcola la somma e il prodotto di due numeri e restituisce i risultati utilizzando un oggetto personalizzato.

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)"

Output:

Sum: 12
Product: 35

In questo esempio, abbiamo definito una funzione chiamata Calculate-SumAndProduct che accetta due numeri di input ($num1 e $num2). All’interno della funzione, abbiamo creato un oggetto personalizzato chiamato $resultObject e aggiunto proprietà (Sum e Product) ad esso, assegnando i rispettivi valori calcolati.

Quando chiamiamo la funzione con numeri di input (5 e 7), memorizziamo il risultato in una variabile ($result). Abbiamo poi visualizzato la somma e il prodotto accedendo alle proprietà dell’oggetto personalizzato risultato.

Conclusione

Questo articolo ha esplorato diverse tecniche per restituire più valori da una funzione, inclusi l’uso di array, [PSCustomObject], tabelle hash e oggetti personalizzati. Ciascun metodo offre vantaggi e può essere selezionato in base ai requisiti specifici del tuo script.

Gli array forniscono un modo diretto per restituire più valori, specialmente quando gli elementi di dati condividono un tipo o una struttura simile. [PSCustomObject] ti consente di creare oggetti personalizzati con proprietà nominate, offrendo un approccio strutturato per restituire i dati.

Le tabelle hash eccellono in scenari in cui il recupero dei dati è basato su chiavi specifiche, fornendo una soluzione organizzata ed efficiente. Gli oggetti personalizzati, costruiti utilizzando la classe [System.Management.Automation.PSCustomObject], offrono flessibilità e mimano oggetti reali.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
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

Articolo correlato - PowerShell Function