Cmdlet

Un cmdlet, pronunciato command-let, è un comando piccolo e leggero utilizzato nell'ambiente Windows PowerShell. Un cmdlet esiste in genere come un piccolo script destinato a eseguire una singola funzione specifica come la copia di file e la modifica delle directory. Un cmdlet e i relativi parametri possono essere immessi in una riga di comando di PowerShell per l'esecuzione immediata o inclusi come parte di uno script di PowerShell più lungo che può essere eseguito come desiderato.

Come funzionano i cmdlet?

I cmdlet utilizzano un modello di denominazione di verbo / nome progettato per semplificare la memorizzazione e la lettura di ogni cmdlet. Ad esempio, un tipico comando Get-ChildItem utilizza il verbo Get seguito dal sostantivo ChildItem. Quando viene eseguito tramite l'ambiente di runtime di PowerShell, il comando elenca o restituisce gli elementi in una o più posizioni specificate. Se gli elementi si trovano in un contenitore, il comando ottiene gli elementi all'interno del contenitore: elementi figlio.

I cmdlet sono basati su classi .NET e si basano sull'utilizzo di oggetti .NET. Pertanto, i cmdlet possono ricevere oggetti come input e fornire oggetti come output, che possono quindi alimentare l'input di oggetti successivi, consentendo ai cmdlet di formare una pipeline di comandi.

La maggior parte dei cmdlet supporta l'uso dei parametri come parte del meccanismo di input. I parametri possono essere aggiunti al cmdlet dalla riga di comando o passati ai cmdlet tramite la pipeline come output da un cmdlet precedente. Gli argomenti oi valori di ogni parametro descrivono in dettaglio l'input effettivo che il cmdlet accetterà, come dovrebbe funzionare il cmdlet e quali dati, se presenti, il cmdlet restituisce. Gli interruttori sono argomenti specializzati che offrono opzioni o selezioni preimpostate.

Questo articolo fa parte di

Guida completa a PowerShell per amministratori nuovi e esperti

  • Che include anche:
  • Procedure consigliate per l'utilizzo di PowerShell ISE per lo scripting
  • Segui questa guida dettagliata per utilizzare AWS Lambda con PowerShell
  • Sali di livello con questi comandi avanzati di PowerShell per copiare i file

Scaricare1

Scarica subito l'intera guida GRATUITAMENTE!

Si consideri un semplice cmdlet come Get-Help; la sintassi del cmdlet per ottenere la guida per i cmdlet desiderati da una libreria in linea è:

ottenere aiuto -in linea

Get-Help è il cmdlet. L'argomento del parametro è il nome del cmdlet che richiede ulteriori informazioni. Nell'uso effettivo, gli utenti sostituiscono il nome del cmdlet desiderato. Può essere qualsiasi cmdlet. L'opzione è -online, che indica a PowerShell di fare riferimento e restituire la guida per il cmdlet desiderato dalla libreria in linea di Microsoft. Ad esempio, per ottenere ulteriore assistenza sul cmdlet Add-AppxPackage, il comando PowerShell sarebbe simile al seguente:

get-help add-appxpackage -online

Per utilizzare la Guida locale per lo stesso cmdlet, eliminare l'opzione:

get-help add-appxpackage

get-help add-appxpackage

Ottieni ulteriori informazioni sul cmdlet Add-AppxPackage.

Cmdlet vs. funzioni

Sebbene PowerShell si basi sull'elaborazione dei cmdlet, esiste un secondo tipo di comando chiamato funzioni. Le funzioni vengono interpretate anche tramite PowerShell e vengono usate abitualmente negli script. È comune confondere cmdlet e funzioni. Tuttavia, i cmdlet e le funzioni differiscono in diversi modi importanti.

I cmdlet sono classi .NET scritte in linguaggi di programmazione superiori come C # e compilate in file dll in modo che PowerShell possa accedervi. Pertanto, i set di cmdlet possono essere facilmente aggiunti e nuovi cmdlet possono essere creati e resi disponibili per PowerShell. In confronto, le funzioni tendono ad essere integrate in PowerShell e non vengono compilate ma scritte nel linguaggio PowerShell. Le funzioni tendono ad essere entità più lunghe e complesse che in genere possono gestire l'analisi, la presentazione degli errori e la formattazione dell'output, dove i cmdlet sono spesso troppo piccoli e semplici per gestire tali dettagli.

Tuttavia, la differenza essenziale tra cmdlet e funzioni risiede in tali problemi di packaging, tra cui configurazione, installazione e funzionalità. Nella pratica, c'è una piccola differenza evidente tra cmdlet e funzioni. Come i cmdlet, le funzioni possono avere parametri e valori restituiti che possono essere visualizzati o assegnati a variabili. Sia i cmdlet che le funzioni sono prontamente usati negli script di PowerShell.

Cmdlet popolari

