Vai al contenuto

Nozioni di base su PowerShell: programmazione con loop

    1651882981

    In questo tutorial di PowerShell ti mostriamo come usare il ciclo For, ForEach-Object e i cicli While, Do-While e Do-Until.

    I cicli di PowerShell, nella loro forma più semplice, ripetono semplicemente lo stesso set di comandi un determinato numero di volte. Ideali per eseguire azioni coerenti per un determinato periodo di tempo o un certo numero di record, i loop possono semplificare notevolmente i tuoi script. PowerShell, in particolare, presenta una serie di cmdlet, in particolare quelli che iniziano con il verbo Get, che restituiscono oggetti contenenti un numero elevato di dati simili.

    In PowerShell sono disponibili diversi tipi di loop e in molti casi è possibile utilizzare in modo efficace più di una tecnica di loop. A volte è necessario determinare il tipo di ciclo più efficiente, dal punto di vista delle prestazioni o della leggibilità del codice.

    Ciclo ForOgni oggetto

    In molti casi, l’uso del cmdlet ForEach-Object (descritto in precedenza nel nostro articolo sull’utilizzo degli oggetti di PowerShell) è il modo migliore per scorrere un oggetto. Nella sua forma più semplice, ForEach-Object richiede solo un oggetto da scorrere e un blocco di script contenente i comandi da eseguire su ciascun membro dell’oggetto.

    Questi parametri possono essere specificati dai nomi dei parametri -InputObject e -Process oppure collegando l’oggetto al cmdlet ForEach-Object e posizionando il blocco di script come primo parametro. Per illustrare questa sintassi di base, l’esempio seguente mostra due metodi per utilizzare ForEach-Object per scorrere il contenuto della cartella Documenti di un utente:

    $myDocuments = Get-ChildItem $env:USERPROFILEDocuments -File $myDocuments | ForEach-Object {$_.FullName} ForEach-Object -InputObject $myDocuments -Process {$_.FullName}

    In alcuni scenari può essere utile eseguire una o più azioni subito prima o subito dopo l’esecuzione del ciclo. I parametri -Begin e -End possono essere utilizzati per definire blocchi di script da eseguire subito prima o dopo il contenuto del blocco di script -Process. Può essere utilizzato per impostare o modificare una variabile prima o dopo l’esecuzione del ciclo.

    ForEach-Object ha due alias, ForEach e %, e supporta anche la sintassi abbreviata a partire da PowerShell 3.0. I tre esempi seguenti sono identici nella funzione.

    Get-WMIObject Win32_LogicalDisk | ForEach-Object {$_.FreeSpace} Get-WMIObject Win32_LogicalDisk | ForEach {$_.FreeSpace} Get-WMIObject Win32_LogicalDisk | % Spazio libero

    PowerShell per il ciclo

    I cicli For vengono in genere utilizzati per scorrere un insieme di comandi un numero di volte specificato, per scorrere un array o un oggetto o semplicemente per ripetere lo stesso blocco di codice secondo necessità. Un ciclo For viene costruito impostando il valore di una variabile quando si entra nel ciclo, la condizione in cui il ciclo deve essere terminato e un’azione da eseguire contro quella variabile ogni volta che si attraversa il ciclo.

    L’esempio seguente mostra un ciclo For di base utilizzato per creare una tabella pitagorica:

    For ($i=0; $i -le 10; $i++) { “10 * $i = ” + (10 * $i) }

    I cicli For possono essere utilizzati per scorrere i valori dell’array impostando il valore iniziale sull’indice iniziale dell’array e aumentando in modo incrementale il valore fino a raggiungere la lunghezza dell’array. L’indice dell’array viene specificato inserendo la variabile incrementata tra parentesi quadre immediatamente dopo il nome della variabile, come mostrato nell’esempio seguente:

    $colori = @(“Rosso”,”Arancione”,”Giallo”,”Verde”,”Blu”,”Indaco”,”Viola”) Per ($i=0; $i -lt $colori.Lunghezza; $ i++) { $colori[$i] }

    Cicli While, Do-While e Do-Until

    Un terzo tipo di ciclo supportato da PowerShell prevede l’impostazione di una condizione che consenta l’elaborazione del ciclo finché la condizione è vera o finché non viene soddisfatta. I cicli While e Do-While vengono entrambi utilizzati per eseguire un’azione mentre la condizione restituisce $true e differiscono solo per la sintassi. I loop Do-Until hanno una sintassi simile a Do-While, ma interrompono l’elaborazione una volta soddisfatta la condizione.

    I cicli Do-While e Do-Until iniziano entrambi con la parola chiave Do che precede un blocco di script, seguita dalla parola chiave condition (While o Until) e dalla condizione. Ad esempio, i seguenti due loop funzionano in modo identico, solo la condizione è invertita:

    $i=1 Fare { $i $i++ } Mentre ($i -le 10)$i=1 Fare { $i $i++ } Fino a ($i -gt 10)

    Sebbene i loop funzionino in modo identico ai loop Do-While, solo la sintassi viene leggermente modificata. I cicli While usano solo la parola chiave While, seguita dalla condizione e infine dal blocco di script. Questo ciclo è identico in funzione agli esempi precedenti e utilizza la stessa condizione del ciclo Do-While:

    $i=1 Mentre ($i -le 10) { $i $i++ }

    Ognuno di questi tre tipi di loop – Do-While, Do-Until e While – può essere utilizzato anche per eseguire un ciclo indefinito; While e Do-While si ripetono con la condizione impostata su $true e Do-Until con la condizione impostata su $false.

    In alcune situazioni potrebbe essere necessario uscire anticipatamente da un ciclo in base a qualcosa di diverso dalla condizione del ciclo. In questo caso è possibile invocare la parola chiave Break per uscire dal ciclo. Questo ultimo esempio mostra la stessa funzionalità, ma utilizza un ciclo infinito e la parola chiave Break per uscire al momento opportuno:

    $i=1 While ($true) { $i $i++ if ($i -gt 10) { Break } }

    IMPARENTATO:

    Operatori di confronto di PowerShell e logica condizionale
    PowerShell: utilizzo di variabili, array e tabelle hash
    Nozioni di base su PowerShell: gestione di file e cartelle

    0 0 votes
    Rating post
    Subscribe
    Notificami
    guest
    0 comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x