我有几台远程运行的 Windows 10 和 Windows 7 计算机。有时,某些文件或可执行文件需要更新。这将涉及以下内容。
- 关闭正在运行的程序。
- 删除当前的可执行文件
- 复制新的可执行文件
- 根据需要替换(删除和复制)任何文件
- 重新启动程序
我想知道是否存在某种应用程序可以让我在单个系统(单独更新)或所有系统(批量更新)中控制这一点。
答案1
首先,具体的软件建议超出了超级用户。 尝试https://softwarerecs.stackexchange.com/, 反而。
但是,如果有一个包含新文件的中央存储库,您可以编写一个简单的批处理脚本来执行此操作。
- 使用任务终止停止正在运行的应用程序。
- 使用 copy* 或更好的方法,机器人复制,用新文件覆盖旧文件(机器人复制让您指定日期,以防止覆盖更新文件与旧文件),指定完整的 UNC 路径。替代方法是使用FTP或者安全FTP传输文件。在将新文件复制到旧文件上时,您实际上已经删除了旧文件。
- 使用开始命令重新启动应用程序。
当然,也存在一些复杂情况:
- 每个应用程序都在谁的凭据下运行?重新启动应用程序时,您的脚本应在相同的凭据下运行 - 如果您始终使用 System,则本地用户将难以与应用程序交互。对于所有其他目的,脚本可以作为 System 运行。
- 应否更换申请总是重新启动?如果你想确定它是否在开始时运行,请检查任务终止,并以此来判断是否重新启动。
- 使用SFTP需要在服务器和客户端上安装其他应用程序。
- 这将是非常有助于记录脚本的工作日志。
答案2
Windows 内置有 WMI(Windows 管理规范)和 WinRM(Windows 远程管理),它们的作用相同,但网络管道不同。此外,Windows 还可以将文件复制到另一台计算机,就像您在一台计算机上复制文件一样。
该批处理文件将为您提供网络上已打开的计算机的文本文件。
for /f "skip=3 delims=\" %%A in ('net view ^| findstr /v /C:"The command completed successfully"') do Echo %%A >> c:\computerlist.txt
终止网络上某个进程的所有实例
wmic /node:@c:\computerlist.txt process where "name='notepad.exe'" call terminate
复制文件。C$ 是隐藏的管理共享,只有管理员可以使用。
copy c:\somefolder\file.exe \\127.0.0.1\C$\Somefolder\file.exe
看看for /?
如何执行上述循环计算机列表.txt。将以下行放入批处理文件中。删除 echo 部分以实际执行某些操作。
for /f "usebackq delims=" %%A in ("C:\Folder\computerlist.txt.txt") do echo copy "c:\folder\file.exe" "\\%%A\C$\folder\file.exe
删除和复制是没有意义的。
在远程计算机上启动不可见的进程(如果在本地计算机上启动,则可见)。这里我们指定一台计算机,而不是计算机的文本文件。
wmic /node:127.0.0.1 process call create "c:\\windows\\notepad.exe"
如需帮助,请输入for /?
、wmic /?
、wmic process get /?
、wmic process call /?
。还有wmic /format /?
和wmic /node /?
。