質問: 「get-process」コマンドを実行をネットワーク上の各サーバで実行し、その情報をクライアントPCで収集したいと思っています。 パワーシェル初心者でやり方がわからなくてどなたか教えて頂けないでしょうか。スクリプトは各サーバに配置して、クライアント側に出力する方法が良いのか、収集したいクライアントから、各サーバに向けて「get-process」をリモートコマンドで実行する方法が良いのか、一般的にどちらなのでしょうか。 パワーシェルを作ったことがなくて、どうやって、作れば良いのか分からないのです。 求めてるのはその時点でのget-processの情報を収集したいのです。各サーバで実行し、一カ所で各サーバの情報を収集したいと思っています。
回答: クライアントパソコン上のフォルダに各サーバーのGet-Processの情報が 記載されたテキストファイルが転送される仕組みのイメージです。 まず、サーバー上に適当なフォルダを作成します。 (このフォルダにスクリプトファイルと結果が格納されます) 今回はC:\hoge\とします。 このフォルダの中に下記2つのファイルを作成します。 ○ run.batpowershell -ExecutionPolicy RemoteSigned -File C:\hoge\hogehoge.ps1 ○ hogehoge.ps1Get-Process > C:¥hoge\process_result.txt ※ 仕切り線のハイフンは不要です。 run.batを実行すると、C:¥hoge\の中にprocess_result.txtが出力され、 その中にGet-Processの情報が出力されます。 ● サーバーで自動実行するには タスクスケジューラーでrun.batを実行します。 トリガーはお好きなタイミングに設定してください。 ● 結果ファイルをクライアントPCに集約するには 1. クライアントPCの任意のフォルダを共有します 2. hogehoge.ps1の記述を変更します Get-Process > \\[IPアドレスまたはPC名]\共有フォルダ名\process_sv1_result.txt 例) Get-Process > \\client1\process\process_sv1_result.txt ※ sv1の部分はサーバー名でもなんでもいいので、どのサーバーの物か わかるようにサーバーごとに書き換えてください。 3. タスクスケジューラーで実行します これで、定時の各サーバーのGet-Processの情報が クライアントPCの共有フォルダに格納するといったことができます。 格納するには、実行時にクライアントパソコンが 起動している必要があるので、サーバーに保管した方がいいかもしれません。 共有フォルダの許可範囲などは適宜調整してください。 出力先のテキストファイルは上書きされます。 次々と追記したい場合はhoge.ps1を下記のように 変更するといいと思います。 Date >> \\client1\process\process_sv1_result.txt Get-Process >> \\client1\process\process_sv1_result.txt 各コマンド等の詳しい解説は割愛しましたが、必要があれば書きますので、 補足でお知らせください。