А АSunday, 13 May 2018

Скрипт определения версии MS Office.

Мы снова в эфире.

Борьба с MS Office-ом продолжается)). Опять мне показывают хвосты от продуктов MS Office на одном ПК. Я опять вспоминаю скрипты очистки OfficeScrub и как они отработали у меня.

За это время было предложение банально отлавливать версию  MS Office по наличию папок. Но опыт показывает что штатная деинсталляция не любит убирать их за собой.

Что еще можно придумать? Можно выловить наличие продукта и его версию по WMI-запросу:

Gwmi –query "Select * from Win32_Product WHERE Name like 'Microsoft Word%' AND Version like '16%'" | Select Version

Gwmi –query "SELECT * FROM CIM_Datafile WHERE Name = 'C:\\Program Files\\Microsoft Office\\Office16\\WINWORD.EXE'"

И тут я натыкаюсь на заметку еще одного админа с громким названием "Скрипты для полного удаления старых версий Office". Тем более что в самом конце он обещает что в состав проекта Remove-PreviousOfficeInstalls на Git входит скрипт Remove-PreviousOfficeInstalls.ps1, который должен автоматически определять установленную на компьютере версию MS Office и вызывать один из соответствующих OffScrub скриптов. С определенными модификациями его также можно использовать в сценариях автоматического удаления Office. 

Неужели это оно, то что доктор прописал? Надо проверить. Раз такое дело и OfficeScrub берется удалять ЛЮБУЮ версию Office, то наверняка у них есть функция по определению версии такого продукта. Качаем пакет, но скрипта Remove-PreviousOfficeInstalls.ps1 там не находим. Ладно, тогда открываем RemoveOffice.ps1 и продолжаем наши поиски. Вот она красавица - функция с многообещающим названием Get-OfficeVersion.


Тестирую ее сходу Get-OfficeVersion | Select Version. Результат есть! Можно использовать в своих целях. Например ее вызов с параметром -ShowAllInstalledProducts покажет вам все что есть офисного на вашем ПК.

Как ее вызвать без остальных функций? 
Например так:
powershell -ExecutionPolicy bypass -command "& { . .\script.ps1; Get-OfficeVersion | fl}"
Но предварительно в этом случае лучше тело функции Get-OfficeVersion отдельно от остального кода RemoveOffice поместить  в файл script.ps1.

На сегодня все. Удачи.

2 comments:

Anonymous said...

Из другого скрипта вызов такой же:
. .\RemoveOffice.ps1;
Get-OfficeVersion

The Cat is a scientist said...

Спасибо дружище! Очень ценный пост и очень помог в моей нужде именно этого!

Post a Comment

А что вы думаете по этому поводу?

Версия на печать

Популярное