web-dev-qa-db-ja.com

PowershellスクリプトをWindows以外のワークフローと統合する方法?

朝の新しい機械の匂いが大好きです。

私は、インフラストラクチャ全体でいくつかの個別のシステムを含むマシン作成ワークフローを自動化しています。その一部は、Solarisホスト上の15年前のPerlスクリプト、PXEブートLinuxシステム、およびWindows Server 2008上のPowershellを含みます。

個々の部分をスクリプト化でき、LinuxとUnixの自動化を統合するのはかなり簡単ですが、Powershellスクリプトを残りのプロセスに確実に結び付ける方法について途方に暮れています。

プロセスがLinuxホストで開始する場合は、Apacheサーバー上で動作するWebアプリケーションになると思いますが、Windowsで開始する必要がある場合は、ためらいなくそれで大丈夫です。

私は理想的には、LinuxがWindowsに対して実行される psexec に沿ったものを望みますが、その方向の答えは Cygwin によって表示されます。彼らが投入したハードワーク、それは決して 正しく感じた、 お分かりでしょうが。これはデスクトップに最適であり、多くの機能を提供しますが、WindowsサーバーはWindowsサーバーのように扱うべきであり、粗雑なUnixマシンではないように感じます(偶然にも、OSXサーバーに対する私の議論です)。 実際に Unix)。とにかく、それが最後で唯一のオプションでない限り、私はCygwinを使いたくありません。

LinuxからWindowsマシンでジョブを実行する方法があるかどうかを私が尋ねていると思います。 Cygwinなし。私は「ばかを見て、誰もがCygwinを使用するので、それを吸い上げて対処する」などのアイデアや提案を受け入れます。前もって感謝します!

16
Matt Simmons

私はこの非常に問題に何時間も費やしてきましたが、最終的には2つのviableオプションになりました(そこには実行不可能なオプションがたくさんあります)。

  1. IISサービスをホストするWindowsボックスをドメイン化され、WinRMセッションが機能するようにセットアップされているWebAPIを構築します。
  2. Cygwin

2番目のオプションを使用すると、GNU/Posix抽象化レイヤーを通り抜けて実際のWindowsビットに到達するのに行き詰まっています。それはあなたがそれでできることを制限します。

最初のオプションは、ネイティブスタックの完全なWindowsインストールに加えて、自分で記述したWebベースの抽象化レイヤーを構築します。作業に取り掛かるつもりであれば、Linuxマスターサーバーは、必要な処理を行うために大量のcurl呼び出しを実行するだけで済みます。ただし、コールバックシステムの構築にはかなりの労力が必要であるため、スクリプトが実行され忘れた場合は、これが最適に機能します。

5
sysadmin1138

Powershell v3.0で導入されたPowershell Web Access機能を使用します。これにより、LinuxホストからPowershellスクリプトを使用できます。

3
Roy Kaldung

以前のアクションや返された結果に応じて、多くのホストでネイティブスクリプトを開始できるクロスプラットフォームスケジューリングまたはワークフロー自動化ソフトウェアを購入することもできます。大企業はこれを行うTivoli、UC4、Espresso(現在はCA dSeries)などのソフトウェアを使用しており、私はこのようなことを行う必要のある大企業で使用しました。ちなみに、これらはOracleジョブなどのネイティブサポートを備えていることが多く、見ているかもしれない価格を知ることができます。

(私の以前の仕事では、Cygwin とにかくも使用したため、ワークロードがプラットフォーム間を移動するときに、変更なしで同じPerlスクリプトを使用できました。多くの楽しみがあります。)

@ sysadmin1138が示唆するように、独自のビルドを試みることもできます。これは楽しいプロジェクトであり、金融​​輸出が最初の試行で失敗した場合、使用可能になるほど十分に堅牢になり、午前2時にページングされないこともあります。

3
mfinni

Nrpeのようなものを使用して、Windowsホスト上でpowershellスクリプトをリモートで実行できます。 nrpeが期待する終了コードを返すようにPowerShellスクリプトを変更することもできますが、Linuxホストのスクリプトからcheck_nrpeを呼び出せなかった理由はありません。

2
rorr

counter-intuitive hacks について、継続的統合ソフトウェアをクロスプラットフォームのオーケストレーションツールとして悪用することを検討しましたか?

CIマスターをインストールする 最も便利な場所に、Windowsボックスにエージェントをインストールします( this または this のいずれか)。 Windowsエージェントでpowershellスクリプト(Windowsバッチコマンド構成を使用して直接起動するか、または プラグイン を使用してスクリプトを作成/保持する場合) トリガーリモートでジョブ curlまたは同様の方法で。

2
Greg Work

PowerShell server WindowsサーバーにSSHで接続し、PowerShellコンソールを取得できます。私は無料の試用を超えてそれを使用していませんが、私の非公式の使用はそれがかなり信頼できる製品であることを証明しました。

2
longneck

Telnetは常に存在するので、後で全体的にどの程度感じたいですか。

しかし真剣に、なぜPowerShellスクリプトを呼び出すためにLinuxサーバーが必要なのですか? Linuxサーバーがtftp経由でPXE起動ホストに正しいboot.wimイメージを配信するようにワークフローを再設計できますか?私はこれまで、さまざまな応答ファイルを含むWindowsイメージをWindowsファイルサーバー上に保持し、Linuxホストからtftpdを使用してカスタムWinPEブートイメージを配信することに幸運をもたらしてきました。その後、応答ファイルで適切なPowerShellスクリプトを呼び出すことができ、Cygwinのようなクロスプラットフォームの不快感に対処する必要はありません。

2
MDMarra

私はこの問題がよく発生する大企業で働いています。現在私たちのアプローチをサポートしているプロセスの場合、Unixシステムに、IISでColdFusionを実行している "admin" WindowsサーバーへのWeb呼び出しを行わせることです。 「cfexecute」ディレクティブを使用して特定のpowershellスクリプトを起動するGETリクエストからトリガーされるクラスと関数があります。醜いですが、動作します。私たちは、ColdFusionを仲介者として機能させることから移行するためのpowershell v3 Webサービス機能を検討しています。

0
Ryan Fisher