none
Invoke-Commandで起動しするリモートジョブでジョブオブジェクトの制限を超過する方法はありますか? RRS feed

  • 質問

  • Invoke-Command経由でリモートジョブを起動し、さらに子プロセス/スレッドを生成すると、

    ジョブオブジェクトのデフォルトの制限値(コンテキスト数16個、メモリ160MB?)を超過した段階で

    StackOverFlowExeptionなどのエラーが発生し、子プロセス/スレッドの生成に失敗してしまいます。

    PowerShellにおいて、C++のSetInformationJobObject()のようにジョブオブジェクトの制限を変更する方法はありますか?

    2011年3月9日 7:15

回答

  • suzukyu さん、こんにちは
    フォーラム オペレーターの星 睦美です。

    私のほうでもPowerShell のcmdlet を知らべてみたのですが質問にある
    ジョブオブジェクトの制限を変更するようなcmdlet はないのかなと思っています。

    PowerShell で実現する方法に関して、詳しい方からの返信をお待ちしています。


    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美
    • 回答としてマーク 星 睦美 2011年3月25日 1:40
    2011年3月14日 7:48
  • Shellの責務から考えると、リモートのリソースを消費させる方向への実装は行われないように存じます。

    C++の知識が豊富とお見受けしますため、リモート側に呼び出すためのプロセスを用意し、そちらで細かな制御をおこなうのがよいと考えます。
    #一層のこと、リモート側のコマンドレットを実装してしまうのも手かもしれませんが、シェルへの組み込みは保守が面倒になるので、特定アプリの範囲にとどめておいたほうがよいと考えます。

     

    • 回答としてマーク 星 睦美 2011年3月25日 1:40
    2011年3月19日 2:03

すべての返信

  • suzukyu さん、こんにちは
    フォーラム オペレーターの星 睦美です。

    私のほうでもPowerShell のcmdlet を知らべてみたのですが質問にある
    ジョブオブジェクトの制限を変更するようなcmdlet はないのかなと思っています。

    PowerShell で実現する方法に関して、詳しい方からの返信をお待ちしています。


    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美
    • 回答としてマーク 星 睦美 2011年3月25日 1:40
    2011年3月14日 7:48
  • Shellの責務から考えると、リモートのリソースを消費させる方向への実装は行われないように存じます。

    C++の知識が豊富とお見受けしますため、リモート側に呼び出すためのプロセスを用意し、そちらで細かな制御をおこなうのがよいと考えます。
    #一層のこと、リモート側のコマンドレットを実装してしまうのも手かもしれませんが、シェルへの組み込みは保守が面倒になるので、特定アプリの範囲にとどめておいたほうがよいと考えます。

     

    • 回答としてマーク 星 睦美 2011年3月25日 1:40
    2011年3月19日 2:03
  • 星さん、Chukiさん、回答ありがとうございました。

    サーバー/クライアント型のC++プログラムとして最初から設計し直した方が良さそうでしたが、

    解決策としては、サービスプログラムを作成し、リモート側でサービスとしてインストールしておき、

    PowerShellのInvoke-Commandからはサービスコマンドの呼びだしだけを行うように変更しました。

    Invoke-Commandはリモート側のコマンド実施のリターンコード取得方法も無いので、

    あまり複雑なことをするのには向いてないですね。

    いろいろと勉強になりました。

     

    2011年5月9日 10:21