トップ回答者
Powershellでリモートサーバに対する処理をバッチ実行

質問
-
PowerShellのスクリプトをローカルサーバでバッチ実行し、その中でリモートサーバに対する処理を実行したいです。
コマンドがリモートに対する処理に対応していれば問題ないのですが、例えば、
・リモートサーバを指定できないコマンドの実行(リモートサーバ側のバッチコマンドを実行)
・リモートサーバ上のアプリケーションバッチやスクリプトの実行
を実現する場合、対話でセッションを接続すればできると思うのですが
それをバッチで実行することはできるのでしょうか?(パスワードの入力も含めて)
(リモート側を含めたジョブ運用的なイメージです。
Aサーバでバッチ起動。終了したら、Bサーバでバッチを実行。Bでも終了したら、Aでさらにバッチを実行。みたいな。)
あるいは、そのような用途は想定されていないものなのでしょうか?
回答
-
こんばんは、
PowerShellではそのような用途の為にリモーティングという仕組みが用意されています。
とりあえず、ヘルプで「about_Remote」あたりを参考にすると良いと思います。
イメージ的には、
Enabel-PSRemotingでリモート処理を許可する環境を作っておき、Invoke-Commandでリモートにコマンド(スクリプト)を投げるといったイメージかと思います。
何度も投げる時はEnter-PSSessionなどでセッションを張ることもできます。
-
minminnana207さんのご回答に補足という形になりますが、パスワードの指定も毎回ユーザーの入力を受け付けるのではなく、あらかじめスクリプトファイルに埋め込んでおき、接続時にはそれを利用するようにすることが可能です。
具体的な方法は以前、ブログに書きました。
http://winscript.jp/powershell/188
この記事での$sessionにはリモートセッションが格納されているので、あとは
Invoke-Command -session $session -script {リモートで実行する処理}
という風にすれば、バッチ的にリモート処理が実行可能になると思います。
- 回答としてマーク 星 睦美 2012年8月29日 4:52
すべての返信
-
こんばんは、
PowerShellではそのような用途の為にリモーティングという仕組みが用意されています。
とりあえず、ヘルプで「about_Remote」あたりを参考にすると良いと思います。
イメージ的には、
Enabel-PSRemotingでリモート処理を許可する環境を作っておき、Invoke-Commandでリモートにコマンド(スクリプト)を投げるといったイメージかと思います。
何度も投げる時はEnter-PSSessionなどでセッションを張ることもできます。
-
minminnana207さんのご回答に補足という形になりますが、パスワードの指定も毎回ユーザーの入力を受け付けるのではなく、あらかじめスクリプトファイルに埋め込んでおき、接続時にはそれを利用するようにすることが可能です。
具体的な方法は以前、ブログに書きました。
http://winscript.jp/powershell/188
この記事での$sessionにはリモートセッションが格納されているので、あとは
Invoke-Command -session $session -script {リモートで実行する処理}
という風にすれば、バッチ的にリモート処理が実行可能になると思います。
- 回答としてマーク 星 睦美 2012年8月29日 4:52