Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Поиск ветки реестра по фильтру/маске (VBScript, PowerShell) (http://forum.oszone.net/showthread.php?t=312316)

geppo 04-03-2016 01:24 2612667

Поиск ветки реестра по фильтру/маске (VBScript, PowerShell)
 
Всем доброго времени суток!

Прошу помочь в следующем вопросе: нужно найти все ветки реестра, содержащие в своем названии "TeamViewer", посредством кода на VBScript. Поиск нужно вести в разделе "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall".

Основная цель - удалить все версии TeamViewer. Строки удаления хочу брать в реестре. Проблема в том, что для каждой версии ветки называются по-разному: TeamViewer 7, TeamViewer 8 и т.п.

Удалять планирую следующим способом: организовать цикл поиска веток, содержащих "TeamViewer", для каждой найденной - запросить значение параметра UninstallString, и запустить его с "тихими" ключами (в моем случае /S).

Или еще лучше - в цикле сразу найти значения UninstallString, типа: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TeamViewer **(маска или фильтр)\UninstallString"

Возможно у кого-то уже есть аналогичный опыт другими методами - прошу поделиться.

Буду признателен за помощь!

Iska 04-03-2016 02:53 2612669

Цитата:

Цитата geppo
все ветки реестра »

Зачем все? Могут быть несколько параллельно установленных разных версий вместо обновления?

greg zakharov 04-03-2016 10:57 2612737

Цитата:

Цитата geppo
Возможно у кого-то уже есть аналогичный опыт другими методами - прошу поделиться.

Например, PowerShell:
Код:

gp HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* |
? {$_.PSChildName -match 'TeamViewer'} |
select -ExpandProperty UninstallString

Далее отправляете полученные строки на исполнение.

geppo 04-03-2016 17:27 2612914

greg zakharov, спасибо!
Запилил, работает на ура!
Получилось так:

Код:

$Query = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | ? {$_.PSChildName -match 'TeamViewer'} | select -ExpandProperty UninstallString
ForEach ($DelString in $Query) {
    if (Test-Path $DelString) {
        & $DelString /S
    }
}

С кодом VBS тоже помогли:
https://social.technet.microsoft.com...orum=scrlangru

Тему можно закрывать


Время: 11:35.

Время: 11:35.
© OSzone.net 2001-