¿Método para integrar scripts de Powershell con flujos de trabajo que no son de Windows?

¿Método para integrar scripts de Powershell con flujos de trabajo que no son de Windows?

Me encanta el olor de las máquinas nuevas por la mañana.

Estoy automatizando un flujo de trabajo de creación de máquinas que involucra varios sistemas separados en mi infraestructura, algunos de los cuales involucran scripts Perl de 15 años de antigüedad en hosts Solaris, sistemas Linux con arranque PXE y Powershell en Windows Server 2008.

Puedo programar cada una de las partes individuales, e integrar la automatización de Linux y Unix es bastante sencillo, pero no sé cómo vincular de manera confiable los scripts de Powershell con el resto de los procesos.

Preferiría que el proceso comenzara en un host Linux, ya que imagino que terminará como una aplicación web que reside en un servidor Apache, pero si necesita comenzar en Windows, no estoy de acuerdo con eso.

Lo ideal sería algo parecido apsexecpara que Linux se ejecute en Windows, pero la respuesta en esa dirección parece serCygwin, y por mucho que aprecio todo el arduo trabajo que hicieron, nunca ha sido así.me sentí bien, Si sabes a lo que me refiero. Es excelente para una computadora de escritorio y ofrece muchas funciones, pero creo que los servidores Windows deberían ser tratados como servidores Windows y no como máquinas Unix bastardas (que, dicho sea de paso, también es mi argumento contra los servidores OSX, y sonde hechoUnix). De todos modos, no quiero ir con Cygwin a menos que sea la última y única opción.

Supongo que lo que pregunto es si hay alguna forma de ejecutar trabajos en máquinas Windows desde Linux. Sin Cygwin. Estoy abierto a ideas y sugerencias, incluido "Mira idiota, todo el mundo usa Cygwin, así que aguanta y ocúpate de ello". ¡Gracias de antemano!

Respuesta1

Pasé horas dándole vueltas a este mismo problema y finalmente todo se redujo a dosviableopciones (hay muchas opciones no viables por ahí):

  1. Cree una caja de Windows con un servicio IIS que aloje una WebAPI que tenga un dominio y esté configurada de tal manera que las sesiones de WinRM funcionen.
  2. Cygwin

Con la segunda opción, estás atrapado abriéndote camino a través de la capa de abstracción GNU/Posix para llegar a los bits reales de Windows. Lo que restringe lo que puedes hacer con él.

La primera opción prácticamente construye una capa de abstracción basada en web que usted mismo escribe sobre su instalación nativa completa de Windows. Si está dispuesto a trabajar, el servidor maestro de Linux solo tiene que realizar un montón de llamadas curl para hacer lo que hay que hacer. Sin embargo, esto funciona mejor cuando los scripts se activan y olvidan, ya que crear un sistema de devolución de llamadas requiere mucho más esfuerzo.

Respuesta2

También puede comprar software de automatización de flujo de trabajo o programación multiplataforma que puede iniciar scripts nativos en muchos hosts dependiendo de acciones anteriores, o incluso de los resultados devueltos. Las grandes empresas utilizan software como Tivoli, UC4, Espresso (CA dSeries, ahora) que hace esto, y lo he usado en grandes empresas que necesitaban hacer este tipo de cosas. Para su información, estos suelen tener soporte nativo para cosas como trabajos de Oracle, para darle una idea del precio que podría estar considerando.

(En mi trabajo anterior, también usaban Cygwinde todos modos, para que pudieran usar los mismos scripts Perl sin modificaciones cuando las cargas de trabajo se movían entre plataformas. Mucha diversión.)

También puedes intentar crear el tuyo propio, como sugiere @sysadmin1138; Sería un proyecto divertido e incluso podría terminar siendo lo suficientemente sólido como para ser utilizable y no recibir un aviso a las 2 a.m. cuando las exportaciones financieras fallan en el primer intento.

Respuesta3

Usaría la función Powershell Web Access introducida en Powershell v3.0. Esto le permite utilizar scripts de Powershell desde un host Linux.

Respuesta4

¿Qué tan asqueroso quieres sentirte después, porque siempre hay telnet :)

En serio, ¿por qué necesita que el servidor Linux llame al script de PowerShell? ¿Puede rediseñar su flujo de trabajo para que el servidor Linux simplemente entregue la imagen boot.wim correcta a través de tftp a un host con arranque PXE? En el pasado tuve buena suerte manteniendo una imagen de Windows con diferentes archivos de respuesta en un servidor de archivos de Windows y entregando una imagen de arranque de WinPE personalizada usando tftpd desde un host de Linux. Luego, puede hacer que el archivo de respuesta llame al script de PowerShell correcto y no tendrá que lidiar con problemas multiplataforma como Cygwin.

información relacionada