前提・実現したいこと
・構成
管理用サーバ、サーバ1、サーバ2
・実現したいこと
管理用サーバからサーバ1に格納しているログ取得用exeファイルを実行し、現状利用と同様の結果を出力したいです。
・前提
サーバは全てWindowsServer2019
接続先(サーバ1)のexeファイル格納先は「c:\application\app.exe」
引数は複数指定 「/a」「upd=No」「dir="c:\log"」「node=」
現状は管理サーバからサーバ1へRDPでアクセスし、以下のbatファイルを使用しログを取得している
bat
1@echo off 2call C:\application\app.exe /a upd=No dir="c:\log" node=
実行結果として、サーバ1、サーバ2にc:\logフォルダが作成され直下にログが出力されます。
発生している問題・エラーメッセージ
上記の手順を管理サーバからリモートで実行できないかと思い以下を実行しました。
以下のサイトのExample9を参考に実行
docs.microsoft.com
ps1
1Invoke-Command -ComputerName <接続先サーバIP> -Credential admin -ScriptBlock{param($a,$b,$c,$d) c:\application\app.exe $a $b $c $d} -ArgumentList "/a","upd=No",'dir="c:\log"',"node="
実行結果を確認したところ、サーバ1には現状と同様のログが出力されていたのですが、サーバ2にはフォルダすら作成されていませんでした。
確認したいこと
サーバ1にフォルダが作成されているので引数は渡せていると思っています。
スクリプトを作成するにあたって見落としている箇所などございますでしょうか。
補足情報(FW/ツールのバージョンなど)
サーバー2には、app.exeは配置してあるのでしょうか?
投稿ありがとうございます。
サーバ2には配置しておりません。
サーバ1のapp.exeに引数を渡して実行するとサーバ1、サーバ2の「c:\log」直下にログが吐き出されます。
app.exeをサーバー2にも配置して試してみてください。
Invoke-Commandは、コマンドを転送するだけで、コマンド内で使用されるアプリやファイルは転送されません。また、コマンド送信元に配置してあるアプリを配信先の環境で実行するような機能もありません。
これはとても初歩的で恥ずかしいミスで、あなたがInvoke-Commandについて何も調べていないことを裏付けるような出来事です。
人に聞くのは悪いことではありませんが、回答者も「あなたの為だけに」ここを利用しているわけではないことに留意してください。あまりにも恥知らずで丸投げな質問は、回答者の心象が悪くなるばかりで良いことは一つもなく、また、こうしたコミュニティの存続を危うくさせることだと知っておいてください。
そして、何よりも「自分なりに調べた結果を持って、事実と考察と共に質問する」癖をつけるべきです。
質問内容も良くなりますし、何より後悔が少なくなります。
ご指摘ありがとうございます。
自分なりに調べて投稿したつもりでしたので認識が甘いと実感致しました。
もう少し検証してみたいと思います。
補足ですが、サーバ2へexeファイルを配置して試してみましたが結果は変わらずでした。
あなたの回答
tips
プレビュー