因此,我一直在努力使用PSWindowsUpdate模块进行有效的设置。我要执行的操作的快速摘要是,列出了要修补的服务器列表,并通过我的installer命令运行它,然后触发Task Scheduler任务运行PSWindowsUpdate install命令。安装完成后,将向我发送一封电子邮件通知,以便我知道何时可以重新启动,这是不起作用的部分。
现在,当我完成此过程并且有一些小更新(如“定义”更新)时,它的效果很好。一切都会运行并安装,我也收到了电子邮件。当我进行大型的累积更新时,会发生问题,该任务将启动并安装更新,但是它从未将输出发送到日志文件,也从未发送过电子邮件,因此它挂在该过程中的某个位置。我希望找出原因,为什么要挂起来,或者我能做些什么来监视幕后发生的事情。
以下是我正在使用的步骤和脚本:
首先,我运行此功能以开始工作。它接受“ @c:\ list.txt”或“ \ SERVER”形式的列表:
function Install-PSWindowsUpdate {
[CmdletBinding()]
param (
[string]$ComputerName
)
PsExec.exe $ComputerName -s powershell.exe -c Start-ScheduledTask -taskname WindowsUpdateInstall
}
然后,这启动了运行包含以下内容的简单.bat文件的计划任务:
powershell "& ""C:\pswindowsupdate-install.ps1"""
运行以下PS脚本:
Start-Transcript -path "c:\script.log" -append
Get-WUInstall -AcceptAll -Install -Verbose | Format-Table -AutoSize | Out-String -Width 4096 | Out-File
c:\PSWinodwsupdate.log -Force
start-sleep -seconds 10
$body = Get-Content -Path C:\PSWinodwsupdate.log -Raw
Send-MailMessage -To <email address> -from <email address> -Subject "Updates Complete for $Env:Computername" -Body $body -SmtpServer <server>
Stop-Transcript
我首先尝试直接在Task Scheduler中运行PS脚本,但是根据我的经验和在线阅读的内容,Windows很烂地从TS中运行PS脚本。所有这一切中最令人沮丧的部分是,有时它可以与较小的更新一起使用,或者像上个月一样,我通过卸载并运行该过程对单个服务器进行了广泛的测试,而该过程实际上是可行的。我以为.bat文件会有所作为,但是这个月我们又回来了,第一次运行没有任何效果。
我在想我的PS脚本可能需要某种等待过程或更多逻辑,但是我的脚本编写能力有限。我希望外面有人可以帮助我朝正确的方向前进。
谢谢! 史蒂夫