あちこち検索して、さまざまなコマンドのバリエーションを試してみましたが、まだ解決していません。
私の目標は、リモート マシンに既に存在する exe を実行し、コマンド ライン引数を渡すことです。invoke-command を試しましたが、構文で引数を認識できないようです。
試した方法:
- Win32_Process.Create()
- 呼び出しコマンド
- プロセスの開始
- [診断プロセス]::開始
- WmiMethod を呼び出す
私のテストでは、次のコマンドで最も近い結果が得られます。
$command = "program.exe -r param"
Invoke-Command -ComputerName $server -ScriptBlock {$command}
コマンドはエラーや戻りコードなしで完了しましたが、リモート マシンでは引数付きで実行されませんでした。一重引用符/二重引用符を試して変化があるかどうかを確認しましたが、変化はありませんでした。
ベストアンサー1
次のパラメータを使用してみましたか-ArgumentList
:
invoke-command -ComputerName studio -ScriptBlock { param ( $myarg ) ping.exe $myarg } -ArgumentList localhost
http://technet.microsoft.com/ja-jp/library/dd347578.aspx より
パス内に存在せず、フォルダー パスにスペースがあるプログラムを呼び出す例:
invoke-command -ComputerName Computer1 -ScriptBlock { param ($myarg) & 'C:\Program Files\program.exe' -something $myarg } -ArgumentList "myArgValue"
引数の値が静的な場合は、次のようにスクリプト ブロックで値を指定できます。
invoke-command -ComputerName Computer1 -ScriptBlock { & 'C:\Program Files\program.exe' -something "myArgValue" }