Назад | Перейти на главную страницу

Убивать / запускать процессы удаленно в сети

У нас есть довольно небольшая сеть на базе Windows (XP / 7), состоящая примерно из 15 машин. Я разработал несколько программных приложений, которые мы используем для внутренних целей и которые регулярно обновляются. Чтобы обновить программное обеспечение, пользователь должен закрыть и снова открыть приложение. Затем им будет предложено выполнить обновление.

Итак, вот мой вопрос ... У меня есть права системного администратора, могу ли я сделать это для каждой машины в сети с моей машины? По сути, я хочу, чтобы сценарий убивал SomeProcess.exe, а затем запускал SomeProcess.exe для каждой машины в нашей сети, которую я могу запустить со своего рабочего стола.

Предполагая, что вы согласны с использованием инструментов sysinternal, вы можете использовать PSKill удаленно убить процесс (при условии, что вы знаете имя процесса)

pskill \\ компьютер -u имя пользователя -p пароль имя процесса

Затем вы можете использовать PSExec чтобы снова запустить приложение.

psexec \\ компьютер c: \ application.exe -i

Если вы хотите работать с одной машиной за раз, вы можете сделать это в старой доброй командной строке с помощью "taskkill / S MACHINENAMEHERE / U yourusername / F / IM process.exe"

Если вы хотите быть действительно эффективным, давайте воспользуемся powershell v2.0

Если вы используете AD, я бы поискал установку CMDlets QUEST AD, а затем взглянул бы на: Quest Wiki: на GET-QADCOMPUTER

В противном случае, если вы не используете AD, я бы поместил все имена компьютеров в CSV и использовал бы что-то вроде следующего фрагмента powershell и используя 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'

}

Конечно, вам придется внести некоторые изменения в вышеизложенное и, вероятно, немного изменить синтаксис ... но это должно, по крайней мере, помочь вам начать