¿Método para integrar scripts de Powershell con flujo de trabajo que no sea de Windows?

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

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

Puedo script cada una de las partes individuales, y la integración de la automation de Linux y Unix es bastante sencillo, pero estoy en una pérdida en cuanto a cómo unir de forma fiable los scripts Powershell con el rest de los processs.

Preferiría que el process comenzara en un host Linux, ya que imagino que terminará como una aplicación web que vive en un server Apache, pero si necesita comenzar en Windows, estoy vacilantemente bien con eso.

Preferiría algo como psexec para que Linux funcione en Windows, pero la respuesta en esa dirección aparece a Cygwin , y tanto como aprecio todo el trabajo duro que ellos pusieron, nunca se ha sentido bien , Si sabes a lo que me refiero. Es genial para un escritorio y ofrece mucha funcionalidad, pero siento que los serveres Windows deben ser tratados como serveres Windows y no bastardized Unix máquinas (que, por cierto, es mi argumento contra los serveres de OSX, también, y en realidad son Unix) . De todos modos, no quiero ir con Cygwin a less que sea la última y única opción.

Así que supongo que lo que estoy preguntando es si hay una manera de ejecutar trabajos en máquinas Windows desde Linux. Sin Cygwin. Estoy abierto a ideas y sugerencias, incluyendo "Look idiota, todo el mundo utiliza Cygwin, así que chupar y tratar con él". ¡Gracias por adelantado!

8 Solutions collect form web for “¿Método para integrar scripts de Powershell con flujo de trabajo que no sea de Windows?”

He pasado horas golpeando en este problema y finalmente llegó a dos opciones viables (hay un montón de opciones no viables por ahí):

  1. Cree un cuadro de Windows con un service IIS que aloje una WebAPI que esté dominada y configurada de tal manera que las sesiones de WinRM funcionen.
  2. Cygwin

Con la segunda opción, estás atrapado luchando en tu path a través de la capa de abstracción GNU / Posix para get los bits reales de Windows. Que restringe lo que eres capaz de hacer con él.

La primera opción construye una capa de abstracción basada en web que se escribe en la parte superior de su installation completa de Windows de stack nativa. Si estás dispuesto a poner en el trabajo, el server maestro de Linux sólo tiene que hacer un montón de llamadas curl para hacer lo que necesita hacer. Esto funciona mejor cuando los scripts son fire-and-forget, aunque la construcción de un sistema de call-back es mucho más esfuerzo.

También puede comprar software de automation de progtwigción o flujo de trabajo entre plataforms que puede activar scripts nativos en muchos hosts en function de las 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. FYI, estos a menudo tienen soporte nativo para cosas como los trabajos de Oracle, para darle una idea de la label de precio que podría estar viendo.

(En mi trabajo anterior, también utilizaron Cygwin de todos modos , para que pudieran usar los mismos scripts de Perl sin modificación cuando las cargas de trabajo se movían entre plataforms.

También puede intentar build su propio, como @ sysadmin1138 sugiere; que sería un proyecto divertido, e incluso podría llegar a ser lo suficientemente robusto como para ser utilizable y no te paginado a las 2 AM cuando las exportaciones financieras fallan en el primer bash.

Usaría la característica del acceso del Web de Powershell introducida en Powershell v3.0. Esto le permite usar scripts de Powershell desde un host Linux.

El server de PowerShell le permite SSH en un server de Windows y get una console de PowerShell. No lo he utilizado más allá de la testing gratuita, pero mi uso informal me demostró que era un producto bastante confiable.

¿Cómo bruto quieres sentir después, porque siempre hay telnet 🙂

En serio, ¿por qué necesita el server Linux para llamar a la secuencia de commands de PowerShell? ¿Puede networkingiseñar su flujo de trabajo para que el server Linux simplemente entregue la image boot.wim correcta a través de tftp a un host PXE arrancado? He tenido buena suerte en el pasado manteniendo una image de Windows con diferentes files de respuesta en un server de files de Windows y entregando una image de arranque de WinPE personalizada usando tftpd de un host Linux. A continuación, puede hacer que el file de respuesta llame al script PowerShell correcto y no tiene que tratar con cross-platform yuckiness como Cygwin.

Usted podría utilizar algo como nrpe para ejecutar remotamente el script powershell en el host de Windows. Es posible que desee modificar sus scripts de powershell para devolver los códigos de salida según lo esperado por nrpe, pero no hay ninguna razón por la que no pueda llamar a check_nrpe desde sus scripts en su host linux.

Sobre el tema de hackers contra-intuitivos , ¿ha considerado abusar del software de Integración Continua como una herramienta de orquestación multiplataforma?

Instale el maestro CI donde sea más conveniente, instale el agente en su casilla de Windows (ya sea esto o esto ), configure un trabajo para ejecutar su script powershell (invocándolo directamente con la configuration del command Batch de Windows o usando un complemento si lo desea para escribir / mantener su secuencia de commands dentro de la aplicación CI) en su agente de Windows y desencadenar el trabajo de forma remota a través de curl o similar.

Trabajo en una gran empresa donde este problema es común. Para los processs que actualmente apoyamos nuestro enfoque es hacer que los sistemas Unix hagan llamadas Web a un server Windows "admin" que está ejecutando ColdFusion en IIS. Tenemos classs y funciones que se activan desde las requestes GET que usan la directiva "cfexecute" para lanzar scripts powershell específicos. Es feo, pero funciona. Estamos viendo las características del service web powershell v3 para migrar lejos de tener ColdFusion actuando como intermediario.

  • El usuario no puede cambiar la contraseña debido a la complejidad
  • Configuración del service SVN en Windows 2003
  • Sistema interno de Dropbox
  • La computadora que es miembro de un dominio no puede ver los grupos de dominio
  • ¿Por qué esto me impide instalar un MSI? El Administrador del sistema ha establecido políticas para evitar que esta installation
  • Obtener identificador de directiva de grupo en PowerShell
  • EMC Celerra y Enumeración basada en acceso
  • Cómo configurar un process de service de Windows para ejecutarse con baja prioridad?
  • ¿Es seguro cambiar ACL de NTFS en un sistema de files activo?
  • Máquina virtual - Problemas con el nombre de host de DNS en Windows Server
  • Compartir directorys en un grupo de trabajo de Windows
  • El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.