Windows PowerShell: Package e distribuire gli strumenti di personalizzato Windows PowerShell

È possibile eseguire alcune operazioni interessanti con acquisti punto ma che può comportare alcune limitazioni anche se non si presta attenzione.

Don Jones

Acquisti-punto sono un trucco elegante, ma può essere difficile rimuovere i comandi in un secondo momento se non sono necessari o non è in seguito scoprire che siano in conflitto con un altro. Dopo che è attivo un comando in un autonomo, lo strumento con parametri e riutilizzabile il mese scorso, ho trovato due limitazioni dobbiamo all'indirizzo.

Lo strumento è stato creato come una funzione avanzata di Windows PowerShell, che viene talvolta definita anche "cmdlet di script". Il primo problema è che lo script è un po' difficile da utilizzare. Lo script contiene una funzione, in modo semplice l'esecuzione dello script non avvenga nulla. È necessario modificare lo script e aggiungere i comandi necessari per eseguire la funzione oppure è necessario punto origine dello script nella shell, rendendo disponibile il comando globale della funzione.

Il secondo problema è che lo script incluso due funzioni. Il primo, Get-OSInfo è quello desiderato alle persone di utilizzare. Il secondo, OSInfoWorker, esegue tutte le operazioni effettive. Tuttavia, non è quello desiderato è possibile eseguire direttamente. Utilizzo di acquisti punto non è possibile in alcun modo nascondere OSInfoWorker (o renderlo privato, in termini di programmatore). Creazione di script in un modulo di script riguarderà entrambi i problemi.

Senso di moduli

Windows PowerShell supporta tre tipi di moduli: binary, script e moduli di manifesto. Un modulo binario è costituito da una DLL creata in Visual Studio che consente di aggiungere i cmdlet, provider e altri elementi della shell. Un modulo di script è esattamente questo: un unico script che è possibile aggiungere una o più funzioni per la shell. Un modulo del manifesto effettivamente può includere più componenti, ad esempio le estensioni del binari, script e così via. I moduli di script sono i più semplici da creare, in modo che ciò che verrà utilizzata.

Esistono tre requisiti per un modulo di script:

  1. Deve essere uno script Windows PowerShell valido, costituito principalmente da funzioni che verranno aggiunti alla shell.
  2. Deve avere un'estensione del nome file .psm1, anziché ps1.
  3. Deve trovarsi in una particolare cartella nel computer in uso

Tale requisito ultima è effettivamente più di un suggerimento per motivi di praticità. Al momento dell'installazione, Windows PowerShell definisce una nuova variabile di ambiente di sistema denominata PSModulePath. Questa procedura funziona molto come variabile di ambiente Path del sistema. Contiene le cartelle che della shell eseguirà automaticamente una ricerca per trovare i moduli per nome.

Esistono due percorsi di modulo per impostazione predefinita. Uno si trova sotto la gerarchia della cartella System32. Questo è stato progettato per i moduli forniti da Microsoft. L'altro si trova nella cartella documenti e in genere per i propri moduli. Utilizzeremo questo. Potete, ovviamente, modificare o aggiungere a PSModulePath, ad esempio definire un percorso centrale che il team utilizza per memorizzare i moduli condivisi.

Il percorso verrà utilizzato è \[My] Documents\WindowsPowerShell\Modules. In Windows XP, è indicato come esempio la cartella documenti. In Windows Vista e versioni successive, è solo documenti. La cartella WindowsPowerShell non esiste per impostazione predefinita. È possibile creare uno. La sottocartella moduli inoltre non esiste per impostazione predefinita, pertanto sarà necessario creare anche che.

L'alternativa per l'inserimento di un modulo in uno dei percorsi di PSModulePath è sufficiente specificare un percorso completo e il nome del file quando si carica un modulo. Ritengo che meno pratico di frequente utilizzato i moduli, in modo che si tende a utilizzare i percorsi definiti in PSModulePath.

Creazione di un modulo

Desidero aggiungere tre comandi alla fine dello script del mese scorso (è possibile scaricare lo script modificato qui):

New-Alias goi Get-OSInfo
Export-ModuleMember -function Get-OSInfo
Export-ModuleMember -alias goi

Il primo comando definisce un alias, "indiano". Questa è la funzione Get OSInfo. I secondi due comandi sono efficaci solo quando si utilizza un modulo di script.

Per impostazione predefinita, quando si carica un modulo in guscio, tutte le funzioni all'interno del modulo viene reso disponibile. Quando si utilizza ModuleMember di esportazione, tuttavia, solo le funzioni e gli alias, che vengono specificati in modo esplicito vengono resi disponibili.

L'alias "indiano", come pure la funzione Get OSInfo, dovrà essere visibile per chiunque utilizzi questo modulo. La funzione che non è stato specificato, OSInfoWorker, verrà nascosto. È comunque possibile utilizzare qualsiasi funzione chiamata OSInfoWorker all'interno del modulo stesso, ma non sarà possibile accedere direttamente, come se fosse una funzione privata.

Con i comandi aggiunti, è necessario assegnare lo script di un nome appropriato e inserirlo nella posizione corretta. Si supponga che si sceglie un nome in questo modulo "mymodule". Ciò significa che il file di script deve essere inserito nella \[My] Documents\WindowsPowerShell\Modules\MyModule\MyModule.psm1.

Lo script deve andare in una sottocartella di moduli. La sottocartella e il file di script devono recare il nome del modulo. Con tale fatto, è possibile eseguire MyModule Import-Module per caricare il modulo.

Questo è un modo semplice ed efficacia per la distribuzione di script da altri utenti. È possibile includere tutte le funzioni e gli alias come desiderato all'interno di questo singolo file. Fino a quando si trova nel punto giusto (o qualcuno è disposto a specificare il percorso completo), è facile per altri utenti di caricare il modulo e utilizzare tali funzioni.

Don Jones

Don Jones è il fondatore di concentrato di tecnologia e risposte alle domande su Windows PowerShell e altre tecnologie a ConcentratedTech.com. È anche un autore per Nexus.Realtimepublishers.com, che rende molte delle sue libri disponibili come libere edizioni elettroniche tramite il suo sito web.

Ottenere il massimo

Download di codice di esempio associata a un articolo di questo mese.

Ora è in esecuzione da registrare per Jones live, esclusivo, pratici workshop di tre giorni risiedere stesso sistema TechMentor molla 2011. Visitate TechMentorEvents.comper ulteriori informazioni.

Contenuto correlato