Hi all.

Lets say you have a bunch of Lync or Skype for Business servers that you need to patch, and you really are getting tired of copying the SkypeServerUpdateInstaller.exe (or LyncServerUpdateInstaller.exe as well) to each server to be patched manually. Really any file or folder can be bulk copied with this method. This is a very very simple process and seomeone with WAY better PowerShell skills such as my hero, @patrichard could make something far more useful than this but this is what I have. So there. You could even use something like Xcopy to do something like this, or a shared location as well. The thing that I caution on launching the installer from a central location is that you would overwrite the logs for an individual server for each updated component, plus the risk of corruption should there be a network hiccup so I like to have the updater .exe local to the machine.

The core component to this process is the Copy-Item cmdlet. Care to venture a guess what Copy-Item does? Thats right you alpha-achiever you, it copies items from one location to another. Crazy right? So what I typically do is export the server list from topology or make a manual list of servers in scope, and “build” a script that includes a Copy-Item line for each server along with the path where you want to dump the update.

For example:

PUSHCU.PS1

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBSFEServer1.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBSFEServer2.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBSFEServer3.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBSFEServer4.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBSFEServer5.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBSFEServer6.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBSFEServer7.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBSFEServer8.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBSMEDServer1.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBSMEDServer2.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBSMEDServer3.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBSMEDServer4.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBEDGEServer1.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBEDGEServer2.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBEDGEServer3.contoso.com\c$\SFBupdates

Copy-Item -Path \\sourceserver.contoso.com\c$\sfbupdates\cu92015\*.* -Destination \\SFBEDGEServer4.contoso.com\c$\SFBupdates

Etc. You could also get jiggy with it and do a Get-CsComputer perhaps to get a list of servers as well. There a lot of possibilities to this but I just wanted to give a basic way to do it. Start a conversation, that sort of thing.

Make sense? Good. Please comment with any questions or better examples of how to do this.

Thanks!