web-dev-qa-db-ja.com

ネットワーク上でリモートでプロセスを強制終了/実行する

約15台のマシンからなるかなり小さなウィンドウ(XP/7)ベースのネットワークがあります。定期的に更新される、社内で使用するいくつかのソフトウェアアプリケーションを開発しました。ソフトウェアを更新するには、ユーザーはアプリケーションを閉じて再度開く必要があります。次に、更新を行うように求められます。

だからここに私の質問があります...私はシステム管理者権限を持っています、私のマシンからネットワーク上の各マシンに対してこれを行うことができる方法はありますか?基本的に、デスクトップから実行できるネットワーク上のすべてのマシンに対して、スクリプトで「SomeProcess.exe」を強制終了してから「SomeProcess.exe」を起動する必要があります。

2
dfarney

一度に1台のマシンを実行する場合は、古き良き方法でコマンドを実行できます。「taskkill/S MACHINENAMEHERE/U yourusername/F /IMprocess.exe」でプロンプトを表示します。

本当に効率的になりたい場合は、PowerShellv2.0を使用しましょう

ADを使用している場合は、QUEST AD CMDletのインストールを検索してから、以下を確認します。 Quest Wiki:GET-QADCOMPUTER

それ以外の場合、ADを使用していない場合は、すべてのコンピューター名をCSVに入れ、次のPowerShellのようなものを使用し、前述のSamのようにPSKILLとPSEXECを使用します。

$username = "YourUserName"

$password = "YourPassword"

$process = "YourProcess.exe"

$pathtoCSV = "pathto.csvfile"

Import-CSV $pathtoCSV | ForEach-Object{

  PSKILL $._columnfromCSVComputername -u $username -p $password $process

  Start-Sleep -s 10 #wait for process to die

  PSEXEC $._columnfromCSVComputername 'C:\PATH\'$process '-i'

}

もちろん、上記にいくつかの変更を加える必要があり、構文を少し調整する可能性があります...しかし、少なくとも開始する必要があります

1
LeeBerg

Sysinternalツールを使用して問題がないと仮定すると、 PSKill を使用してプロセスをリモートで強制終了できます(プロセス名を知っていると仮定)

pskill \\ computer -u username -p password processname

次に、 PSExec を使用してアプリケーションを再起動できます。

psexec \\ computer c:\ application.exe -i

3
Sam Cogan