PsExecの使い方
PsExecはMicrosoftが提供するリモート実行するためのアプリなのだけれど、お仕事のシステムで使っている環境があって、それがタスクスケジューラから相手のホストのPowerShellをバッチ実行するってよくわからん構成だったりする。
Winodws 2008 R2で動かそうとしているのね。
んで、テスト環境ではちゃんと動いてないようであった。
というわけで、お家のWinodws 7 Home PrerniumとWindows 8.1(64bit)で簡単なPowerShellプログラムからPsExecを使って呼び出せないか試してみたのだけれど、なかなかうまくいかなかった。
というのも”アクセスが拒否されました”となって、動かないのだ。
先に答えを言ってしまうと@ITの「リモート・コンピュータ上でプログラムを実行する(PsExec編)」にある記事のとおり、リモート実行するPC側で以下の設定を行えばうまくいく。PsExecを実行するPCでは設定は不要。
(1)”セキュリティが強化されたWinodwsファイアウォール”の”受信の規則”にある、グループが”リモート サービス管理”のものを有効にする。オイラのお家のLANは、ローカルネットワークになるので、プロファイルがプライベート、パブリックのものを有効にした。
(2)UAC(ユーザ・アカウント制御)を無効化にする。
これが不要だと思っていて、引っかかっていた。
あと、リモート実行するユーザは、管理者権限がないとダメらし。
以下のようになる。(PC名:kotatuinu-PC、ユーザ名:kotatuinu、パスワード:BowWow、実行プログラム:PowerShellでC:\temp\test.ps1)
D:\tools\PsTools>psexec \\kotatuinu-PC -u kotatuinu -p BowWow powershell "c:\temp\test.ps1" PsExec v2.0 - Execute processes remotely Copyright (C) 2001-2013 Mark Russinovich Sysinternals - www.sysinternals.com powershell exited on kotatuinu-PC with error code 0. D:\tools\PsTools>
よくわからんのだが、実行した後、エンターキーを押さないとプロセスが終わらん。
タスクスケジューラであっても同じ。コマンドプロンプトが開いてしまう・・・。
→ PsExecに-dオプションを設定すれば、実行時にコマンドプロンプトは一旦開くけどリモート実行が始まったら閉じる。プロセスは終了しているのかな?
最近のコメント