Ci sono centinaia di cmdlet disponibili per impostazione predefinita in PowerShell di oggi e centinaia di altri cmdlet possono essere aggiunti a PowerShell per supportare applicazioni avanzate come piattaforme di virtualizzazione e strumenti di gestione dei sistemi. Per trovare un indice completo di tutti i cmdlet attualmente disponibili in PowerShell su un computer, digitare:

cmdlet get-command -commandtype

Ciò restituisce un elenco completo dei cmdlet attualmente in PowerShell. Tuttavia, questo non fornisce dettagli specifici sullo scopo o sulla sintassi di ogni cmdlet. Per raccogliere informazioni più specifiche sui cmdlet desiderati, utilizzare il cmdlet Get-Help come descritto sopra. Ad esempio, per conoscere il nome, la sintassi, gli alias e le note sul cmdlet Unblock-File, utilizzare:

get-help sblocca-file

e PowerShell restituisce esempi completi di sintassi e parametri corretti. Gli utenti di PowerShell spesso traggono vantaggio acquisendo familiarità con una selezione di cmdlet di PowerShell di uso comune, che includono:

cmdlet Funzione
Ottieni posizione ottenere la directory corrente
Get-ChildItem elenca gli elementi in una directory
Ottenere aiuto ottenere ulteriori informazioni su un cmdlet desiderato
Stop-Process terminare un processo di PowerShell
Set-Location cambia la directory corrente
Copia-oggetto copiare i file
Rimuovi oggetto rimuovere un file o una directory
Sposta oggetto spostare un file
Rinomina elemento rinomina un file
Nuovo oggetto creare un nuovo file o directory vuoto
Invoke-GPUpdate forzare un aggiornamento dei criteri di gruppo
Stop-Computer spegnere un computer locale o remoto
Riavvia il computer riavviare un computer locale o remoto
Aggiungi computer aggiungere un computer a un dominio

Come scrivere un semplice cmdlet

I cmdlet sono in genere entità semplici e possono essere scritti solo in diverse dozzine di righe di C # o altri linguaggi che supportano il codice oggetto .NET. Sebbene il lavoro effettivo e la complessità di un cmdlet possano variare notevolmente, il processo effettivo coinvolto nella definizione di un nuovo cmdlet può in genere essere suddiviso in diversi passaggi comuni che implicano la definizione del cmdlet, l'accettazione dei parametri e quindi l'elaborazione dei parametri per fornire un output. Un semplice esempio potrebbe essere la creazione di un cmdlet che prenda il nome di una persona e generi un messaggio di prova.

1. Poiché si tratta di un cmdlet, lo sviluppatore sta fondamentalmente creando un oggetto, quindi specificare prima la classe padre per il cmdlet. Un cmdlet deriva dalle classi System.Management.Automation.Cmdlet o System.Management.Automation.PSCmdlet. Un cmdlet in C # può utilizzare il comando using come:

using System.Management.Automation;

2. Successivamente, specificare il nome della classe di oggetti. Ad esempio, se si suppone che il nuovo cmdlet invii semplicemente un messaggio di prova, C # potrebbe utilizzare il comando dello spazio dei nomi come:

spazio dei nomi SendTestMessage

3. Dichiarare la classe dell'oggetto come cmdlet. L'attributo cmdlet consente agli sviluppatori di specificare gli elementi verb e sostantivi del nome del cmdlet. Ad esempio, un comando C # che definisce un cmdlet e lo denomina "Send-Test" potrebbe apparire come:

[Cmdlet (VerbsCommunications.Send, "TestMessage")]

4. Specificare i parametri per il cmdlet utilizzando l'attributo del parametro. La lunghezza e la complessità di questa sezione di codice dipendono dal numero e dai tipi di parametri che il cmdlet deve gestire. Ad esempio, se il cmdlet è destinato semplicemente ad accettare il nome di una persona per ricevere un messaggio di prova, un parametro potrebbe essere quello di inserire il nome di quella persona e creare la stringa di variabile "nome". In C #, la sequenza di codice potrebbe apparire come:

[Parametro (obbligatorio = vero)]
    nome della stringa pubblica
    {
      ottieni {nome di ritorno; }
      imposta {nome = valore; }
    }
    nome della stringa privata;

5. Ora che il cmdlet è stato definito e ha accettato i parametri, il codice del cmdlet può concentrarsi sull'attività effettiva in corso. In questo caso, l'attività è prendere il parametro name e restituire quel nome a un semplice messaggio di prova. Ad esempio, il comando WriteObject può produrre un semplice output come:

     {
      WriteObject ("Piacere di conoscerti" + nome + "!");
     }

Ricorda che questo è solo un semplice esempio e non descrive in dettaglio tutti i comandi, la punteggiatura (rientri e parentesi) e il codice di supporto che potrebbe essere richiesto per completare con successo tale cmdlet. Gli sviluppatori possono fare riferimento alla documentazione di C # e PowerShell, testi dettagliati sulla creazione di cmdlet e innumerevoli esempi di cmdlet per ulteriori indicazioni sulla programmazione.