none
Powershellでリモートサーバに対する処理をバッチ実行 RRS feed

  • 質問

  • PowerShellのスクリプトをローカルサーバでバッチ実行し、その中でリモートサーバに対する処理を実行したいです。

    コマンドがリモートに対する処理に対応していれば問題ないのですが、例えば、

     ・リモートサーバを指定できないコマンドの実行(リモートサーバ側のバッチコマンドを実行)

     ・リモートサーバ上のアプリケーションバッチやスクリプトの実行

    を実現する場合、対話でセッションを接続すればできると思うのですが

    それをバッチで実行することはできるのでしょうか?(パスワードの入力も含めて)

    (リモート側を含めたジョブ運用的なイメージです。

      Aサーバでバッチ起動。終了したら、Bサーバでバッチを実行。Bでも終了したら、Aでさらにバッチを実行。みたいな。)

    あるいは、そのような用途は想定されていないものなのでしょうか?

     

     

    2012年8月12日 11:43

回答

  • こんばんは、

    PowerShellではそのような用途の為にリモーティングという仕組みが用意されています。

    とりあえず、ヘルプで「about_Remote」あたりを参考にすると良いと思います。

    イメージ的には、

    Enabel-PSRemotingでリモート処理を許可する環境を作っておき、Invoke-Commandでリモートにコマンド(スクリプト)を投げるといったイメージかと思います。

    何度も投げる時はEnter-PSSessionなどでセッションを張ることもできます。

    • 回答の候補に設定 星 睦美 2012年8月15日 2:31
    • 回答としてマーク 星 睦美 2012年8月29日 4:52
    2012年8月12日 13:11
  •  minminnana207さんのご回答に補足という形になりますが、パスワードの指定も毎回ユーザーの入力を受け付けるのではなく、あらかじめスクリプトファイルに埋め込んでおき、接続時にはそれを利用するようにすることが可能です。

    具体的な方法は以前、ブログに書きました。

    http://winscript.jp/powershell/188

    この記事での$sessionにはリモートセッションが格納されているので、あとは

    Invoke-Command -session $session -script {リモートで実行する処理}

    という風にすれば、バッチ的にリモート処理が実行可能になると思います。

    • 回答としてマーク 星 睦美 2012年8月29日 4:52
    2012年8月22日 11:58
    モデレータ

すべての返信

  • こんばんは、

    PowerShellではそのような用途の為にリモーティングという仕組みが用意されています。

    とりあえず、ヘルプで「about_Remote」あたりを参考にすると良いと思います。

    イメージ的には、

    Enabel-PSRemotingでリモート処理を許可する環境を作っておき、Invoke-Commandでリモートにコマンド(スクリプト)を投げるといったイメージかと思います。

    何度も投げる時はEnter-PSSessionなどでセッションを張ることもできます。

    • 回答の候補に設定 星 睦美 2012年8月15日 2:31
    • 回答としてマーク 星 睦美 2012年8月29日 4:52
    2012年8月12日 13:11
  •  minminnana207さんのご回答に補足という形になりますが、パスワードの指定も毎回ユーザーの入力を受け付けるのではなく、あらかじめスクリプトファイルに埋め込んでおき、接続時にはそれを利用するようにすることが可能です。

    具体的な方法は以前、ブログに書きました。

    http://winscript.jp/powershell/188

    この記事での$sessionにはリモートセッションが格納されているので、あとは

    Invoke-Command -session $session -script {リモートで実行する処理}

    という風にすれば、バッチ的にリモート処理が実行可能になると思います。

    • 回答としてマーク 星 睦美 2012年8月29日 4:52
    2012年8月22日 11:58
    モデレータ