Tengo una gran cantidad de código de powershell que he escrito en el transcurso de un proyecto largo; estos scripts realizan una amplia variedad de funciones, y la mayoría de ellos dependen de alguna manera de otros dentro del alcance del proyecto. En este momento, el trabajo se compone de un par de archivos que contienen muchas funciones cada uno. Originalmente, para poder trabajar con estos scripts, todos los archivos de script estaban distribuidos de forma aleatoria en el entorno.¿Cómo administrar las dependencias entre scripts en el módulo Powershell de varios archivos?
Sin embargo, he aprendido recientemente que Powershell 2.0 presenta módulos, y me gustaría implementar estos scripts juntos de esa manera. Dado que los contenidos de un módulo se cargan todos juntos, me gustaría separar mis archivos para que cada script tenga su propio archivo, para ayudar al control de la fuente. Sin embargo, ahora estoy un poco confuso acerca de las conexiones entre los guiones.
He hecho algunas pruebas y parece que está bien mover el comando Export-ModuleMember para cada función a los archivos individuales .ps1; esto parece más como funciones que declaran su propio alcance como el alcance público y privado en C#. Sin embargo, después de hacer eso, mi archivo .psm1 no contiene nada más que esto:
Get-ChildItem -recurse $psScriptRoot | where { $_.Extension -eq ".ps1" } | foreach { . $_.FullName }
¿Eso parece correcto? Todos los scripts se obtienen con fuente de puntos, y todos los scripts se refieren entre sí bajo esa suposición. ¿Deberían referirse el uno al otro usando sus ubicaciones relativas a $ psScriptRoot?
¿Hay alguna manera diferente de estas dos formas? ¿Alguien puede ofrecer un consejo? No sé mucho sobre esto todavía.
en cierto modo me hago esto, pero el grupo varios como funciones en una secuencia de comandos en lugar de cada uno en su propio archivo. – JasonMArcher