用PsExec远程安装Windows更新

我正在处理的问题 :我现在负责公司的所有Windows机器。 所有的工作站都运行Windows 7,我没有一个域,networking上没有运行Windows Server。 为了pipe理它们,我使用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设备,专门指示他们开始安装挂起的更新。

许多服务器故障和博客主题推荐使用第三方解决scheme按需安装Windows更新,但所有这些推荐的第三方解决scheme只能用于购买它们,而我不想。

到目前为止解决问题的步骤 :所以,就我而言,似乎我卡住了:没有Windows服务器,没有本地方式专门请工作站安装更新和所有我听说的第三方解决scheme不是免费的。

我对吗 ? 你知道一种方法来完成我所面临的问题吗?

除了Michael Bailey的VBS方法之外,我修改了一个我在网上find的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。 如果您只想列出每台计算机的更新作为审计,则可以在search部分之后删除所有内容。

当我正在寻找对我们的更新问题的答案时,我也仔细观察了这个: http : //blogs.technet.com/b/heyscriptingguy/archive/2011/08/13/use-powershell-to-audit-和安装窗口,patches.aspx

它看起来像一个可能适合你的组织的工具。

要使用psexec推送更新,请查看以下文章: http : //techthoughts.info/remotely-install-windows-updates/

这大概描述了如何完成你想完成的任务 – 基本上你通过psexec使用第三方命令行工具wuinstall来通过shell脚本把更新推送到远程机器上

在SevenForums的好人有一个脚本,我没有机会在VBStesting这样做。 http://www.sevenforums.com/windows-updates-activation/235764-run-window-update-command-line.html

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

另外,您可以操纵处理自动更新的registry项。 但这不是一个完美的答案。