First, I used psexec from the sysinternal tools at Microsoft https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx.
I needed a way to get the update onto the machines without needing credentials to access a network share. I figured out how to use powershell to copy the file from a web server I've already setup.
I copied the update msu file to the webserver with a simpler name and renamed it as a .zip file to eliminate issues with file transfer through the web server. IIS will block the file unless you have a content type configured for the extension msu.
I created a simple text file with the IP addresses of all the hosts I wanted to patch. one per line. e.g.
10.10.10.1
10.10.10.2
10.0.0.3
Using the powershell command Invoke-WebRequest is like using wget. Just define the output file and specify the web url of the file.
e.g. powershell Invoke-WebRequest -OutFile c:\temp\update.msu http://mywebserver/update.zip
With psexec, you should specify the full path to the file. Finding powershell path is simple. Just type where powershell from a command line.
The psexec command example for a list of hosts
psexec @buildshosts.txt -s -u username -p password C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe Invoke-WebRequest -OutFile c:\temp\update.msu http://mywebserver/update.zip
Alternatively you can just issue it directly to a host
psexec \\10.10.10.1 -s -u username -p password C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe Invoke-WebRequest -OutFile c:\temp\update.msu http://mywebserver/update.zip
Now that the patch was on the host, I used psexec to apply it using the standalone wusa stand alone tool. Since I know it is in the default path c:\windows\system32, I didn't bother to specify the path.
I included the /quiet and /forcerestart options to silently install and then reboot.
psexec @hosts.txt -s -u username -p password wusa c:\temp\update.msu /quiet /forcerestart
The patch update tool exits with code 1641 if the application and reboot was successful.
The process is done serially so, it takes a while to iterate through a large number of hosts.
Using powershell to do a web download is really slow, so it takes several minutes to download the 200K rollup.
There is a chance powershell is old and doesn't support the Invoke-WebRequest option.
No comments:
Post a Comment