(57)【要約】      （修正有）【課題】高度化された遠隔システム管理を可能とするコマンドライン環境を提供する。【解決手段】コマンドライン環境は、複数の遠隔ノードに関係する１つのコマンドラインを受け取るように構成される。コマンドライン環境は、それぞれの関係する遠隔ノードに対して持続的な場合があるセッションを確立し、それらのノードにおける遠隔コマンドの実行を起動するように構成される。セッションを変数に対して割り当てることができ、遠隔実行を同時に実行することができる。遠隔実行の結果が受け取られ、遠隔実行を１つの配列に集約することができる。このコマンドライン環境は、性能を向上させるためにセッションを確立するタスクを他のシステムに分散させることができる。【選択図】図２
2014089744.tif 000002
【特許請求の範囲】
【請求項１】
コマンドの遠隔実行を可能にするコンピュータで実行可能な命令を有するコンピュータ読み取り可能媒体であって、前記命令群は、
遠隔コマンドを含むコマンドライン命令を受け取ることであって、前記遠隔コマンドは、遠隔システム上で実行されるべき実行のタスクを特定すること、
少なくとも２つの遠隔システムとセッションを起動すること、および、
前記少なくとも２つの遠隔システムのそれぞれで前記遠隔コマンドを実行させること
を備えることを特徴とするコンピュータ読み取り可能媒体。
【請求項２】
前記セッションは、前記コマンドライン命令が受け取られるシステムとの間の接続を備えることを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項３】
前記セッションは、引き続く遠隔コマンドの実行に利用できる持続的セッションとして起動されることを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項４】
第２の遠隔コマンドを含む第２のコマンドライン命令を受け取ること、および、
前記持続的セッションを用いて前記第２の遠隔コマンドを実行させること
をさらに備えることを特徴とする請求項３に記載のコンピュータ読み取り可能媒体。
【請求項５】
前記遠隔システムは、遠隔コンピュータ装置を備えることを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項６】
前記遠隔システムは、代替のプロセスを備えることを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項７】
前記遠隔システムは、代替のアプリケーション領域を備えることを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項８】
前記遠隔コマンドを実行させることは、前記遠隔コマンドを実行させるステップを、前記少なくとも２つの遠隔システムのサブセットに関連付けられたコントローラに委任することを備えることを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項９】
前記少なくとも２つの遠隔システムのそれぞれは、階層的ネットワークトポロジにおけるノードを備え、
前記コントローラは、前記少なくとも２つの遠隔システムおよび前記コマンドライン命令を受け取る前記システムとの間の前記階層において位置を保持することを特徴とする請求項８に記載のコンピュータ読み取り可能媒体。
【請求項１０】
前記遠隔コマンドは、前記少なくとも２つの遠隔システムのそれぞれにおいて同時に実行されることを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項１１】
それぞれの遠隔コマンドの実行の結果を集約することをさらに備えることを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項１２】
前記結果は、１つの配列に集約されることを特徴とする請求項１１に記載のコンピュータ読み取り可能媒体。
【請求項１３】
前記結果は、どの遠隔システムが前記結果の起源であったかを特定する情報を含むことを特徴とする請求項１１に記載のコンピュータ読み取り可能媒体。
【請求項１４】
コマンドの遠隔実行に関するコンピュータ実行可能方法であって、
遠隔システムを特定する第１のコマンドラインをローカルシステムで受け取ること、
前記ローカルシステムと前記遠隔システムとの間でセッションを生成させることであって、前記セッションは、前記遠隔システム上に常駐する遠隔プロセスへの接続を含むこと、
前記遠隔プロセスにおいて遠隔コマンドを実行させること、および、
前記遠隔コマンドの結果を前記セッションに関連付けられた環境変数に格納すること
を備えることを特徴とするコンピュータ実行可能方法。
【請求項１５】
前記遠隔プロセスにおいて第２の遠隔コマンドを実行させること、および、
前記第２の遠隔コマンドの結果を前記環境変数に格納すること
をさらに備えることを特徴とする請求項１４に記載のコンピュータ実行可能方法。
【請求項１６】
前記セッションが生成されることは、前記環境変数を生成すること、および前記セッションを前記環境変数に関連付けることを備えることを特徴とする請求項１４に記載のコンピュータ実行可能方法。
【請求項１７】
前記第１のコマンドラインは、前記セッションに関連付けられた前記環境変数を特定するパラメータをさらに備えることを特徴とする請求項１６に記載のコンピュータ実行可能方法。
【請求項１８】
前記コマンドラインは、複数の遠隔システムをさらに特定することを特徴とする請求項１４に記載のコンピュータ実行可能方法。
【請求項１９】
前記コマンドラインは、前記ローカルシステムと前記遠隔システムとの間の前記セッションを生成する際に使用する証明書をさらに特定することを特徴とする請求項１４に記載のコンピュータ実行可能方法。
【請求項２０】
請求項１４に記載された方法を実行するためにコンピュータで実行可能な命令を有することを特徴とするコンピュータ読取り可能媒体。
【請求項２１】
コンピュータで実行可能なコンポーネントを有するコンピュータ読み取り可能媒体であって、前記コンポーネントは、
ローカルシステムと１または複数の遠隔システムとの間にセッションを生成し、維持するように構成されたセッションマネージャであって、それぞれのセッションは、前記ローカルシステムと遠隔システムとの間の複数の接続をホスティングできるセッションマネージャと、
コマンドの遠隔実行の結果を受け取るように構成されたアグリゲータであって、前記結果は、それぞれ１つの遠隔システムに関連付けられ、前記アグリゲータは、前記結果を１つの配列に集約するようにさらに構成されたアグリゲータと、
要求に応じて、それぞれのセッション中の有効な接続の数を制限するように構成されたスロットラーと
を備えることを特徴とするコンピュータ読み取り可能媒体。
【請求項２２】
前記配列中の前記結果のそれぞれは、前記結果の起源となった遠隔システムに関連付けられることを特徴とする請求項２１に記載のコンピュータ読み取り可能媒体。
【請求項２３】
前記アグリゲータは、前記結果をばらばらな形で利用可能にするようにさらに構成されたことを特徴とする請求項２１に記載のコンピュータ読み取り可能媒体。
【請求項２４】
前記アグリゲータは、前記セッションマネージャにより生成されたセッションに関連付けられた環境変数に前記結果を集約するようにさらに構成されたことを特徴とする請求項２１に記載のコンピュータ読み取り可能媒体。
【請求項２５】
前記スロットラーは、性能に依存する他の機構と対話して、遠隔コマンド実行の性能に対する影響を調整するように構成されたことを特徴とする請求項２１に記載のコンピュータ読み取り可能媒体。
【請求項２６】
前記性能に依存する他の機構は、ＱＯＳ機構を備えることを特徴とする請求項２５に記載のコンピュータ読み取り可能媒体。
【請求項２７】
前記性能に依存する他の機構は、前記遠隔システム上のリソースへの影響を調整するように構成された遠隔システム上のエージェントを備えることを特徴とする請求項２５に記載のコンピュータ読み取り可能媒体。
【請求項２８】
前記いくつかのコンポーネントのそれぞれの間の情報の流れを管理するように構成されたコアエンジンをさらに備えることを特徴とする請求項２１に記載のコンピュータ読み取り可能媒体。
【請求項２９】
前記コアエンジンは、セッションを起動するタスクを遠隔システムの階層中の別のシステムに委任するように構成されたことを特徴とする請求項２８に記載のコンピュータ読み取り可能媒体。
【請求項３０】
前記遠隔システムは、遠隔コンピュータ装置を備えることを特徴とする請求項２１に記載のコンピュータ読み取り可能媒体。
【請求項３１】
前記遠隔システムは、代替のプロセスを備えることを特徴とする請求項２１に記載のコンピュータ読み取り可能媒体。
【請求項３２】
前記遠隔システムは、代替のアプリケーション領域を備えることを特徴とする請求項２１に記載のコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステム管理に関し、より詳細には、遠隔ネットワークシステム管理のためのコマンドライン環境に関する。
【背景技術】
【０００２】
今日のコンピュータシステムおよびネットワークは複雑であり、巨大である。いくつかの大企業は、ＬＡＮおよびＷＡＮで相互接続された何千もの個別のコンピュータシステムを有する場合がある。これらすべてのコンピュータシステムをスムーズに稼動させ続けることが、企業の成功にとって不可欠である。このため、システム開発者は、システム管理のために役に立つ管理用のツールを提供するよう努める。
【０００３】
典型的なシステム管理者は、非常に高度化されたユーザであるため、管理用のツールは、しばしば、一般消費者のために意図されたアプリケーションより複雑である。例えば、グラフィカル・ユーザ・インタフェースが、一般ユーザに好まれているが、コマンドライン環境は、システム管理者に好評である。管理者は、しばしばグラフィカルインタフェースではなくコマンドラインを用いて、比較的複雑なタスクをより迅速に実行することができる。
【０００４】
典型的なコマンドライン環境は、コンピュータシステム上で動作するシェルにより提供される。典型的には、コマンドライン環境は、管理者が実行することができるいくつかのコアとなるコマンドを提供する。より複雑なタスクに対しては、典型的なコマンドライン環境により、コマンドを「パイプライン化」することができる。「パイプライン化」は、２以上のコマンドを同一のコマンドラインに入力することができ、それぞれのコマンドの結果が「パイプされる」か、またはパイプラインの次のコマンドに渡されることを意味する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
管理者がそれを好むにも関わらず、特に遠隔システム管理に対して、コマンドライン環境をより便利でかつ強力にするための注意がほとんど払われていない。例えば、管理者が、遠隔コンピュータに何らかの行動を起さなければならない、または１または複数の遠隔コンピュータから収集された情報を用いなければならない場合がしばしばある。しかしながら、比較的簡単なタスクの場合でさえ、遠隔実行をしなければならないときには、辟易とさせられる。加えて、従来技術のコンピュータシステムの複雑さは、「遠隔」が何を意味するかを問い直すことである。例えば、今日「遠隔」システムは、同一のコンピュータ上で実行される異なるプロセスである場合があるが、既存のコマンドライン環境はこれらの状況を無視している。
【０００６】
現在に至るまで、高度化された遠隔システム管理を提供するコマンドライン環境を、当業者は利用できなかった。
【課題を解決するための手段】
【０００７】
本発明は、高度化された遠隔システム管理のための機構および技法を指向する。簡潔にいうと、コマンドライン環境は、複数の遠隔ノードに関係する１つのコマンドラインを受け取るように構成される。コマンドライン環境は、それぞれの関係付けられた遠隔ノードに持続的なセッションを確立し、それらのノードにおいて遠隔コマンドの実行を起動するように構成される。セッションを、変数に対して割り当てることができ、遠隔実行を、同時に実行することができる。遠隔実行の結果を受け取り、１つの配列に集約することができる。コマンドライン環境は、他のシステムとのセッションを確立するタスクを分散させ、性能を向上することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明に関連して記述された機構および技法の恩恵を被るコンピュータ環境を一般的に例示する機能的なブロック図である。
【図２】図１で示されたコマンドライン環境の動作を詳細に例示する機能的なブロック図である。
【図３】開示されたコマンドライン環境により管理されるネットワーク化された環境におけるコンピュータシステムの階層的なトポロジの機能的なブロック図である。
【図４】コマンドライン命令の少なくとも一部分を遠隔で実行するためのプロセスにより実行されるステップを一般的に例示する論理的なフローチャートである。
【図５】遠隔コマンドを多数の遠隔装置に発行するときのコマンドライン環境の性能を強化するためのプロセスを一般的に例示する論理的なフローチャートである。
【図６】例示的コマンドライン環境を使用できるコンピュータ装置を示す図である。
【発明を実施するための形態】
【０００９】
以下の詳細な記述は、遠隔コマンドを実行するためのコマンドライン環境の１つの例示的実施方法に関する。この開示は、例示のみの目的のためであり、本発明の唯一の実施の方法であるとして見なされるべきではない。
【００１０】
図１は、本発明に関連して記述された機構および技法の恩恵を被るコンピュータ環境１００を一般的に例示する機能的なブロック図である。ネットワーク１１０を介して接続された、いくつかのコンピュータシステムが例示される。より詳細には、ネットワーク１１０は、「管理者」１１２のコンピュータシステムをいくつかの遠隔コンピュータシステム（例えば、遠隔Ａ１２０、遠隔Ｂ１２１、および遠隔Ｃ１２２）へ接続する。いくつかのコンピュータシステムは、企業ネットワークまたは他の管理されたいかなるネットワーク環境の一部となることができる。遠隔コンピュータシステムは、物理的にどこに位置してもよい。
【００１１】
ネットワーク１１０は、異なるコンピュータシステムを接続するための、ローカルエリアネットワーク、広域ネットワーク、またはインターネットなどの、どんな機構であってもよい。遠隔コンピュータシステムのそれぞれは、従業員または加入者などのエンドユーザにより使用されている、個別のコンピュータシステムであってもよい。
【００１２】
「管理者１１２」は、システム管理者によって使用されるコンピュータシステム、またはコンピュータ環境１００を維持するためのコンピュータシステムである。言い換えれば、管理者１１２は、コマンドを実行し、コンピュータ環境における他のコンピュータシステムについて状況または状態について問い合わせ、１または複数の他のコンピュータシステムに変更を加えることができるタスクを実行する。管理者１１２は、ネットワーク１１０の状態を問い合わせるか、または変更することができる。管理者１１２は、プロセスＡ１１３およびプロセスＢ１１４などの、１または複数のプロセスを支援する実行環境を含む。それぞれのプロセスは、少なくとも１つのプログラムまたはアプリケーションをホストする。加えて、１つのプロセス（例えば、プロセスＡ１１３）が、アプリケーションＡ（１１５）およびアプリケーションＢ（１１６）などの、１または複数のアプリケーション領域をホストすることができる。アプリケーション領域は、複数のアプリケーションが同一プロセスの中で実行されるが、他のアプリケーションから分離されていることを可能にする比較的新しい機構である。アプリケーション領域は、実行時間環境によりアプリケーションの周りに生成された、論理的かつ物理的な境界である。それぞれのアプリケーション領域は、個々のアプリケーションの構成、セキュリティ、または安定性が、他のアプリケーション領域において他のアプリケーションに影響を及ぼすことを回避する。
【００１３】
コンピュータ環境１００におけるそれぞれのコンピュータシステムは、ここで記述される機構および技法を実施するコマンドライン環境を支援する。図２に関連してさらに詳細に記述されるように、管理者１１２は、ユーザがローカルおよび遠隔でコマンドを実行することを可能とするコマンドライン環境を含む。管理者１１２は、ローカルなコマンドライン環境（「シェル」とも称される）および任意の１または複数の遠隔システムの間のセッションを確立するように構成される。この実施方法において、遠隔システムは、ローカルのコンピュータシステム上の他のプロセスまたはアプリケーション領域（すなわち管理者１１２）に加えて、遠隔コンピュータ装置（例えば、遠隔Ａ１２０）を含む。従って、既存のシステムと異なり、管理者１１２のユーザは、接続を確立し、遠隔コンピュータ装置上で、ローカルのコンピュータ装置上の他のプロセスまたはアプリケーション領域のいずれかで、遠隔にコマンドを実行することができる。さらに、管理者１１２は、それぞれの遠隔システムに対して個別のセッションを生成し、複数の遠隔システム上で同時に実行するためにコマンドを起動することができ、これは今までは成されなかったことである。
【００１４】
図２は、図１で紹介されたコマンドライン環境２００の動作をさらに詳細に例示する機能的なブロック図である。図２において管理者１１２およびいくつかの遠隔システム２０１が例示される。この例では、遠隔システムの内の２つ（すなわち、遠隔Ａ１２０および遠隔Ｂ１２１）は、遠隔コンピュータ装置である。一方、別の遠隔システム（すなわち、遠隔Ｎ２２０）は、別のアプリケーション領域でコードを実行する、ローカルコンピュータ上の別のプロセスなどとすることができる。この実施方法では、管理者１１２は、遠隔システム２０１上で遠隔管理を実行する。
【００１５】
各遠隔システムは、いくつかの「コマンド」（例えば、コマンド２２２）を含む。コマンドは、システムの管理的タスクを実行するために使用される比較的小さいコードのコンポーネントである。例としては、コンピュータ装置上で実行されるそれぞれのプロセスを特定するための「プロセス」コマンド、コンピュータ装置上のディレクトリにおけるファイルを特定するための「ｄｉｒ」コマンド、およびその他多数が含まれる場合がある。また一方、コマンドには遠隔システム上の任意の実行可能なコンポーネントが含まれる場合がある。
【００１６】
また、遠隔システム２０１のそれぞれは、遠隔エージェント（例えば、エージェント２２４）が含まれ、これは１または複数のコマンド（例えば、コマンド２２２）を実行する遠隔要求に応えるコンポーネントである。さらに、エージェントは、１または複数のコマンドの実行の結果を考慮し、要求装置に返されるパッケージを生成するように構成される。一実施例では、パッケージは、起動の日付および時間のようなメタ情報、結果が発生した特定の遠隔システムに関する識別情報、および要求エンティティに関する情報に加えて、実行の結果を含む直列化オブジェクトの形式を取る。これと恐らく他の情報が、要求エンティティ（例えば、管理者１１２）に返送するための戻りパッケージ２２６にまとめられる。
【００１７】
管理者１１２は、コマンドライン環境２００を支援するコンポーネントを含む。より詳細には、管理者１１２は、遠隔システム上に常駐するコマンドと同様なコマンド２５０を含み、これはシステム管理で使用される。コマンドライン環境２００の動作は、コアエンジン２５１により制御される。コアエンジン２５１は、いくつかのコンポーネントのそれぞれの間、および管理者１１２とそれぞれの遠隔システム２０１との間の操作および情報の流れを管理するように構成されている。コアエンジンは、ユーザ入力がコマンドライン命令の形で（シェルなどを通すなどして）受け取られ、それに基づき動作することができる。このようなコマンドライン命令の特定のフォーマットおよびそれを取り扱うための技法が以下でさらに詳細に記述される。
【００１８】
さらに、コマンドライン環境２００は、セッションマネージャ２５３の機能を含む。コマンドライン環境２００は、複数の遠隔システムで同時に遠隔コマンドを実行するように構成される。これを達成するために、異なる「セッション」は、管理者１１２およびコマンドライン命令で特定される任意の遠隔システム２０１の間に確立される。「セッション」２３０は、管理者１１２および関連付けられた遠隔システム２０１の間の接続を表す。遠隔システムに関係するコマンドライン命令に応答して、セッションマネージャ２５３は、遠隔システム上のエージェント（例えば、エージェント２２４）と対話して、遠隔システム上のプロセスを呼び出し、そのプロセスへの接続を生成する。この接続は「セッション」と呼ばれる。下記の形式を取ることができる、特定のコマンドを使用するコマンドラインから、１または複数のセッションを確立することができる。 
【数１】
2014089744.tif 000003
この例では、フレーズ「new/session」は、新しいセッションが生成されることを示す。パラメータ「-node N1,N2,N3」は、セッションを生成しようとしているノード（遠隔システム）を示す。パラメータ「-node」に代わる手段として、パラメータ「-workerprocess」を使用してローカルマシン上の代替のプロセスへセッションを生成する場合が有り、またはパラメータ「-appdomain」を使用して同一プロセス中の異なるアプリケーション領域での別のアプリケーションへセッションを生成する場合が有る。パラメータ「-creds {XXX}」は、遠隔システム２０１に接続するために使用される、任意の特定のログオン証明書を特定する。最後に、パラメータ「-session yes」は、セッションを維持するかどうかを示すために使用される。複数のコマンドが異なるコマンドラインを用いて遠隔的に呼び出されるような場合には、セッションを維持することが有益である。従来システムと異なり、１つのセッションにより、遠隔プロセスが複数のコマンドライン命令に対して再利用されることが可能になる。この能力により自動化された管理およびスクリプト記述が改善される。
【００１９】
再び上記のコマンドラインの例を参照して、新しいセッションを生成することに関連して構文「$C =」を使用することで、環境変数「$C」に対して新しいセッションを割り当てる。環境変数２７５は、基本的には、シェルにより維持される変数であり、シェルは、他のタスクに対して使用可能であり、プロセスまたはアプリケーションの間で情報を共有するためにしばしば使用される。環境変数に対してセッションを割り当てることにより、異なるコマンドが単に環境変数を参照することにより、セッションに使用することができる。また、単一のセッションが複数の遠隔システムへの接続を含むことができるので、いくつかのコマンドを、単一の環境変数に対して発行することにより、その結果、より大きい規模（「１：ｍａｎｙ」）の管理タスクを簡略化することにより、発行することができる。この能力の利益を得るために使用される例示的コマンドラインを、次に示す。 
【数２】
2014089744.tif 000004
この例は、先の例に基づき、環境変数「$C」で特定されたセッションを有する遠隔システム上で遠隔コマンド（rcmd）のget/processを呼び出すことにより構築される。上記コマンドラインにおいて、各遠隔コマンドは同時に起動される。この特徴は、既存のコマンドライン環境に対して大きな機能強化であり、従来はそれぞれの遠隔システム上でコマンドを開始するためにループ操作または同じ操作を必要としていた。このようにして、この実施例の技法は、各遠隔コマンドを逐次的に実行しなければならないのではなく、同時にコマンドを処理する性能上の利点を実現する。
【００２０】
さらに、個々の遠隔コマンドそれぞれの結果は、アグリゲータ２５５により環境変数「$A」に集約される。換言すれば、セッション「$C」で参照される接続を有する１つの遠隔システムが、その戻りパッケージ（例えば、戻りパッケージ２２６）を返すと、アグリゲータ２５５は、特定の環境変数、この場合には「$A」の中にそのデータを含める。このようにして、引き続くコマンドおよびタスクは、複数の遠隔システムにおけるコマンドの実行結果にアクセスすることができる。結果は、１つの集約された配列として環境変数に格納される。アグリゲータ２５５は、それぞれの結果パッケージの起源を、環境変数の中の特定のインデックスと関連付ける情報を格納する。このようにして、コマンドライン環境２００のコンポーネントは、必要であるかまたは要求されるなら、マシンごとに、プロセスごとに、またはアプリケーション領域に基づき結果にアクセスすることができるようになる。一実施例では、例えば、すべての結果が返されると、集約された結果は同期化して利用可能になる。または、結果を、それらが受け取られるに従い環境変数を通して利用することができる。
【００２１】
同様な考えで、コアエンジン２５１は、コマンドラインをばらばらな方法で実行させることができ、コマンドは、結果が返されるに従って遠隔実行の結果にアクセスすることができる。例えば、ユーザが、未使用記憶域を一定の量を超過して有する複数の遠隔コンピュータ装置のいずれか１つを位置決めすることに関連付けられると、コマンドの実行は、最初のそのような装置が位置決めされると、適切に終了するかもしれない。この場合には、アグリゲータ２５５およびコアエンジン２５１が対話して、結果を非同期的に評価する。この場合、その結果に対する起源情報はやはり利用可能である。
【００２２】
恐らく数百または数千というような非常に多くの遠隔装置上で、コマンドが実行されることを意図するような場合を想定することがある。その場合には、一度にすべてのコマンドに同時に着手しないことが望ましい場合がある。そのような場合には、「スロットラー（throttler）」機能２５７を使用して、性能を強化することができる。スロットラー２５７は、コアエンジン２５１および恐らくセッション管理機能２５３と対話して、セッション中に作られる接続の数を制限し、ネットワークまたは管理者１１２のリソースが過大な負荷にならないようにする。例えば、パラメータ「-throttle 50」をコマンドラインで使用して、いかなる時でも５０を超える接続が有効であってはならないことを示すことができる。この機能強化は、管理者１１２のリソースまたはネットワークに過大な負荷が掛かることを防ぐために役立つ。代替的に、スロットラー２５７は、性能に依存する他の機構と対話して、遠隔コマンド実行の性能に対する影響を調整することもできる。例えば、スロットラー２５７は、ＱＯＳ（Quality Of Service）機構と対話して、ネットワーク帯域幅への影響を制限することができる。加えて、スロットラー２５７を、それぞれの遠隔エージェントと対話して、プロセッサまたはメモリの負荷など、それぞれの遠隔システムの性能に対する影響を調整するように構成されるかもしれない。
【００２３】
図３は、記述されたコマンドライン環境により管理される場合があるネットワーク化された環境におけるコンピュータシステムの階層的なトポロジ３００の機能的ブロック図である。大企業のネットワークのように、非常に多くの遠隔装置に遠隔命令を発行するために、上述したシステムを使用することができることを想像されたい。従って、コマンドラインシステムは、階層的なトポロジ３００を実行して、多数の接続がなされた際の管理者１１２の過大負荷を回避する。
【００２４】
例示したように、トポロジ３００は、管理者１１２およびコンピュータ装置の分散ネットワーク３０１を含む。分散ネットワーク３０１は、第２のレベル３１２における子供のコンピュータ装置のグループを制御する、サーバ（すなわち、サーバＡ３０２、サーバＢ３０３、およびサーバＣ３０４）より構成されるコンピュータ装置の第１のレベル３１０からなる階層的なレイアウトを含む。１または複数の第２のレベルにおけるコンピュータ装置（例えば、サーバＤ３６１）が、次に第３のレベル３１４にそれ自身の子供を有することができる。図３に示された分散ネットワーク３０１は、例示のためのみのものであり、複雑な企業ネットワークでは複数のサーバ層および何千台ものコンピュータ装置を持ち得ることが理解されるであろう。
【００２５】
この実施例では、分散ネットワーク３０１におけるいくつかのコンピュータ装置は、コマンド命令の性能を分散させるために役に立つ協調的な方法で管理者１１２と対話することができるコンポーネント（例えば、エージェント３０８）を含む。より詳細には、管理者１１２で発行されたコマンドライン命令は、分散ネットワーク３０１において非常に多数のコンピュータ装置に影響を及ぼす場合がある。従って、管理者１１２は、命令を実行するために必要なすべての接続をローカルに起動するのではなく、むしろ分散ネットワーク３０１の中のいくつかの子供の間にタスクを分散させる。この分散化は、少なくとも２つの方法で実行される。
【００２６】
第１に、管理者１１２が、分散ネットワーク３０１のレイアウトに関する知識を持たない場合においては、管理者１１２は、第１のレベル３１０の各サーバに、さらなる命令とともにコマンド命令を発行し、コマンドを、それぞれの子供または影響を受けているノードの特定された一群のいずれかの子供において実行させることができる。このようにして、それぞれの接続を実際に起動するタスクを、他のコンピュータ装置に分散する。第１のレベル３１０におけるコンピュータ装置は、第２レベル３１２にあるサーバＤ３６１などの下位のコンピュータ装置に実行の一部を追加的に委任することができる。
【００２７】
第２に、管理者１１２が、分散ネットワーク３０１のレイアウトに関する知識を持っており、どのリーフノードがどのサーバにより制御されているかを特定することができる場合には、管理者１１２は、影響を受けるノードを有する分散ネットワーク３０１における各ブランチに対するサブコマンドに、コマンドを分解することができる。次に、管理者１１２は、影響を受けるノードに対するコントローラに直接それらのサブコマンドを発行する。本質的に、この技法は、管理者１１２が、分散ネットワーク３０１におけるサーバまたはノードがコマンド命令の実際の実行を行うことに関する支配権を留保することを可能にする。さらに、この技法は、下位のコンピュータ装置により実行されるタスクを単純化し、そこでは、それら装置は、影響を受ける子供を有するかどうかを自身で発見する必要がない。
【００２８】
これら技法のそれぞれは、戻り結果（図２参照）が、結果の起源および結果が関係するコマンド命令を特定するために十分な情報を含んでいるために、簡略化されていることに注意するべきである。この情報が無い場合には、管理者１１２およびそれぞれの委任された装置は、その情報が必要な場合には、戻り結果が特定のノードに対応するであろうことを保証するために、整合を取る必要があるであろう。
【００２９】
図４は、コマンドライン命令の少なくとも一部分を遠隔で実行するためのプロセス４００により実行されるステップを一般的に例示する論理的なフローチャートである。プロセス４００は、ステップ４０１で始まり、コマンドラインがコマンドライン実行環境により受け取られる。記述された技法を実施するために適切な任意のコマンドライン実行環境が許容できるが、同時継続中である米国特許出願番号１０／６９３，７８５号、「Administrative Tool Environment」、２００３年１０月２４日出願に記述されたコマンドライン環境は、特に良好に適合する。この米国特許出願は、その開示内容全体を明白に本明細書の一部とする。
【００３０】
ステップ４０３において、受け取られたコマンドラインが１つ以上の遠隔システム上で遠隔に実行されるべき少なくとも１つのコマンドを含むことを判定する。遠隔実行は、遠隔コンピュータ装置上で、ローカルなコンピュータ装置上の別のプロセスで、または同一のローカルプロセス中の別のアプリケーション領域におけるタスクでの実行を含む。
【００３１】
ステップ４０５および４０７において、コマンドライン環境は、持続的セッションを特定された遠隔システムそれぞれに対して起動し、遠隔システムのそれぞれに遠隔コマンドを実行させる。代替的に、各遠隔装置への個別の接続を含む単一のセッションを使用することができる。上述したように、持続的セッションを、環境変数に割り当てることができる。さらに、セッションにおけるそれぞれの接続により、逐次的に、または同時に遠隔コマンドを実行することができる。これらのステップに対する性能強化は、図５で例示され、以下に記述する。
【００３２】
ステップ４０９において、コマンドの遠隔実行の結果が受け取られる。言及されたように、結果は、遠隔ノードがコマンドなどを実行する他の特定する情報などの実行の結果を含む、戻りパッケージまたは逐次的オブジェクトの形にされる。
【００３３】
図５は、遠隔コマンドを多数の遠隔装置に発行する場合のコマンドライン環境の性能を強化するためのプロセス５００を一般的に例示する論理的なフローチャートである。プロセス５００は、ステップ５０１で始まり、影響を受けるノードのどれが、コントローラの集合の中のどのコントローラにより制御されるかに基づいて、コマンドラインを、多くのサブコマンドに分解する。次に、ステップ５０３において、各サブコマンドを、その特定のコントローラの影響を受けるノードに対する特定されたそれぞれのコントローラに発行する。最後に、ステップ５０５において、それぞれのコントローラから返された結果が集約される。それぞれの結果は、起源となっているノードに関する情報を含んでいるため、この集約ステップは、その情報が必要であるとして、どのノードがその結果を生成したかについての有用な情報を失うことは無い。
【００３４】
上述されたコマンドライン環境では、既存のシステムに対していくつかの利点を有する。セッションを維持する能力により、遠隔プロセスを複数のコマンドに対して再利用することが可能となる。複数の接続を１つのセッションに集約し、作業者スレッドなどに依存せずに、遠隔コマンドの簡単な同時処理を可能にすることができる。さらに、遠隔コマンドを実行するタスクを、性能を強化するために他のシステムに分散することができる。これらおよび他の利点は、当業者にとって明らかになるであろう。
【００３５】
図６は、代表的コマンドライン環境において使用することができる代表的コンピュータ装置を例示する。コンピュータ装置６００は、典型的には、少なくとも１つの処理ユニット６０２およびシステムメモリ６０４を含む。コンピュータ装置の具体的な構成および種類により、システムメモリ６０４は、揮発性（ＲＡＭなど）の、不揮発（ＲＯＭ、フラッシュメモリなど）の、またはこれら２つの組合せである場合がある。システムメモリ６０４は、典型的には、オペレーティングシステム６０５、１または複数のプログラムモジュール６０６を含み、プログラムデータ６０７を含むことができる。オペレーティングシステム６０６は、コンポーネントベースのフレームワーク６２０を含み、コンポーネント（プロパティーおよびイベントを含む）、オブジェクト、継承、多態性、を支援し、Microsoft Corporation, Redmond, WAにより製作された、.NET（登録商標）フレームワークなどの、オブジェクト指向コンポーネントベースのＡＰＩ（Application Programming Interface）を提供する。上述したように、オペレーティングシステム６０５は、コマンドライン環境２００を含むことができる。この基本構成は、破線６０８の中のコンポーネントにより図６で例示される。
【００３６】
コンピュータ装置６００は、付加的な特徴または機能を有することができる。例えば、コンピュータ装置６００は、例えば、磁気ディスク、光学ディスク、またはテープなどの、追加のデータ記憶装置（着脱可能および／または着脱不可能）を含む場合がある。このような追加の記憶機構は、図６では着脱可能な記憶機構６０９および着脱不可能な記憶機構６１０により例示される。コンピュータ記憶媒体は、コンピュータで読み取り可能な命令、データ構造、プログラムモジュール、または他のデータなどの情報の格納のための任意の方法または技術で実施された、揮発性および不揮発性の、着脱可能および着脱不可能の媒体を含むことができる。システムメモリ６０４、着脱可能な記憶機構６０９、および着脱不可能な記憶機構６１０は、すべてコンピュータの記憶媒体の例である。限定するものではないが、コンピュータの記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、またはＣＤ−ＲＯＭ、ＤＶＤ（digital versatile disk）または他の光記憶、磁気カセット、磁気テープ、磁気ディスク装置または他の磁気記憶装置、または必要な情報を格納するために使用でき、かつコンピュータ装置６００からアクセスすることができる他の任意の媒体が含まれる。このようなコンピュータ記憶媒体のいずれもが装置６００の一部とすることができる。また、コンピュータ装置６００は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置６１２を有することができる。表示装置、スピーカ、プリンタなどの出力装置６１４も含むことができる。これらの装置は、当技術分野で良く知られており、ここでは議論する必要がない。
【００３７】
また、コンピュータ装置６００は、この装置がネットワークを経由するなどして他のコンピュータ装置６１８と通信することを可能にする通信接続６１６を含むことができる。通信接続６１６は、通信媒体の一例である。通信媒体は、典型的には、コンピュータで読み取り可能な命令、データ構造、プログラムモジュール、または搬送波または他の伝達機構など変調されたデータ信号の他のデータにより具現化することができ、任意の情報配信媒体を含む。用語「変調されたデータ信号」とは、その信号中に情報を符号化するような方法により設定または変更された１または複数のその特性を有する信号を意味する。限定するものではなく例として、通信媒体は、有線ネットワークまたは直接配線接続のような有線媒体、および音声、ＲＦ、赤外線、およびその他の無線媒体のような無線媒体を含む。ここに使用される用語、コンピュータ読み取り可能媒体は、記憶媒体および通信媒体の両方を含む。
【００３８】
特定の実施方法および実施形態の詳細が上述されたが、このような詳細は、別添の請求の範囲を限定するものではなく、むしろ法定の開示義務を満たすことを意図するものである。従って、請求範囲により定義される本発明は、上述された特定の特徴に限定されるものではない。むしろ本発明では、均等論に従って適切に解釈されて、添付された請求範囲の適切な範疇に入るあらゆる形式および変更について請求される。
【図１】
2014089744.tif 000005
【図２】
2014089744.tif 000006
【図３】
2014089744.tif 000007
【図４】
2014089744.tif 000008
【図５】
2014089744.tif 000009
【図６】
2014089744.tif 000010
【手続補正書】
【提出日】平成26年1月10日(2014.1.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータ実行可能な命令を有するコンピュータ読み取り可能な記録媒体であって、前記コンピュータ実行可能な命令は、コンピュータにより実行されると前記コンピュータにコマンドの遠隔実行の方法を実行させ、該方法が、
遠隔コマンドを含むコマンドライン命令を受け取る手順であって、前記遠隔コマンドは、遠隔システム上で実行されるタスクを特定する、手順と、
少なくとも２つの遠隔システムでセッションを起動する手順と、
コマンドライン環境変数に対して各セッションを割り当てる手順であって、前記コマンドライン環境変数は、複数のコマンドが該コマンドライン環境変数を参照することにより、前記セッションを同時に使用できるよう構成されており、前記コマンドライン環境変数を受けるコマンドライン環境は、ローカルシステムおよび前記遠隔システムにおいてコマンドを実行するように構成された、手順と、
前記遠隔コマンドを前記少なくとも２つの遠隔システムの各々において同時に実行させる手順であって、前記コマンドライン環境変数に対する前記遠隔コマンドを発行する手順を含み、前記コマンドライン環境変数は、ローカルのコマンドライン環境により維持される変数であり、プロセスまたはアプリケーションの間において情報を共有するために使用されるようさらに構成される、手順と
を含むことを特徴とするコンピュータ読み取り可能な記録媒体。 
【請求項２】
前記セッションは、前記コマンドライン命令が受け取られるシステムとの間の接続を含むことを特徴とする請求項１に記載のコンピュータ読み取り可能な記録媒体。
【請求項３】
前記セッションは、引き続く遠隔コマンドの実行に利用できる持続的セッションとして起動されることを特徴とする請求項１に記載のコンピュータ読み取り可能な記録媒体。
【請求項４】
前記方法は、
第２の遠隔コマンドを含む第２のコマンドライン命令を受け取る手順と、
前記持続的セッションを用いて前記第２の遠隔コマンドを実行させる手順と
をさらに含むことを特徴とする請求項３に記載のコンピュータ読み取り可能な記録媒体。
【請求項５】
前記遠隔システムは、前記ローカルシステムへ情報を返すよう構成された遠隔エージェントを含み、前記情報は、実行結果、メタ情報、および結果を生じた遠隔システムの情報のうちの少なくとも１つを含むことを特徴とする請求項１に記載のコンピュータ読み取り可能な記録媒体。
【請求項６】
前記遠隔コマンドを実行させる手順は、前記遠隔コマンドを、前記少なくとも２つの遠隔システムに対するコントローラに発行する手順を含むことを特徴とする請求項１に記載のコンピュータ読み取り可能な記録媒体。
【請求項７】
前記遠隔コマンドは、前記少なくとも２つの遠隔システムの各々において同時に実行されることを特徴とする請求項１に記載のコンピュータ読み取り可能な記録媒体。
【請求項８】
前記方法は、各々の遠隔コマンドの実行の結果を集約する手順をさらに含むことを特徴とする請求項１に記載のコンピュータ読み取り可能な記録媒体。
【請求項９】
前記結果は、１つの配列に集約されることを特徴とする請求項８に記載のコンピュータ読み取り可能な記録媒体。
【請求項１０】
前記結果は、どの遠隔システムが前記結果の起源であったかを特定する情報を含むことを特徴とする請求項８に記載のコンピュータ読み取り可能な記録媒体。
【請求項１１】
コマンドの遠隔実行を行うコンピュータ実行可能な方法であって、
遠隔システムを特定する第１のコマンドライン命令をローカルシステムで処理ユニットが受け取るステップと、
前記ローカルシステムと前記遠隔システムとの間でセッションを前記処理ユニットが生成させるステップであって、前記セッションは、前記遠隔システム上に常駐する遠隔プロセスへの接続を含むことと、
コマンドライン環境変数に対して前記セッションを前記処理ユニットが割り当てるステップであって、前記コマンドライン環境変数は、複数のコマンドが該コマンドライン環境変数を参照することにより、前記セッションを同時に使用できるように構成されており、前記コマンドライン環境変数を受けるコマンドライン環境は、前記ローカルシステムおよび前記遠隔システムにおいてコマンドを実行するように構成されたことと、
前記コマンドライン環境変数に対する前記遠隔コマンドを前記処理ユニットが発行して、前記遠隔プロセスにおいて前記遠隔コマンドを実行させるステップと、
前記遠隔コマンドの結果をメモリに前記処理ユニットが格納して前記結果を前記セッションに関連付けられたコマンドライン環境変数に含めるステップであって、前記コマンドライン環境変数は、ローカルのコマンドライン環境により維持される変数であり、プロセスまたはアプリケーションの間において情報を共有するために使用されるようさらに構成されることと
を含むことを特徴とする方法。
【請求項１２】
前記コマンドライン環境変数に対する第２の遠隔コマンドを前記処理ユニットが発行して、前記遠隔プロセスにおいて前記第２の遠隔コマンドを同時に実行させるステップと、
前記第２の遠隔コマンドの結果をメモリに前記処理ユニットが格納して前記結果を前記セッションに関連付けられたコマンドライン環境変数に含めるステップと
をさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記セッションを生成させるステップは、
前記コマンドライン環境変数を前記処理ユニットが生成するステップと、
前記コマンドライン環境変数を前記ローカルシステム上の他のタスクに前記処理ユニットが使用可能にするステップと
を含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
請求項１１に記載された方法を実行するためにコンピュータで実行可能な命令を有することを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項１５】
コンピュータに、
ローカルシステムと１または複数の遠隔システムとの間にセッションを生成し、維持し、各セッションは、前記ローカルシステムと前記遠隔システムとの間の複数の接続をホストすることができる、手順と、
コマンドライン環境変数に対して各セッションを割り当て、前記コマンドライン環境変数は、複数のコマンドが該コマンドライン環境変数を参照することにより、各セッションを同時に使用するよう構成され、前記コマンドライン環境変数は、ローカルのコマンドライン環境により維持される変数であり、プロセスまたはアプリケーションの間において情報を共有するために使用されるようさらに構成され、前記コマンドライン環境変数を受けるコマンドライン環境は、ローカルシステムおよび前記遠隔システムにおいてコマンドを実行するように構成され、
前記コマンドライン環境変数をメモリに格納し、
前記コマンドライン環境変数に対する遠隔コマンドを発行して、前記遠隔コマンドを前記１または複数の遠隔システムにおいて実行させる
よう構成されたセッションマネージャと、
コマンドの遠隔実行の結果を受け取るよう構成されたアグリゲータであって、前記結果は遠隔システムに各々関連付けられ、前記アグリゲータは前記結果を１つの配列に集約するようさらに構成される、アグリゲータと、
要求に応じて、各セッション中の有効な接続の数を制限するよう構成されたスロットラーと
を含むシステムを実現させるためのコンピュータ実行可能コンポーネントを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項１６】
前記配列中の前記結果の各々は、前記結果を生じた前記遠隔システムに関連付けられることを特徴とする請求項１５に記載のコンピュータ読み取り可能な記録媒体。
【請求項１７】
前記アグリゲータは、前記結果をばらばらな形で利用可能にするようにさらに構成されたことを特徴とする請求項１５に記載のコンピュータ読み取り可能な記録媒体。
【請求項１８】
前記アグリゲータは、前記セッションマネージャにより生成されたセッションに関連付けられたコマンドライン環境変数に前記結果を集約するようにさらに構成されたことを特徴とする請求項１５に記載のコンピュータ読み取り可能な記録媒体。
【請求項１９】
前記スロットラーは、性能に依存する他の機構と対話して、遠隔コマンド実行の性能に対する影響を調整するように構成されたことを特徴とする請求項１５に記載のコンピュータ読み取り可能な記録媒体。
【請求項２０】
前記性能に依存する他の機構は、ＱＯＳ機構を含むことを特徴とする請求項１９に記載のコンピュータ読み取り可能な記録媒体。
【請求項２１】
前記性能に依存する他の機構は、前記遠隔システム上のリソースへの影響を調整するように構成された遠隔システム上のエージェントを含むことを特徴とする請求項１９に記載のコンピュータ読み取り可能な記録媒体。
【請求項２２】
前記システムは、前記セッションマネージャ、前記アグリゲータおよび前記スロットラーのそれぞれの間の情報の流れを管理するように構成されたコアエンジンをさらに含むことを特徴とする請求項１５に記載のコンピュータ読み取り可能な記録媒体。
【請求項２３】
前記コアエンジンは、セッションを起動するタスクを遠隔システムの階層中の別のシステムに委任するように構成されたことを特徴とする請求項２２に記載のコンピュータ読み取り可能な記録媒体。
【請求項２４】
前記遠隔システムは、前記ローカルシステムへ情報を返すよう構成された遠隔エージェントを含み、前記情報は、実行結果、メタ情報、および結果を生じた遠隔システムの情報のうちの少なくとも１つを含むことを特徴とする請求項１５に記載のコンピュータ読み取り可能な記録媒体。
【外国語明細書】
2014089744000001.pdf