Cómo escribir un módulo binario de PowerShell
Un módulo binario puede ser cualquier ensamblado (.dll) que contenga clases de cmdlet. De forma predeterminada, todos los cmdlets del ensamblado se importan cuando se importa el módulo binario. Sin embargo, puede restringir los cmdlets que se importan creando un manifiesto de módulo cuyo módulo raíz sea el ensamblado. (Por ejemplo, la clave CmdletsToExport del manifiesto se puede usar para exportar solo aquellos cmdlets que sean necesarios). Además, un módulo binario puede contener archivos adicionales, una estructura de directorios y otras piezas de información de administración útil que un solo cmdlet no puede .
El siguiente procedimiento describe cómo crear e instalar un módulo binario de PowerShell.
Cómo crear e instalar un módulo binario de PowerShell
Cree una solución binaria de PowerShell (como un cmdlet escrito en C#) con las capacidades que necesita y asegúrese de que se ejecute correctamente.
Desde la perspectiva del código, el núcleo de un módulo binario es simplemente un ensamblado de cmdlet. De hecho, PowerShell tratará un único conjunto de cmdlet como un módulo, en términos de carga y descarga, sin ningún esfuerzo adicional por parte del desarrollador. Para obtener más información sobre cómo escribir un cmdlet, consulte Escritura de un cmdlet de Windows PowerShell.
Si es necesario, cree el resto de su solución (cmdlets adicionales, archivos XML, etc.) y descríbalos con un manifiesto de módulo.
Además de describir los ensamblados de cmdlets en su solución, un manifiesto de módulo puede describir cómo desea exportar e importar su módulo, qué cmdlets estarán expuestos y qué archivos adicionales se incluirán en el módulo. Sin embargo, como se indicó anteriormente, PowerShell puede tratar un cmdlet binario como un módulo sin esfuerzo adicional. Como tal, un manifiesto de módulo es útil principalmente para combinar varios archivos en un solo paquete o para controlar explícitamente la publicación de un ensamblaje determinado. Para obtener más información, consulte Cómo escribir un manifiesto de módulo de PowerShell.
El siguiente código es un bloque de código C# extremadamente simple que contiene tres cmdlets en el mismo archivo que se pueden usar como módulo.
using System.Management.Automation; // Windows PowerShell namespace. namespace ModuleCmdlets { [Cmdlet(VerbsDiagnostic.Test,"BinaryModuleCmdlet1")] public class TestBinaryModuleCmdlet1Command : Cmdlet { protected override void BeginProcessing() { WriteObject("BinaryModuleCmdlet1 exported by the ModuleCmdlets module."); } } [Cmdlet(VerbsDiagnostic.Test, "BinaryModuleCmdlet2")] public class TestBinaryModuleCmdlet2Command : Cmdlet { protected override void BeginProcessing() { WriteObject("BinaryModuleCmdlet2 exported by the ModuleCmdlets module."); } } [Cmdlet(VerbsDiagnostic.Test, "BinaryModuleCmdlet3")] public class TestBinaryModuleCmdlet3Command : Cmdlet { protected override void BeginProcessing() { WriteObject("BinaryModuleCmdlet3 exported by the ModuleCmdlets module."); } } }Empaquete su solución y guarde el paquete en algún lugar de la ruta del módulo de PowerShell.
La variable de entorno global
PSModulePathdescribe las rutas predeterminadas que PowerShell utilizará para ubicar su módulo. Por ejemplo, una ruta común para guardar un módulo en un sistema sería%SystemRoot%\users\\Documents\WindowsPowerShell\Modules\ . Si no utiliza las rutas predeterminadas, deberá indicar explícitamente la ubicación de su módulo durante la instalación. Asegúrese de crear una carpeta para guardar su módulo, ya que es posible que necesite la carpeta para almacenar múltiples ensamblajes y archivos para su solución. Tenga en cuenta que técnicamente no necesita instalar su módulo en ningún lugar de
PSModulePath; esas son simplemente las ubicaciones predeterminadas en las que PowerShell buscará su módulo. Sin embargo, se considera una buena práctica hacerlo, a menos que tenga una buena razón para almacenar su módulo en otro lugar. Para obtener más información, consulte Instalación de un módulo de PowerShell y about_PSModulePath.Importe su módulo a PowerShell con una llamada a Import-Module.
Llamar a Import-Module cargará su módulo en la memoria activa. Si está utilizando PowerShell 3.0 y versiones posteriores, simplemente llamar al nombre de su módulo en el código también lo importará; Para obtener más información, consulte Importación de un módulo de PowerShell.
Importación de ensamblajes complementarios como módulos
Los cmdlets y proveedores que existen en ensamblados de complementos se pueden cargar como módulos binarios. Cuando los ensamblados del complemento se cargan como módulos binarios, los cmdlets y proveedores del complemento están disponibles para el usuario, pero la clase del complemento en el ensamblado se ignora y el complemento no se registra. Como resultado, los cmdlets del complemento proporcionados por Windows PowerShell no pueden detectar el complemento aunque los cmdlets y los proveedores estén disponibles para la sesión.
Además, los archivos de formato o tipos a los que hace referencia el complemento no se pueden importar como parte de un módulo binario. Para importar los archivos de formato y tipos, debe crear un manifiesto de módulo. Consulte Cómo escribir un manifiesto de módulo de PowerShell.
Ver también
Escribir un módulo de Windows PowerShell