Homepage » come » Geek School impara come estendere PowerShell

    Geek School impara come estendere PowerShell

    PowerShell offre due modi per estendere la shell. Puoi utilizzare gli snapshot, che sono solo binari e sviluppati in un linguaggio di programmazione completo come C #, oppure puoi usare i moduli, che possono essere sia binari che basati su script.

    Assicurati di leggere gli articoli precedenti della serie:

    • Scopri come automatizzare Windows con PowerShell
    • Imparare a utilizzare i cmdlet in PowerShell
    • Apprendimento Come utilizzare gli oggetti in PowerShell
    • Imparare la formattazione, il filtraggio e il confronto in PowerShell
    • Impara a utilizzare i servizi remoti in PowerShell
    • Utilizzo di PowerShell per ottenere informazioni sul computer
    • Lavorare con le raccolte in PowerShell

    E rimanete sintonizzati per il resto della serie per tutta la settimana.

    snapins

    Gli snap-in sono così l'anno scorso. A parte le barzellette, gli snap-in non sono mai stati presi in considerazione dalla comunità di PowerShell perché la maggior parte degli sceneggiatori non sono sviluppatori e puoi scrivere solo snap-in in un linguaggio come C #. Tuttavia ci sono ancora alcuni prodotti che utilizzano gli snap-in, ad esempio Web Deploy. Per vedere quali snap-in sono disponibili per l'utilizzo nella shell, utilizzare il seguente comando:

    Get-PSSnapin -Registrato

    Per utilizzare i comandi aggiunti da uno snap-in, devi prima importarlo nella tua sessione, e puoi farlo in questo modo:

    Aggiungi-PSSnapin -Nome WDeploySnapin3.0

    A questo punto, si verificherà un errore se non è installato lo snap-in di distribuzione Web. Se lo hai installato, come faccio io, verrà importato nella tua sessione. Per ottenere un elenco di comandi disponibili nello snapin, è sufficiente utilizzare il cmdlet Get-Command:

    Get-Command -Module WDeploy *

    Nota: tecnicamente questo non è un modulo, ma per qualche motivo devi ancora usare il parametro Module.

    moduli

    I moduli sono più recenti e sono la via da seguire. Possono essere sia programmati tramite PowerShell sia codificati in un linguaggio come C #. La maggior parte dei comandi integrati sono organizzati anche in moduli. Per vedere un elenco di moduli sul tuo sistema, puoi usare il seguente comando:

    Get-Module -ListAvailable

    Quando i prodotti vengono aggiornati, le loro controparti PowerShell vengono migrate ai moduli. Ad esempio, SQL aveva uno snap-in, ma ora è composto da moduli.

    Per poter usare un modulo, devi prima importarlo.

    Import-Module -Name SQLASCMDLETS

    Puoi usare lo stesso trucco che abbiamo usato con gli snap per visualizzare tutti i comandi che il modulo ha aggiunto alla shell.

    Questo lascia la domanda: come fa PowerShell a sapere quali snap-in e moduli si hanno sul tuo sistema? Bene, le istantanee sono un po 'dolorose e devono essere installate. Parte del processo di installazione include la creazione di alcune voci di registro che PowerShell esamina per trovare le informazioni sullo snapshot. I moduli, d'altra parte, possono essere registrati con la shell semplicemente inserendoli in una delle posizioni nella variabile d'ambiente PSModulePath. In alternativa, puoi semplicemente aggiungere il percorso al modulo alla variabile di ambiente.

    ($ ENV: PSModulePath) .Split ( “;”)

    Questo sputerà il contenuto della variabile. Nota che se hai un modulo come SQL installato, come ha modificato la variabile per includere la posizione del modulo SQL.

    Caricamento automatico del modulo

    PowerShell 3 ha introdotto una nuova fantastica funzione con pochi nomi. Nessuno di questi è ufficiale, ma "Caricamento automatico del modulo" è la migliore descrizione di esso. Fondamentalmente, consente di utilizzare i cmdlet che appartengono a un modulo esterno senza importare esplicitamente il modulo utilizzando il cmdlet Import-Module. Per vedere questo, rimuovere prima tutti i moduli dalla shell usando il seguente comando:

    Modulo Get | Rimuovere-Module

    È quindi possibile verificare di non aver caricato moduli utilizzando quanto segue:

    Get-Module

    Adesso usa un cmdlet che non si trova nella libreria principale. Test-Connection è buono:

    Test-Connection localhost

    Se controlli di nuovo i moduli caricati, vedrai che ha effettivamente caricato il modulo.

    Questo è tutto per oggi ragazzi, unisciti a noi domani per di più.