Windows PowerShell : Partage de vos scripts - facilitées

Don Jones

Windows PowerShell v1 inconvénient de qu'il n'a pas faire grand pour script partage. Bien sûr, vous pouvez facilement copier un fichier de script. ps1 vers un autre ordinateur, ou même code postal et envoyer par courrier électronique à un collègue, mais vous pourriez également le faire avec VBScript plus de dix ans auparavant. Si votre script inclus des fonctions réutilisables, cependant, quiconque le reçu de vous aurait besoin de savoir comment point source, ou serait liquider en fait avoir à modifier afin d'exécuter ces fonctions.

En résumé, il s'agissait d'une situation acceptable — même si elle n'était pas idéale. La situation est devenu moins acceptable pour les scripts étaient accompagnées des vues de format personnalisé ou les extensions de types, car ces fichiers supplémentaires devaient être chargé manuellement dans le shell pour être utilisés par le script.

Toutefois, avec Windows PowerShell v2, nous 've placé dans une situation idéale presque, grâce à l'introduction de modules.

Indépendant des blocs de shell bénéfiques

A module est simplement une collection de fichiers qui sont reliées entre elles. Il existe deux grandes catégories de modules : Binaire et script.

A binaire module est constitué d'un ou plusieurs fichiers DLL sont compilés à partir d'un langage Microsoft .NET Framework tels que c# ou Visual Basic. Dans les jours de v1, nous avons appelé ces PSSnapins et effectivement écrire un dans Visual Studio n'a pas changé la plupart. Toutefois, snapins, requise vous également écrire un programme d'installation pour enregistrer votre DLL avec l'environnement de ligne de commande. Un module, aucune installation n'est nécessaire. Au lieu de cela, le module est accompagné d'un fichier .psd1 — un module manifeste. Le manifeste est simplement du XML qui indique quelles DLL doit être chargé. Le manifeste peut également spécifier les fichiers d'extension type accompagnement (.ps1xml) ou d'afficher les fichiers (. format.ps1xml).

Voici comment cela fonctionne : Le module doit être installé dans un sous-répertoire dans le dossier \modules Windows PowerShell. Par défaut, il s'agit dans c:\windows\system32\windowspowershell\v1.0\modules. Ainsi, un module nommé “ MyModule ” iraient en c:\windows\system32\windowspowershell\v1.0\modules\mymodule et le fichier manifeste serait mymodule.psd1. Tous les fichiers liées au module devraient normalement être groupées dans ce même dossier, en conservant tous les éléments autonomes.

Pour charger le module, vous exécutez simplement Importation Module MyModule. L'interpréteur de commandes recherche dans le dossier \modules par défaut (bien que vous pouvez également transmettre un chemin d'accès complet à Module d'importation si votre module se trouve ailleurs), voit qu'un fichier de .psd1 existe, il lit et charge les fichiers référencés dans. Il est facile de distribuer le module : Zip simplement les fichiers et copiez le fichier de .zip vers un autre ordinateur, aucune installation n'est nécessaire.

Annuler vos propres modules

Comment est cette aide vous distribuez plus facilement vos scripts ? Le deuxième type de module, une module de script, est la réponse. Il s'agit simplement un script Windows PowerShell normal, avec une extension de nom de fichier .psm1 plutôt que l'extension de nom de fichier. ps1 habituelle. Placer mymodule.psm1 dans le dossier \modules vous permet d'exécuter Importation Module MyModule et le script seront exécute.

Normalement, un module de script compose de entièrement de fonctions. Autrement dit, lorsque le module est importé, rien ne réellement exécute — les fonctions dans le module de script sont chargées dans le shell et deviennent disponibles tout au long de l'interpréteur de commandes. Supposons que vous avez un module de script qui ressemble à ceci :

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

