Come utilizzare le funzioni in PowerShell

Come utilizzare le funzioni in PowerShell
Se vuoi usare Script PowerShell E comandi In diversi scenari, puoi trasformarli in riutilizzabile funzioni. PowerShell ha molta flessibilità in termini di come rappresenti il ​​codice in uno script.

Se persegui la scrittura di centinaia di righe di codici in un singolo blocco di codice, allora non è il metodo corretto perché di solito è difficile leggere un grande blocco di codice. Puoi scomporlo in piccole funzioni per rendere il programma più comprensibile, organizzato e riutilizzabile.

Cos'è una funzione in PowerShell?

In PowerShell, a funzione è una raccolta di codice con input e output opzionali. È la formazione di una sequenza di istruzioni da eseguire una o più volte semplicemente invocandola piuttosto che copiarlo ripetutamente. La funzione migliora sostanzialmente la leggibilità e l'usabilità del tuo codice, rendendo molto più facile gestire il codice ripetuto.

Prende i parametri come input e restituisce i valori assegnati ad alcune variabili, condotti ad altre funzioni o cmdlets come input o visualizzato come output sullo schermo. Invece di ripetere il codice, la funzione può essere chiamata tutte le volte necessarie dopo essere stata definita nello script. In PowerShell, ci sono due tipi di funzioni: base e avanzata.

Funzioni di base in PowerShell

La forma più semplice di una funzione che possiamo creare in PowerShell è chiamata "di base" funzione. Queste funzioni non utilizzano nessuna delle funzionalità integrate. Un insieme di parentesi graffe è usato per definire il corpo della funzione. Quando si lavora con le funzioni di PowerShell, l'opzione più semplice per gli amministratori è utilizzare le funzioni di base perché queste funzioni non hanno caratteristiche ereditate. Devi definire esplicitamente tutti i flussi di errore nel codice della tua funzione.

Funzioni avanzate in PowerShell

Funzioni avanzate avere le stesse proprietà delle funzioni di base, ma includono funzionalità aggiuntive che le funzioni di base non hanno. Ad esempio, PowerShell contiene flussi come verbosio, avvertimento, debug, errore, ecc. Questi flussi sono essenziali per mostrare l'uscita accuratamente.

Creazione di funzioni di base in PowerShell

Ora controlleremo il metodo per creare funzioni di base in PowerShell. Per questo, apri il tuo Windows Powershell ISE e crea un nuovo file.

IL PAROLA CHIAVE FUNZIONE viene utilizzato per dichiarare una funzione in PowerShell, seguita dal Nome funzione E parentesi graffe. Il codice o il corpo della funzione si trova all'interno di quelle parenti ricci .

Funzione Get-Version
$ Psversiontable.Psversion

Lo eseguiremo "Get-Worse"Funzione in fase di esecuzione. Ora, salva lo script come "testfile1.PS1"E eseguilo.

Nel terminal PowerShell, chiama la funzione creata usando il suo nome.

> Get-Worse

Ti mostrerà il seguente output:

Man mano che la funzione viene caricata nella memoria del sistema, è possibile visualizzare le funzioni sulla funzione PsDrive. Per questo, usa il “Get-childitem"Comando per controllare gli elementi figlio della funzione PsDrive. Qui, il "-Sentiero"L'opzione viene utilizzata per specificare il percorso della funzione PsDrive.

> Get-Childitem -Path Function: \ get-*versione

Dalla sessione corrente, è possibile rimuovere la funzione definita utilizzando "Rimuovi oggetto"Comando. Esegui il comando di seguito per questo scopo.

> Get-Childitem -Path Function: \ get-*Versione | Rimuovi oggetto

Utilizzare l'operatore del tubo ["|“] In modo che il comando elimini gli elementi figlio della funzione PsDrive al"Rimuovi oggetto"Comando. Poi il "Rimuovi oggetto"CMDLET rimuoverà le funzioni create dalla sessione.

Per verificare la rimozione della funzione, invocare il "Get-Worse" funzione. Ti mostrerà il seguente output:

Parametro Funzioni in PowerShell

Ora scriveremo una funzione che interroga tutti i comandi di un sistema e restituiremo il numero di comandi con determinati nomi dei parametri. Se vuoi farlo, esegui lo script di seguito nel tuo PowerShell:

funzione get-mrparametercount
param (
[String []] $ ParameterName
)
foreach ($ parametro in $ parametername)
$ Risultati = get -comand -parametername $ parametro -errorationslenthentinue
[pScustomObject]@
ParameterName = $ parametro
Numberofcmdlets = $ risultati.Contare


Ora abbiamo invocato il "Get-MrParameterCount"Con i parametri:

Computername, computer, name server, host e macchina:

> Get -MrParameterCount -ParameterName ComputerName, Computer, ServerName, Host, Machine

Creazione di funzioni avanzate in PowerShell

È davvero facile trasformare una funzione Powershell di base in una funzione avanzata. Le funzioni avanzate presentano diversi parametri comuni che vengono automaticamente aggiunti alla funzione. Ora trasformeremo la funzione di base definita nella sezione precedente in una funzione avanzata:

funzione test-mrparameter
param (
$ Computer
)
Write-output $ computer

Si noti che il "Test-mrparameter"La funzione non ha un parametro comune. I parametri comuni possono essere visualizzati in modi diversi. Un metodo è usare "Get-comand" con il "-Sintassi"Opzione per esaminare la sintassi:

> Get -comand -name test -mrparameter -syntax

Per rendere la funzione una funzione avanzata, aggiungi "Cmdletbinding":

funzione test-mrcmdletbinding
[Cmdletbinding ()] #<<-- This turns a regular function into an advanced function
param (
$ Computer
)
Write-output $ computer

Ancora una volta, è possibile controllare la sintassi e i parametri di questa funzione avanzata eseguendo i comandi di seguito:

> Get-comand -name test-mrcmdletbinding -syntax> (get-comand -name test-mrcmdletbinding).Parametri.Tasti

Conclusione

È possibile dividere il codice in blocchi di costruzione separati utilizzando Funzioni in PowerShell. Non solo ti aiutano a abbattere il tuo codice in pezzi più piccoli e più gestibili, ma ti spingono anche a produrre un codice verificabile e leggibile.

Le funzioni migliorano anche sostanzialmente la leggibilità e l'usabilità del codice, rendendo molto più facile gestire il codice ripetuto. Questo articolo mostra alcuni metodi per l'utilizzo funzioni In Powershell, compresi quelli di base e avanzati.