Gary Lapointe to the rescue: Using his Office 365 powershell tools to recover from a corrupted masterpage
I also need to give credit to the Office 365 support team over this. They were very quick in their response to my support incident, but I was quicker!
Whilst working on an Office 365 site for a customer today I had a moment of blind panic. The site is using custom branding and I was uploading a new version of the master page to the site when things went badly wrong. The upload appeared to finish OK but the dialog that was shown post upload was not the usual content type/fill in the fields form, but a plain white box. I left it for a few minutes but nothing changed. Unperturbed, I returned to the mater page gallery… Except I couldn’t. All I got was a white page. No errors, nothing. No pages worked at all – no settings pages, no content pages, nothing at all.
After some screaming, I tried SharePoint designer. Unfortunately, this was disabled (it is by default) and I couldn’t reach the settings page to enable it. I logged a support call and then suddenly remembered a recent post from Gary Lapointe about a release of some powershell tools for Office 365.
Those tools saved my life. I connected to the Office 365 system with :
1Connect-SPOSite -Credential "<my O365 username>" -url "<my sharepoint online url>"
Success!
First of all I used set-spoweb to set the masterurl and custommasterurl properties of the failed site. That allow me back into the system (phew!):
1Set-SPOWeb -Identity "/" -CustomMasterUrl "/\_catalogs/masterpage/seattle.master"
Once in, I thought all was well, but I could only access content pages. Every time I tried to access the masterpages libary or one of the site settings pages I got an error, even using Seattle.master.
Fortunately, Gary also has a command that will upload a file to a library, so I attempted to overwrite my corrupted masterpage:
1New-SPOFile -List "https://<my sharepoint online>.sharepoint.com/\_catalogs/masterpage" -Web "/" -File "<local path to my master page file>" –Overwrite
Once I’d done that, everthing snapped back into life.
The moral of the story? Keep calm and always have PowerShell ISE open!
You can download Gary’s tools here and instructions on their use are here.
Big thanks, Gary!