Importation de ce module rendrait le Get-stocks, test-connectivité and Écriture inventaire fonctions disponibles dans l'ensemble de l'interpréteur de commandes, tout comme les applets de commande (en fait, le mois prochain, je vous montrerai comment écrire une fonction qui se comporte presque identique à une applet de commande “ réel ”). Vos fonctions peuvent même inclure aide commentaire (lequel j'ai démontré dans mon dernier article), afin que quelqu'un peut importer le module et exécuter Aider à Get-stocks pour voir des instructions à l'aide de cette fonction.

Parfois vous souhaitez un petit Privacy

Vous pouvez parfois avoir un module de script complexe qui inclut des fonctions destinées à être utilisées uniquement par d'autres fonctions, plutôt que par un utilisateur. Par exemple, j'ai Might l'intention de Test de connectivité and Écriture inventaire “ Private ” dans le module. Cela signifie qu'ils serait appelés par Get-stocks,, mais je n'est pas qu'ils doivent être appelée directement par un utilisateur de la coque.

Par défaut, Module d'importation imports tous les éléments dans le module, pour chaque fonction rendre visible à l'utilisateur de type coque. Vous pouvez substituer ce comportement en spécifiant simplement une liste des fonctions Envisagez de pour être visibles ; tout le reste sera masqué dans l'utilisateur de type coque. Pour ce faire, exécutez simplement Exportation ModuleMember à la fin de votre module de script :

Exportation ModuleMember –function get stock

Vous pouvez également exporter des applets de commande, des variables et des alias de votre script définit, si nécessaire. Run Aider à exporter-ModuleMember, or see Exportation ModuleMember pour plus de détails.

Inconvénients de module

Pour moi, bummer uniquement sur les modules de v2 est que le shell semblait avoir par défaut qu'un seul emplacement pour eux et cet emplacement est sous le dossier système Windows, qui n'est pas un élément dont vous voulez obtenir l'habitude de modifier. Mais puis j'ai étudié la variable d'environnement PSModulePath et découvert que le shell s'affichera également dans votre dossier de documents, dans un sous-dossier appelé WindowsPowerShell\Modules, et cela est où j'ont maintenant conserver tous les modules que j'écris.

À l'avenir, il se peut que vous constatiez également applets de commande conçu pour télécharger des modules supplémentaires à partir des référentiels basés sur Internet, pas à la différence de la fonctionnalité de poire utilisés dans les systèmes UNIX. Ces applets de commande serait vraisemblablement prêt à télécharger vers votre dossier documents ou dans un autre emplacement de système d'exploitation non et le shell recherche votre dossier de documents pour les modules est actif par défaut.

Modules, modules, Everywhere

Dans la mesure où ils Don ’t nécessitant installation pour pouvoir être “ vue ” par le shell, modules sont utilisés beaucoup plus. En fait, presque toutes les extensions Windows PowerShell dans Windows Server 2008 R2 se présente sous la forme d'un module, la seule exception étant PSSnapin pour l'automatisation de sauvegarde Windows Server (exécutez Get-PSSnapin –registered pour voir s'il est installé sur un serveur). Plusieurs tiers code est fourni sous forme de modules, trop, y compris les applets de commande accéder au référentiel de code de Communauté à PoshCode.org.

En fait, si vous êtes un utilisateur de Windows PowerShell caractérisée intéressé par l'écriture de vos propres applets de commande, mais ne souhaitez pas vraiment utiles en programmation .NET Framework dans Visual Studio, la combinaison des fonctions avancées (là encore, qui vous être chronique du mois prochain) et modules vous donne la possibilité d'écrire votre propre interpréteur de commandes “ snapins ” entièrement en script. Simplement vos fonctions avancées de package — qui afficher et se comporter comme applets de commande : dans un script module et que vous disposez d'une bibliothèque de code réutilisable easy-to-distribute.

Windows PowerShell v2 maintenant disponible

Bien qu'il a été livré préinstallé sur Windows Server 2008 R2 et Windows 7, Windows PowerShell v2 — et ses composants de Management Framework Compagnon — est désormais disponible pour Windows XP, Windows Server 2003, Windows Vista et Windows Server 2008. Visitez le support.Microsoft.com/kb/968929 pour obtenir le lien de téléchargement pour n'importe quelle OS que vous utilisez. Dans la plupart des cas, cela doit être compatible avec vos scripts v1 ; mes colonnes futures supposera que vous utilisez 2.0.

Don Jones * est le fondateur de technologie concentré et questions réponses sur Windows PowerShell et d'autres technologies à * ConcentratedTech.com. Il est également un auteur pour Nexus.Realtimepublishers.com, qui parmi ses livres rend disponible comme éditions électroniques gratuites.

Contenu associé

·      Windows PowerShell : PowerShell et Active Directory

·      Windows PowerShell : Filtre à gauche, Mise en forme à droite

·      Windows PowerShell : Restez assis !