我们的网络规模很小,基于 Windows (XP/7),大约有 15 台机器。我开发了一些我们内部使用的软件应用程序,这些应用程序会定期更新。要更新软件,用户必须关闭并重新打开应用程序。然后系统会提示他们进行更新。
所以我的问题是...我有系统管理员权限,有什么办法可以从我的机器上对网络上的每台机器执行此操作吗?本质上,我想要一个脚本来终止“SomeProcess.exe”,然后为网络上的每台机器启动“SomeProcess.exe”,这样我就可以从我的桌面执行它了。
答案1
如果你想一次处理一台机器,你可以在传统命令提示符下使用“taskkill /S MACHINENAMEHERE /U yourusername /F /IM process.exe”执行此操作
如果想真正高效,就用powershell v2.0吧
如果您正在使用 AD,我会查找安装 QUEST AD CMDlets,然后查看: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'
}
当然,你必须对上面的内容做一些修改,并可能稍微调整一下语法……但它至少应该能让你开始