Windows PowerShell. Condivisione di script - semplificazione

Don Jones

Una limitazione di Windows PowerShell v1 è che non molto per rendere più semplice la condivisione script. Certo, si potrebbe facilmente copiare un file di script ps1 in un altro computer, o persino zip e tramite posta elettronica a un collega, ma è Impossibile effettuare che con VBScript oltre un decennio fa. Se lo script incluso funzioni riutilizzabili, tuttavia, chiunque ricevuto da parte dell'utente dovrebbe conoscere come punto origine, o sarebbe effettuavo di dover effettivamente modificarlo per eseguire tali funzioni.

Tutto sommato, era una situazione accettabile, anche se non è ideale. La situazione è venuta meno accettabile per gli script sono accompagnati da viste di formato personalizzati o le estensioni del tipo poiché tali file aggiuntivi dovevano essere caricato manualmente nella shell per poter essere utilizzati dallo script.

Con Windows PowerShell v2, tuttavia è stato spostato a una situazione ideale quasi grazie all'introduzione di moduli.

Self-Contained blocchi di adeguatezza di shell

A modulo è semplicemente un insieme di file relativi a un altro. Esistono due ampie categorie di moduli: Binari e script.

A file binario modulo è costituito da uno o più file DLL, che vengono compilati da un linguaggio come C# o Visual Basic di Microsoft .NET Framework. In giorni v1, abbiamo chiamato questi PSSnapins e non effettivamente scrittura di uno in Visual Studio è stato modificato molto. Snap-in, è tuttavia necessaria anche scrivere un programma di installazione per registrare la DLL con la shell. Con un modulo, non è necessaria alcuna installazione. Invece, il modulo è accompagnato da un file .psd1, ovvero un modulo manifesto. Il manifesto è semplicemente alcune XML indica quale DLL deve essere caricato. Il manifesto può inoltre specificare i file delle estensioni del relativo tipo (.ps1xml) o visualizzare i file (. format.ps1xml).

Ecco come funziona: Il modulo deve essere installato in una sottodirectory all'interno della cartella \modules Windows PowerShell. Per impostazione predefinita, questo è c:\windows\system32\windowspowershell\v1.0\modules. In questo modo, un modulo denominato “ MyModule ” verrà visualizzati in c:\windows\system32\windowspowershell\v1.0\modules\mymodule e il file manifesto sarebbe mymodule.psd1. Tutti i file correlati al modulo dovrebbe normalmente essere raggruppati in tale cartella stessa, mantenendo tutto autonomo.

