使用 PsExec 远程安装 Windows 更新

使用 PsExec 远程安装 Windows 更新

我正在解决的问题:我现在负责管理一家公司的所有 Windows 机器。所有工作站都运行 Windows 7,我没有域,网络上也没有运行 Windows Server。为了管理它们,我使用 PsExec 在每个工作站上远程执行命令,如下所示:

FOR /F "tokens=*" %%a IN (E:\list-of-workstations.txt) DO CALL :theCommand %%a
PAUSE

:theCommand
FOR /F "tokens=1,2,3,4" %%a IN ("%*") DO (
        psexec \\%%a -s -u %%b -p %%c -c E:\script-to-execute-remotely.bat
)
GOTO:EOF

我现在想在每个工作站上触发 Windows 更新。

我做过的研究显然,您无法向 Windows 设备发送任何设置命令来专门指示它们开始安装待处理的更新。

许多 serverfault 和博客主题建议使用第三方解决方案来按需安装 Windows 更新,但所有这些推荐的第三方解决方案只有购买后才能使用,而我不想这样做。

迄今为止为解决问题所采取的措施:所以,就我而言,我似乎陷入了困境:没有 Windows 服务器,就没有本机方式专门要求工作站安装更新,而且我听说过的所有第三方解决方案都不是免费的。

我说得对吗?你知道解决我面临的问题的方法吗?

答案1

除了 Michael Bailey 的 VBS 方法之外,我还修改了在线找到的 powershell 脚本(来自 technet 的某个地方,但我找不到确切的链接):

#Define update criteria.
$Criteria = "IsInstalled=0 and Type='Software'"

#Search for relevant updates.
$Searcher = New-Object -ComObject Microsoft.Update.Searcher
$SearchResult = $Searcher.Search($Criteria).Updates

If($SearchResult.Count -eq 0){
Write-Host "No Updates Available"
Exit
}

Write-Host "Updates Found: $($SearchResult.Count)`r`n"
$SearchResult | ForEach-Object{Write-Host "$($_.Title) `r`n"}

#Download updates.
$Session = New-Object -ComObject Microsoft.Update.Session
$Downloader = $Session.CreateUpdateDownloader()
$Downloader.Updates = $SearchResult
Write-Host "Download Results:"
$Downloader.Download()

#Install updates.
$Installer = New-Object -ComObject Microsoft.Update.Installer
$Installer.Updates = $SearchResult
$Result = $Installer.Install()
Write-Host "Install Result: $($Result.HResult) `r`n"
Write-Host "Reboot Required: $($Result.RebootRequired) `r`n"

#Reboot if required by updates.
#If ($Result.rebootRequired) { shutdown.exe /t 0 /r }

我使用 PDQ 运行它,但也曾与 PSExec 一起使用过。如果您只想列出每台机器的更新作为审核,则可以删除搜索部分后的所有内容。

当我寻找更新问题的答案时,我也仔细研究了这一点: http://blogs.technet.com/b/heyscriptingguy/archive/2011/08/13/use-powershell-to-audit-and-install-windows-patches.aspx

它看起来像是一种可能很适合您的组织的工具。

答案2

有关使用 psexec 推送更新的信息,请查看此文章:http://techthoughts.info/remotely-install-windows-updates/

这可能非常准确地描述了你想要完成的事情 - 基本上你使用第三方命令行工具 wuinstall 通过 psexec 通过 shell 脚本将更新推送到远程机器

答案3

SevenForums 上的好心人有一个脚本,我没有机会在 VBS 中测试它来执行此操作。http://www.sevenforums.com/windows-updates-activation/235764-run-window-update-command-line.html

可以通过命令行编写和触发VBS脚本。

此外,您还可以操纵处理自动更新的注册表项。但这不是一个完美的答案。

相关内容