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

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

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

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

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

このプロセスは、最終的には Apache サーバー上で稼働する Web アプリケーションになると思われるため、Linux ホストで開始されるのが好ましいのですが、Windows で開始する必要がある場合でも、ためらいながらも問題ありません。

理想的には次のようなものがほしいですpsexecLinuxをWindowsに対抗させるというアイデアはあったが、その方向への答えはシグウィン彼らが払った努力には感謝しているが、正しいと感じた、私の言いたいことがおわかりでしょう。デスクトップには最適で、多くの機能を提供しますが、WindowsサーバーはWindowsサーバーとして扱われるべきであり、Unixマシンの劣化版として扱われるべきではないと思います(ちなみに、これはOSXサーバーに対する私の反論でもあります。実は(Unix の場合)。いずれにせよ、それが最後の唯一の選択肢でない限り、Cygwin を使いたくありません。

つまり、私が尋ねているのは、Linux から Windows マシンでジョブを実行する方法があるかどうかということです。Cygwin なしで。「バカ、みんな Cygwin を使ってるんだから、我慢して対処してみろ」というアイデアや提案も歓迎します。よろしくお願いします!

答え1

私はこの問題に何時間も費やし、最終的に2つに絞られました実行可能オプション(実行不可能なオプションも多数あります):

  1. ドメイン化され、そこからの WinRM セッションが機能するように設定された WebAPI をホストする IIS サービスを備えた Windows ボックスを構築します。
  2. シグウィン

2 番目のオプションでは、実際の Windows ビットに到達するために、GNU/Posix 抽象化レイヤーを通り抜けるという苦労を強いられます。これにより、実行できる操作が制限されます。

最初のオプションは、完全なネイティブ スタック Windows インストールの上に、自分で記述した Web ベースの抽象化レイヤーを構築するというものです。作業に意欲があれば、Linux マスター サーバーは、必要な処理を実行するために一連の curl 呼び出しを実行するだけで済みます。ただし、コールバック システムの構築には多くの労力がかかるため、スクリプトが fire-and-forget である場合に最も効果的です。

答え2

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

(私の以前の仕事ではCygwinも使用されていましたともかく、ワークロードがプラットフォーム間で移動したときに、変更せずに同じ Perl スクリプトを使用できるようにします。とても楽しいです。

@sysadmin1138 が提案しているように、独自のシステムを構築してみるのもよいでしょう。これは楽しいプロジェクトになるでしょうし、最終的には十分に堅牢になって使えるようになり、最初の試行で財務エクスポートが失敗しても午前 2 時に呼び出されることがなくなるかもしれません。

答え3

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

答え4

後でどれだけ気分が悪くなるか、だって Telnet が常にあるんだから :)

真面目な話、なぜ Linux サーバーが PowerShell スクリプトを呼び出す必要があるのでしょうか? Linux サーバーが PXE ブート ホストに tftp 経由で正しい boot.wim イメージを配信するようにワークフローを再設計できますか? 以前、Windows ファイル サーバーに異なる応答ファイルを含む Windows イメージを保持し、Linux ホストから tftpd を使用してカスタム WinPE ブート イメージを配信することでうまくいきました。その後、応答ファイルで正しい PowerShell スクリプトを呼び出すことができ、Cygwin のようなクロスプラットフォームの厄介な問題に対処する必要がなくなります。

関連情報