В рамках задачи по массовому обновлению Office до последней версии на компьютерах всех пользователей (по схеме развертывания Office 2016 через SCCM), нам понадобилось разработать простое решение для корректного автоматического удаления любых других ранее установленных на компьютерах версий Microsoft Office. Предполагается использовать данные скрипты в задания по автоматическому удалению / установке Office через пакеты SCCM.
В большинстве случаев, перед установкой новой версии Office, желательно удалить любые ранее установленные на компьютере версии MS Office (одновременное использование разных версий Office на одном компьютере поддерживается, но не рекомендуется из-за потенциальных проблем). Поэтому возникла необходимость разработать скрипты, которые бы корректно удаляли любую версию Office, ранее установленную на ПК.
- VBS скрипты OffScrub
- Особенности запуска vbs скриптов OffScrub через SCCM
- Скрипт полного удаления Office 2003
- Скрипт полного удаления Office 2007
- Скрипт полного удаления Office 2010
- Скрипт полного удаления Office 2013
- Скрипт полного удаления Office 2016
- Скрипт полного удаления Office Click to Run / Office 365
- Автоматическое определение версии Office
VBS скрипты OffScrub
Рассмотрев несколько способов удаления ранее установленных версий Office, мы остановились на использовании скриптов OffScrub от службы Premier поддержки Microsoft. Скрипты OffScrub входят в состав пакетов официальных пакетов EasyFix (пакет принудительного удаления Office 2007 и 2010, если их не получается удалить стандартным способом из Панели Управления) Для удаления Office 2013 и 2016 используется другой инструмент – пакет O15CTRRemove.diagcab, в который также входят скрипты OffScrub (см. сноску чуть ниже)
Скрипты Offscrub — представляют собой vbs сценарии для автоматизации удаления продуктов из состава Office. Данные скрипты позволяют полностью очистить систему от следов ранее установленного Office, в независимости от его текущий работоспособности. Перечислим основные преимущества в использования Offscrub для удаления Office:
- Возможность удаления старой версии даже при отсутствии или повреждения исходных файлов установки или кэша Office
- Куст пользователя в реестре не затрагивается
- Обеспечивается полное удаление
- Удаление устаревших настроек и всех продуктов (в т.ч. Project, Visio, Visio Viewer)
Скрипт Remove-PreviousOfficeInstalls.ps1 из пакета O15CTRRemove.diagcab позволяет определить установленную версию Office и вызвать скрипт Offscrub*.vbs для соответствующей версии Office.
В первую очередь, необходимо скачать с сайта Microsoft файл FixIt для тех версий Office и Windows, которые используются в вашей инфраструктуре.
Скачать пакет O15CTRRemove.diagcab для разных версий Office и Windows можно со страницы (https://support.microsoft.com/en-us/kb/971179).
В следующей таблице я собрал ссылки на пакеты Microsoft для удаления разных версий Office в разных ОС.
Версия Office | Windows 7 | Windows 8 | Windows 10 |
Office 2003 | MicrosoftFixit20054.mini.diagcab | Отсутствует | |
Office 2007 | MicrosoftFixit20052.mini.diagcab | Отсутствует | |
Office 2010 | MicrosoftFixit20055.mini.diagcab | ||
Office 2013 | Файл OffScrub_O15msi.vbs на GitHub | ||
Office 2016 | Файл OffScrub_O16msi.vbs на GitHub | ||
Office 365/ Click-To-Run | Файл OffScrubc2r.vbs на GitHub |
Качаем указанные файлы и сохраняем в каталог C:\tools\OfficeUninstall. Файлы *.diagcab представляют собой обычные архивы в CAB формате, которые можно распаковать с помощью команды expand.
Итак, для удобства для каждой версии Office создадим отдельный каталог:
set OFFICEREMOVE=C:\tools\OfficeUninstall\
md "%OFFICEREMOVE%\2003"
md "%OFFICEREMOVE%\2007"
md "%OFFICEREMOVE%\2010"
md "%OFFICEREMOVE%\2013"
md "%OFFICEREMOVE%\2016"
md "%OFFICEREMOVE%\O365"
Теперь в каждый каталог из скачанных архивов diagcab распакуем только vbs файлы.
expand -i "%OFFICEREMOVE%\MicrosoftFixit20054.mini.diagcab" -f:OffScrub*.vbs "%OFFICEREMOVE%\2003"
expand -i "%OFFICEREMOVE%\MicrosoftFixit20052.mini.diagcab" -f:OffScrub*.vbs "%OFFICEREMOVE%\2007"
expand -i "%OFFICEREMOVE%\MicrosoftFixit20055.mini.diagcab" -f:OffScrub*.vbs "%OFFICEREMOVE%\2010"
И скопируем тужа же vbs файлы, для новых версий Office, скачанные с GitHub.
move /y "%OFFICEREMOVE%\OffScrub_O15msi.vbs" "%OFFICEREMOVE%\2013"
move /y "%OFFICEREMOVE%\OffScrub_O16msi.vbs" "%OFFICEREMOVE%\2016"
move /y "%OFFICEREMOVE%\OffScrubc2r.vbs" "%OFFICEREMOVE%\O365"
Таким образом, у нас появится такие vbs файлы:
- 2003\OffScrub03.vbs
- 2007\OffScrub07.vbs
- 2010\OffScrub10.vbs
- 2013\OffScrub_O15msi.vbs
- 2016\OffScrub_O16msi.vbs
- O365\OffScrubc2r.vbs
Список доступных аргументов любого vbs скрипта OffScrub можно получить так:
OffScrub_O16msi.vbs /?
Microsoft Customer Support Service – Office 2016 MSI Removal Utility
OffScrub_O16msi.vbs helps to remove Office 2016 MSI Server and Client products
Usage: OffScrub_O16msi.vbs [List of config ProductIDs] [Options]
Особенности запуска vbs скриптов OffScrub через SCCM
Для того, чтобы скрипт удаления Office работал корректно на 64 битных версиях Windows, при запуске их 32-битным клиентом Configuration Manager, нужно запускать соответствующую версию cscript.exe. Поэтому на 64 битной системе для запуска сценариев нужно запускать процессор cscript.exe из каталога C:\Windows\SysWOW64.
Данного функционала можно добиться скриптом NativeCScript.cmd:
@echo off
if "%PROCESSOR_ARCHITEW6432%"=="AMD64" (
"%SystemRoot%\Sysnative\cscript.exe" %*
) else (
"%SystemRoot%\System32\cscript.exe" %*
)
Готовый архив со всеми необходимыми файлами можно скачать с нашего сайта: OfficeUninstall.zip (1,4 Мб)
Скрипт полного удаления Office 2003
Команда ручного запуска скрипта полного удаления компонентов Office 2003 на компьютере будет выглядеть так:
Cscript.exe "%OFFICEREMOVE%\2003\OffScrub03.vbs” ALL /Quiet /NoCancel /Force /OSE
Если задание удаления запускается в виде пакета SCCM, команда удаления может выглядеть так:
"%SystemRoot%\System32\cmd.exe" /C "NativeCScript.cmd //B //NoLogo "2003\OffScrub03.vbs" ALL /Quiet /NoCancel /Force /OSE"
Скрипт полного удаления Office 2007
Команда полного удаления компонентов Office 2007 для ручного запуска:
Cscript.exe "%OFFICEREMOVE%\2007\OffScrub07.vbs” ALL /Quiet /NoCancel /Force /OSE
Для запуска скрипта через задание SCCM:
"%SystemRoot%\System32\cmd.exe" /C "NativeCScript.cmd //B //NoLogo "2007\OffScrub07.vbs" ALL /Quiet /NoCancel /Force /OSE"
Скрипт полного удаления Office 2010
Команда полного удаления Microsoft Office 2010 для ручного запуска:
Cscript.exe "%OFFICEREMOVE%\2010\OffScrub10.vbs” ALL /Quiet /NoCancel /Force /OSE
При запуске через Configuration Manager:
"%SystemRoot%\System32\cmd.exe" /C "NativeCScript.cmd //B //NoLogo "2010\OffScrub10.vbs" ALL /Quiet /NoCancel /Force /OSE"
Скрипт полного удаления Office 2013
Команда полного удаления компонентов Microsoft Office 2013 для ручного запуска:
Cscript.exe "%OFFICEREMOVE%\2013\OffScrub_O15msi.vbs” ALL /Quiet /NoCancel /Force /OSE
Для запуска скрипта через задание SCCM:
"%SystemRoot%\System32\cmd.exe" /C "NativeCScript.cmd //B //NoLogo "2013\OffScrub_O15msi.vbs" ALL /Quiet /NoCancel /Force /OSE"
Скрипт полного удаления Office 2016
Команда ручного запуска скрипта полного удаления компонентов Office 2016 на текущем будет выглядеть так:
Cscript.exe "%OFFICEREMOVE%\2016\OffScrub_O16msi.vbs” ALL /Quiet /NoCancel /Force /OSE
Удаление Office 2016 из пакета SCCM можно запустить такой командой:
"%SystemRoot%\System32\cmd.exe" /C "NativeCScript.cmd //B //NoLogo "2016\OffScrub_O16msi.vbs" ALL /Quiet /NoCancel /Force /OSE"
Скрипт полного удаления Office Click to Run / Office 365
Команда полного удаления компонентов Office Click to Run / Office 365 для ручного запуска:
Cscript.exe "%OFFICEREMOVE%\C2R\OffScrubc2r.vbs” ALL /Quiet /NoCancel /Force /OSE
Для запуска скрипта через задание SCCM:
"%SystemRoot%\System32\cmd.exe" /C "NativeCScript.cmd //B //NoLogo "C2R\OffScrubc2r.vbs" ALL /Quiet /NoCancel /OSE"
Автоматическое определение версии Office
В состав проекта Remove-PreviousOfficeInstalls на Git входит также скрипт Remove-PreviousOfficeInstalls.ps1, который должен автоматически определять установленную на компьютере версию MS Office и вызывать один из советующих OffScrub скриптов. С определенными модификациями его также можно использовать в сценариях автоматического удаления Office.
Некорректное отображение сайта
Благодарю! Поправил — была проблема с фикс размерами таблицы.
Добрый день.
А без SCCM будет работать? Возможно ли распространить данные скрипты групповыми политиками?
Конечно будет, SCCM тут как пример автоматизации.
С ним удобно когда у тебя овермного машин и на всех их нужно выполнить определенные действия (в том числе и по фильтру), после чего получить отчет в котором будет видно у кого все гуд, а у кого нет.
Спасибо!
Добрый день.
Пытаюсь воспользоваться скриптом по удалению 2007 Office, на 4-м этапе выходит ошибка — «OffScrub07.vbs(3012, 9) Ошибка выполнения Microsoft VBScript: Переменная не определена: ‘sSys32Dir'»
Посмотрел листинг — эта строка в функции Wow64Folder — система 32-х разрядная, в эту функцию по идее вообще не должно заходить…
Определения переменной sSys32Dir в скрипте нет. По тексту — тоже не понял — какую именно директорию пытаются определить.
Никто не сталкивался?
Здравствуйте! Поправьте пожалуйста.
Csript.exe на Cscript.exe
Спасибо! Поправил.
Храни вас Бог!
Год мучался с этим ms офисом пока эту статью не нашел. Здоровья тебе дорогой!!!!!
А мне не помогло. Новая машина с установленной WIn10PRO. Кроме нее в комплекте навязан дистрибутив офис 365 со схемой распространения «microsoft store»
Для попытки удаления скачал готовый архив со всеми файлами по ссылке выше, распаковал, зашел во вложенную папку O365, запустил находящийся там файл «OffScrubC2R»
Скрипт запустился, долго расписывал, как он очищает ярлыки, чистит регистр, файлы, службы, папки…
потом окошко со скриптом закрылось, а весь офисный пакет остался на месте.
O365 из MS store распространяется по другому принципу, как UWP приложение. Эти VBS скрипты не подойдут для его удаления.
Такие приложения проще удалить через PowerShell. Как-то так:
Get-AppxPackage -Name Microsoft.Office.Desktop | Remove-AppxPackage
Отчитываюсь. провел эксперимент — по данному скрипту все элементы офиса как были, так и остались даже под текущим пользователем.
За это время нашел модифицированный скрипт, который помог решить задачу. С ним все удалилось без проблем.
Get-AppxProvisionedPackage -online | %{if ($_.packagename -match "Microsoft.Office.Desktop") {$_ | Remove-AppxProvisionedPackage -AllUsers}}
Также оказалcя полезным скрипт
Get-AppxProvisionedPackage -online | select PackageName
с помощью него посмотрел прочие микрософтовские утилиты, типа OneNote и прочих и удалил их, прописав название в верхнем скрипте.
Отлично, что разобрались и оставили решение здесь:) Может еще кому-то пригодится.
А куда эти скрипты писать, в командную строку?
спасибо, просто золотая статья!
Спасибо большое за статью. Очень помогла.
Здравствуйте. Установил лицензионную Microsoft Office 2010 Home&Student, затем обновил его до версии Дом и Бизнес с помощью утилиты Office Anytime Upgrade, ключи подобрал в интернете. Теперь при открытии, например, Ворд в справке запись, что офис дом и учеба и офис дом и бизнес оба активизированы, проверка в командной строке показывает два ключа. Можно ли удалить запись и активацию версии дом и учеба, не переустанавливая офис? Боюсь, что при переустановке может ключ не принять.