Methode zum Integrieren von Powershell-Skripten in Nicht-Windows-Workflows?

Methode zum Integrieren von Powershell-Skripten in Nicht-Windows-Workflows?

Ich liebe den Geruch neuer Maschinen am Morgen.

Ich automatisiere einen Workflow zur Maschinenerstellung, der mehrere separate Systeme in meiner Infrastruktur umfasst, darunter zum Teil 15 Jahre alte Perl-Skripte auf Solaris-Hosts, PXE-Boot-Linux-Systeme und Powershell auf Windows Server 2008.

Ich kann für jeden einzelnen Teil ein Skript erstellen und die Integration der Linux- und Unix-Automatisierung ist ziemlich unkompliziert, aber ich weiß nicht, wie ich die Powershell-Skripte zuverlässig mit den übrigen Prozessen verknüpfen kann.

Mir wäre es lieber, wenn der Prozess auf einem Linux-Host beginnen würde, da ich mir vorstelle, dass er am Ende eine Webanwendung auf einem Apache-Server sein wird. Wenn er aber unter Windows beginnen muss, bin ich damit zögerlich einverstanden.

Am liebsten wäre mir so etwas wiepsexecfür Linux unter Windows laufen zu lassen, aber die Antwort in dieser Richtung scheint durchCygwin, und so sehr ich all die harte Arbeit schätze, die sie leisten, es war niefühlte sich richtig an, wenn Sie wissen, was ich meine. Es ist großartig für einen Desktop und bietet eine Menge Funktionalität, aber ich bin der Meinung, dass Windows-Server wie Windows-Server behandelt werden sollten und nicht wie verfälschte Unix-Maschinen (was übrigens auch mein Argument gegen OSX-Server ist, und sie sindGenau genommenUnix). Wie auch immer, ich möchte nicht mit Cygwin arbeiten, es sei denn, das ist die letzte und einzige Option.

Ich frage also, ob es eine Möglichkeit gibt, Jobs auf Windows-Rechnern von Linux aus auszuführen. Ohne Cygwin. Ich bin offen für Ideen und Vorschläge, einschließlich „Sieh mal, du Idiot, jeder verwendet Cygwin, also reiß dich zusammen und komm damit klar“. Vielen Dank im Voraus!

Antwort1

Ich habe Stunden damit verbracht, an diesem Problem herumzubasteln, und am Ende kam ich auf zweilebensfähigOptionen (es gibt viele nicht realisierbare Optionen):

  1. Erstellen Sie eine Windows-Box mit einem IIS-Dienst, der eine WebAPI hostet, die sowohl einer Domäne angehört als auch so eingerichtet ist, dass WinRM-Sitzungen von ihr funktionieren.
  2. Cygwin

Bei der zweiten Option müssen Sie sich durch die GNU/Posix-Abstraktionsschicht kämpfen, um an die eigentlichen Windows-Teile zu gelangen. Das schränkt Ihre Möglichkeiten ein.

Die erste Option erstellt im Wesentlichen eine webbasierte Abstraktionsschicht, die Sie selbst schreiben, auf Ihrer vollständigen nativen Windows-Installation. Wenn Sie bereit sind, die Arbeit zu investieren, muss der Linux-Masterserver nur eine Reihe von Curl-Aufrufen ausführen, um das zu tun, was getan werden muss. Dies funktioniert jedoch am besten, wenn Skripte Fire-and-Forget sind, da das Erstellen eines Rückrufsystems viel mehr Aufwand bedeutet.

Antwort2

Sie können auch plattformübergreifende Planungs- oder Workflow-Automatisierungssoftware kaufen, die native Skripte auf vielen Hosts starten kann, abhängig von vorherigen Aktionen oder sogar von den zurückgegebenen Ergebnissen. Große Unternehmen verwenden Software wie Tivoli, UC4, Espresso (jetzt CA dSeries), die dies tut, und ich habe sie in großen Unternehmen verwendet, die so etwas tun mussten. Zu Ihrer Information: Diese bieten oft native Unterstützung für Dinge wie Oracle-Jobs, damit Sie eine Vorstellung von den Kosten haben, die auf Sie zukommen könnten.

(In meinem früheren Job wurde auch Cygwin verwendetTrotzdem, sodass sie dieselben Perl-Skripte ohne Änderungen verwenden konnten, wenn Arbeitslasten zwischen Plattformen verschoben wurden. Macht viel Spaß.)

Sie könnten auch versuchen, Ihr eigenes System zu erstellen, wie @sysadmin1138 vorschlägt. Das wäre ein unterhaltsames Projekt und könnte am Ende sogar robust genug sein, um verwendet werden zu können, und Sie nicht um 2 Uhr morgens anpiepen lassen, wenn der Finanzexport beim ersten Versuch fehlschlägt.

Antwort3

Ich würde die in Powershell v3.0 eingeführte Powershell Web Access-Funktion verwenden. Damit können Sie Powershell-Skripte von einem Linux-Host aus verwenden.

Antwort4

Wie eklig wollen Sie sich danach fühlen, denn es gibt ja immer noch Telnet :)

Aber mal im Ernst: Warum muss der Linux-Server das PowerShell-Skript aufrufen? Können Sie Ihren Workflow so umgestalten, dass der Linux-Server einfach das richtige boot.wim-Image per TFTP an einen per PXE gebooteten Host liefert? Ich hatte in der Vergangenheit gute Erfahrungen damit, ein Windows-Image mit verschiedenen Antwortdateien auf einem Windows-Dateiserver zu speichern und ein benutzerdefiniertes WinPE-Boot-Image per TFTPD von einem Linux-Host aus zu liefern. Dann können Sie die Antwortdatei das richtige PowerShell-Skript aufrufen lassen und müssen sich nicht mit plattformübergreifenden Problemen wie bei Cygwin herumschlagen.

verwandte Informationen