在networking上远程杀死/运行进程

我们有相当小的窗口(XP / 7)基于约15台机器的networking。 我开发了一些内部使用的定期更新的软件应用程序。 要更新软件,用户必须closures并重新打开应用程序。 然后提示他们进行更新。

所以这里是我的问题…我有系统pipe理员权限,有没有什么办法可以从我的机器networking上的每台机器? 从本质上讲,我想要一个脚本杀死“SomeProcess.exe”,然后启动我的networking上的每台机器的“SomeProcess.exe”,我可以从我的桌面执行。

如果你想一次做一台机器,你可以用“taskkill / S MACHINENAMEHERE / U yourusername / F / IM process.exe”

如果你想要真正高效的话,让我们使用powershell v2.0

如果您使用AD,我会查找安装QUEST AD CMDlets,然后查看: 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' } 

当然,你将不得不对上面的内容做一些修改,并且可能会稍微调整语法…但是至less应该让你开始

假设您使用sysinternal工具确定,您可以使用PSKill远程终止进程(假设您知道进程名称)

pskill \\计算机-u用户名-p密码进程名称

然后您可以使用PSExec再次启动应用程序。

psexec \\计算机c:\ application.exe -i