2008-12-04 15 views
8

He oído que el CTP de powershell 2.0 tiene módulos, pero no encuentro mucho código de ejemplo o instrucciones. He leído la poca ayuda que parece estar en línea ...¿Cómo creo módulos PowerShell 2.0?

Pero sigo recibiendo "El término 'Add-Module' no se reconoce como un cmdlet ..." cuando intento cargar un módulo.

¡Cualquier ayuda sería gratamente recibida!

Edición (julio de 2010) Tenga en cuenta que esta pregunta se basa en PowerShell 2.0 CTP y por lo tanto es un año y medio fuera de fecha! Consulte la respuesta de Samuel Jack para obtener ayuda con el PowerShell 2.0 RTM.

+0

Espere un par de semanas y sus deseos se harán realidad con CTP3. – halr9000

Respuesta

9

Con la compilación de Win7, Add-Module se ha ido. El nuevo cmdlet es Import-Module. La forma más fácil de crear un módulo es cambiar el nombre de un archivo PS1 a un archivo PSM1. Desde allí puedes hacer todo tipo de cosas, incluido el manifiesto del módulo.

+0

Import-Module tampoco funciona. De hecho, no hay comandos que tengan la palabra módulo en ellos: gcm | ? {$ _. Name.Contains ("Módulo")} | nombre fl ¡Oh, bien, esperaré hasta CTP 3 para obtener más información! –

0

Windows PowerShell v2.0: TFM (sapienpress.com) tiene información y muestras en uno de los capítulos. Está disponible como un libro electrónico que se actualiza a medida que se lanzan nuevos CTP. También publiqué sobre ellos en ConcentratedTech.com, y se han debatido sobre ellos en PowerShellCommunity.org en los foros.

1

Con suerte, los módulos resolverán algunos problemas. En este momento, podemos usar fuentes de puntos para obtener funciones, variables y scripts en el alcance global de una sesión de PowerShell.

El problema es que esto puede contaminar su sesión con todo tipo de variables globales y funciones auxiliares que un usuario final puede no querer/necesitar directamente.

Los módulos le permitirán a usted como autor crear scripts y solo hacer que ciertas funciones/variables estén disponibles para el usuario final del módulo.

También reemplazan esencialmente el concepto de PSSnapin. Puede usar Add-Module Some.dll para agregar un ensamblado que tenga cmdlets en él.

Lo que es realmente genial es lo que se llama un Módulo Manifiesto. Esta es una tabla hash que básicamente especifica todos los tipos de dependientes, así como el autor, el nombre, el identificador GUID y el número de versión. Cuando un usuario carga un módulo que tiene un manifiesto de módulo, comprobará todas las dependencias y ejecutará las secuencias de comandos que el autor del módulo considere necesarias.

Debe haber alguna documentación decente sobre estos cuando se envía CTP3.

Espero que ayude un poco.

Andy

3

No soy experto en Powershell, pero esto es lo que acabo de descubrir con PowerShell 2.0 RTM.

Supongamos que desea crear un módulo llamado MyModule:

  1. Asegúrese de que ha creado la carpeta % My Documents% \ WindowsPowerShell \ Módulos
  2. Crear una carpeta dentro de Módulos llamado MyModule
  3. Ponga su código en un archivo dentro de MyModule yn ame el archivo MyModule.psm1
  4. Recuerde utilizar el comando Export-ModuleMember como último elemento en su archivo de script. Export-ModuleMember -Function * -Alias * exportará todas las funciones y alias
  5. En las escrituras en las que desee utilizar el módulo, utilice el comando Import-Module MyModule

Por defecto PowerShell está configurado para no ejecutar ningún tipo de secuencias de comandos de archivos, por lo que necesita para alterar la configuración de seguridad. Set-ExecutionPolicy Unrestricted te ayudará si no te preocupan los scripts que deben firmarse.

Cuestiones relacionadas