Per caricare il modulo, sufficiente eseguire Importazione modulo MyModule. La shell Cerca nella cartella \modules per impostazione predefinita (anche se è anche possibile passare un percorso completo per Importazione modulo se il modulo si trova in un' posizione), rileva che un file .psd1 esiste, legge i dati e carica i file a cui viene fatto riferimento all'interno. Distribuire il modulo è semplice: Zip semplicemente tutti i file e copiare il file con estensione zip a un altro computer, alcuna installazione necessaria.

Eseguire il rollforward di moduli

In che modo questo utili si distribuiscono gli script più facilmente? Il secondo tipo di modulo, un modulo script è la risposta. Questo è semplicemente un normale script Windows PowerShell, con un'estensione del nome file .psm1 anziché l'estensione del nome di file ps1 consueto. L'inserimento nella cartella \modules mymodule.psm1 consente di eseguire Importazione modulo MyModule e lo script verrà eseguito.

In genere, un modulo di script include interamente delle funzioni. Vale a dire quando il modulo viene importato, nulla effettivamente eseguito, ovvero le funzioni all'interno del modulo di script vengono caricate nella shell e diventano disponibili all'interno della shell. Si supponga di che avere un modulo di script simile al seguente:

Function Get-Inventory {
 # (some code goes here)
}
Function Test-Connectivity {
 # (some code goes here)
}
Function Write-Inventory {
 # (some code goes here)
}

Importazione di questo modulo rendono Magazzino Get, test connettività and Magazzino di scrittura funziona disponibile in tutta la shell come cmdlet (infatti, il prossimo mese, viene illustrato come scrivere una funzione che comporta quasi esattamente come un cmdlet “ reale ”). Le funzioni possono includere anche della Guida commento (che è stato illustrato in mio ultimo articolo), in modo che un utente potrebbe importare il modulo ed eseguire Guida Inventory Get per vedere le istruzioni per l'utilizzo della funzione.

A volte desiderate privacy una piccola

Talvolta può essere un modulo di script complessi che include funzioni può essere utilizzata solo da altre funzioni, anziché da un utente. Ad esempio, è possibile prevede Test di connettività and Magazzino di scrittura “ privato ” al modulo. Ciò significa che viene chiamati da Magazzino di Get, ma non aspettarsi loro di essere chiamato direttamente da un utente della shell.

Per impostazione predefinita, Importazione modulo imports tutti gli elementi nel modulo, rendendo visibili all'utente della shell ogni funzione. È possibile eseguire l'override di tale comportamento specificando semplicemente un elenco delle funzioni di previsto siano visibili; tutti gli altri verranno nascosti dall'utente della shell. A tale scopo, eseguire semplicemente Esportazione ModuleMember alla fine del modulo di script:

Esportazione ModuleMember –function Inventory Get

È inoltre possibile esportare i cmdlet, variabili e gli alias che definisce lo script, se necessario. Run Guida ModuleMember di esportazione, or see Esportazione ModuleMember per ulteriori dettagli.

Svantaggi del modulo

Per quanto mi riguarda, bummer solo sui moduli v2 è che la shell sembrava predefinito solo una posizione per essi e tale posizione si trova sotto la cartella di sistema di Windows, ovvero che non è un elemento ma si desidera inserire l'abitudine di modifica. Ma ho esaminato la variabile di ambiente PSModulePath e scoperto che la shell appariranno anche nella cartella Documenti, in una sottocartella denominata WindowsPowerShell\Modules, e questo è in cui si mantiene tutti i moduli che scrivo ora.

In futuro, è possibile che vengano visualizzati anche i cmdlet progettati per scaricare altri moduli da archivi basati su Internet, non a differenza della funzionalità pero utilizzati nei sistemi UNIX. Questo cmdlet è molto probabile che scaricare la cartella Documenti o in un'altra posizione non del sistema operativo e la shell la cartella documenti per i moduli di ricerca è un valore predefinito di smart.

Moduli, moduli, ovunque

Poiché essi Don ’t richiedono l'installazione per essere “ visualizzato ” dalla shell, i moduli vengono utilizzati molte altre. In realtà, quasi ogni estensione di Windows PowerShell in Windows Server 2008 R2 viene fornito come un modulo, ovvero l'unica eccezione da PSSnapin per l'automatizzazione di Windows Server Backup (eseguito Get PSSnapin –registered per verificare se è installato su un server). Codice di terze parti più spedito come i moduli, inclusi i cmdlet accedere al repository del codice di comunità in PoshCode.org.

In effetti, se sei un utente di Windows PowerShell hardcore interessato durante la scrittura dei cmdlet personalizzati, ma non si desidera approfondire programmazione .NET Framework in Visual Studio, la combinazione di funzioni avanzate (anche in questo caso, che potrà essere del mese prossimo) e i moduli offre la possibilità di scrivere mode la propria shell “ snap-in ” interamente nello script. Solo le funzioni avanzate del pacchetto, quale aspetto e agire come cmdlet, ovvero in uno script di modulo e si dispone di una libreria di codice riutilizzabile per distribuire.

Windows PowerShell v2 Generally disponibile

Sebbene spediti versione preinstallata di Windows Server 2008 R2 e Windows 7, Windows PowerShell v2 e i relativi componenti Management Framework complementare, ovvero è ora disponibile per Windows XP, Windows Server 2003, Windows Vista e Windows Server 2008. Visitare solo support.Microsoft.com/kb/968929 per ottenere il collegamento per qualsiasi sistema operativo in uso. Nella maggior parte dei casi, questo deve essere compatibile con gli script v1; miei articoli futuri presupporrà che si sta utilizzando 2.0.

Don Jones * è un fondatore della tecnologia incentrati e risposte domande su Windows PowerShell e altre tecnologie a * ConcentratedTech.com. È anche un autore per Nexus.Realtimepublishers.com, che rende molti dei suoi libri disponibili come libere edizioni elettroniche.

Contenuto correlato

·      Windows PowerShell: PowerShell e Active Directory

·      Windows PowerShell: Filtrare Left, Right formato

·      Windows PowerShell: Stay inserite