If you’ve been working with Exchange 2010 Service Pack 1 you will know that there are several pre-requisites to download and install. Once downloaded you end up with a bunch of *.msu (Windows Update) files. If, like me, you have to install them on several servers and don’t like the idea of having to double-click to install them via the UI you look for ways to simplify the process. Powershell struck me as the obvious solution, but I couldn’t find any cmdlets that manage Windows Updates. There are some examples, such as this from James O’Neill, but which are somewhat too elaborate for what I wanted to do. In the end I wrote a small script (below) that calls wusa.exe to install the updates. Not the prettiest method. Hopefully Microsoft will provide set of cmdlets to manage Windows Updates in the next version of Windows.
######################################################### # # Name: InstallWindowsUpdates.ps1 # Author: Tony Murray # Version: 1.0 # Date: 16/11/2010 # Comment: PowerShell script to install # Windows Update files # ######################################################### # Specify the location of the *.msu files $updatedir = "C:\E2010 SP1 Prereqs\" ### $files = Get-ChildItem $updatedir -Recurse $msus = $files | ? {$_.extension -eq ".msu"} foreach ($msu in $msus) { write-host "Installing update $msu ..." $fullname = $msu.fullname # Need to wrap in quotes as folder path may contain spaces $fullname = "`"" + $fullname + "`"" # Specify the command line parameters for wusa.exe $parameters = $fullname + " /quiet /norestart" # Start wusa.exe and pass in the parameters $install = [System.Diagnostics.Process]::Start( "wusa",$parameters ) $install.WaitForExit() write-host "Finished installing $msu" } write-host "Restarting Computer" #Restart-Computer
If someone has a better method for doing this, please let me know.
Thanks u so much for the help.
With WuInstall (http://www.wuinstall.com) you can manage windows updates via command line
Thanks, was handy
Thanks, for this scripts
Hello!
Anybody knows how can I include in the Script the IE11 installation, and wait the installion patches until IE11 is installed on the computer.
I’m triying with parameters below, but installation of IE and hotfixes start at the same time.
COMMAND
Start-Process C:\E2010 SP1 Prereqs\IE11-Windows6.1-x86-en-us.exe” -ArgumentList “/closeprograms”, “/passive”, “update-no”, /norestart”
PARAMETERS
– Out-Null,
– Start-Process -NoNewWindow -Wait
– $proc = Start-Process -NoWindow $proc.WaitForExit()
Thanks!
Wyatt75, if you place -Wait at the end of the line you should be fine.
Start-Process C:\E2010 SP1 Prereqs\IE11-Windows6.1-x86-en-us.exe” -ArgumentList “/closeprograms”, “/passive”, “update-no”, /norestart” -Wait