用于更新多台远程计算机上的文件和/或应用程序的方法或应用程序?

用于更新多台远程计算机上的文件和/或应用程序的方法或应用程序?

我有几台远程运行的 Windows 10 和 Windows 7 计算机。有时,某些文件或可执行文件需要更新。这将涉及以下内容。

  1. 关闭正在运行的程序。
  2. 删除当前的可执行文件
  3. 复制新的可执行文件
  4. 根据需要替换(删除和复制)任何文件
  5. 重新启动程序

我想知道是否存在某种应用程序可以让我在单个系统(单独更新)或所有系统(批量更新)中控制这一点。

答案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 /?

相关内容