none
RunAsコマンドを含んだタスクの動作 RRS feed

  • 質問

  • お世話になります。

    Windows Server 2012上で、RunAsコマンドを含んだタスクが正常に動作できない現象が発生しております。
    つきましては、動作できるようにするための対応策がございましたら、ご回答頂ければ幸いです。

    【実現したいこと】
    Windows Server 2012サーバー「SERVER01」上で、ローカルユーザー「SERVER01\Job」の権限で、フェールオーバークラスタ役割「MSDTC」を一旦停止するタスクを設定したいと考えております。

    【現在の環境】
    フェールオーバークラスタの操作は、ドメインユーザー「DOMAIN\Cluster」を使用しております。
    ローカルユーザー「SERVER01\Job」と、ドメインユーザー「DOMAIN\Cluster」はいずれも、サーバー「SERVER01」のAdministratorsグループに属しております。

    【設定した内容】
    1,フェールオーバークラスタ役割を停止させるため、以下のPowerShellスクリプトを作成
      ・ファイル名:C:\work\stop_clustergroup.ps1
        Stop-ClusterGroup "MSDTC"

    2,タスクスケジューラから実行するため、以下のバッチファイルを作成
      ・ファイル名:C:\work\stop_clustergroup.bat
        runas /savecred /user:DOMAIN\Cluster "powershell.exe -NoProfile -ExecutionPolicy Unrestricted C:\work\stop_clustergroup.ps1"
     
    3,サーバー「SERVER01」のタスクスケジューラに、以下の設定でタスクを登録
      ・名前:TEST
      ・タスクの実行時に使うユーザーアカウント:SERVER01\Job
      ・ユーザーがログインしているかどうかにかかわらず実行する:チェックON
      ・最上位の特権で実行する:チェックあり
      ・操作:プログラムの開始
      ・プログラム/スクリプト:C:\work\stop_clustergroup.bat

    4,Windows資格情報を登録するため、「SERVER01\Job」アカウントでサインインして、以下のコマンドを実行
        runas /savecred /user:DOMAIN\Cluster regedit
      パスワードを尋ねられるので、「DOMAIN\Cluster」のパスワードを入力して、レジストリエディタが起動することを確認

    【現在の状況】
    上記の設定の後に、タスクスケジューラに登録したタスク「TEST」を実行したのですが、クラスタ役割「MSDTC」は停止しませんでした。
    しかし、タスクスケジューラの設定で、「ユーザーがログインしているときのみ実行する」のチェックをONにすると、クラスタ役割「MSDTC」が停止するようになります。

    「ユーザーがログインしているかどうかにかかわらず実行する」のチェックをONの状態で、
    このタスクを動作させる方法がないかを、お伺いしたいと思います。

    以上、よろしくお願い致します。

    2016年3月22日 8:36

回答

  • チャブーンです。

    この件ですが、以下のような切り分けを行わないと、実質内部がどう動作している(ように見えているのか)がわからないでしょう。

    1. タスク実行時にスクリプト自身が実施されない(あるいはタスクそのものが実施されない)
    2. タスク実行時にスクリプトが異常終了する

    1はタスクの管理画面で、タスクの実行状況がどうなっているのか(実質はイベントログを見ているのですが)から確認できます。2については、スクリプトの正常/異常終了は同様にタスクの実行状況から確認できるものの、異常終了の場合の「どこでどのように異常終了しているか」は、スクリプト内で実行状況をロギング(テキストに書き出す)する項目を追加して、実行を行う必要があります。

    ちなみに、状況からユーザがログオンしていないことで「Windows資格情報」が呼び出せていないから、という可能性がありますが、これは仕様上どうしようもないことですので、もしこのような原因の場合、残念ながらあきらめるしかないという認識です。


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。

    • 回答の候補に設定 佐伯玲 2016年3月24日 2:01
    • 回答としてマーク 佐伯玲 2016年4月18日 8:20
    2016年3月23日 4:19
    モデレータ

すべての返信

  • チャブーンです。

    この件ですが、以下のような切り分けを行わないと、実質内部がどう動作している(ように見えているのか)がわからないでしょう。

    1. タスク実行時にスクリプト自身が実施されない(あるいはタスクそのものが実施されない)
    2. タスク実行時にスクリプトが異常終了する

    1はタスクの管理画面で、タスクの実行状況がどうなっているのか(実質はイベントログを見ているのですが)から確認できます。2については、スクリプトの正常/異常終了は同様にタスクの実行状況から確認できるものの、異常終了の場合の「どこでどのように異常終了しているか」は、スクリプト内で実行状況をロギング(テキストに書き出す)する項目を追加して、実行を行う必要があります。

    ちなみに、状況からユーザがログオンしていないことで「Windows資格情報」が呼び出せていないから、という可能性がありますが、これは仕様上どうしようもないことですので、もしこのような原因の場合、残念ながらあきらめるしかないという認識です。


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。

    • 回答の候補に設定 佐伯玲 2016年3月24日 2:01
    • 回答としてマーク 佐伯玲 2016年4月18日 8:20
    2016年3月23日 4:19
    モデレータ
  • こんにちは、cxjymg さん
    フォーラムオペレータの佐伯 玲 です。

    チャブーンさんからの返信をご確認いただきお試しいただけたことなどあればこちらのスレッドへお寄せ下さいね。
    またフォーラムでは解決に至ったりご参考になった際には「回答としてマーク」いただけますようお願い致します。


    宜しくお願い致します。

    TechNet Community Support 佐伯 玲

    2016年4月4日 8:14