none
Как с помощью скрипта определить установлен ли последний IE для компьютера и, если НЕТ, ТО установить его? RRS feed

  • Общие обсуждения

  • Добрый день, коллеги!

    Есть задача установки последнего (для каждой конкретной ОС) Internet Explorer. Есть мысль использовать для этого скрипт, который будет проверять установлен ли на текущей машине последний IE и, если НЕТ, ТО устанавливал бы его.

    Вопрос: как определить наличие IE?

    C помощью такого запроса:

    wmic.exe QFE get HotFixID, ServicePackInEffect, Description

    я могу вывалить список всех KB:

    но как определить из них Internet Explorer?

    Или нужно совсем по другому искать IE в системе?

    18 июля 2012 г. 13:10

Все ответы

  • Лучше всего развернуть WSUS, он для этого и предназначен. Чтото препятствует его использованию?

    18 июля 2012 г. 13:37
  • Лучше всего развернуть WSUS, он для этого и предназначен. Чтото препятствует его использованию?

    :-) Отсутствие возможности. Аппаратной и других.
    18 июля 2012 г. 13:39
  • Можно к примеру посмотреть ключ в реестре HKLM\Software\Microsoft\Internet Explorer, REG_SZ Version содержит номер версии.

    Используйте vbs или reg query чтобы считать ключ.

    18 июля 2012 г. 13:55
  • Можете использовать функцию FileGetVersion () ,чтобы получить версию исполняемого файла. Это и будет версия установленного IE. Пример:

    Local $sVersion = FileGetVersion(@ProgramFilesDir & "\Internet Explorer\iexplore.exe")
    MsgBox(0,"",$sVersion)

    Касательно отсутствия аппаратной возможности для установки WSUS - у вас нет сервера и интернета? :) В любом случае, децентрализованная несвоевременная установка обновлений может крепко выйти боком - эпидемия KIDO тому была хорошим показателем. Так что постарайтесь донести до начальства мысль о возможных проблемах с куда большими потерями, чем цена одного жесткого диска под БД WSUS.


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий
    Follow us on TwitterFollow MSTechnetForum on Twitter

    Посетите Блог Инженеров
    Доклады на Techdays: http://www.techdays.ru/speaker/Vinokurov_YUrij.html

    21 июля 2012 г. 8:59
  • Интернета нет. Я внедренец - делаю свою сиюминутную работу. На благоденствие в сети в процессе эксплуатации мне всё равно.
    21 июля 2012 г. 21:02
  • Примерно накидал сейчас в батник, может как то так?:

    echo off
    REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Version Vector" /v "IE"
    echo INFO: from Windows7
    pause
    exit


    27 июля 2012 г. 14:08
  • Что-либо из предложенных решений вы смогли применить?

    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий
    Follow us on TwitterFollow MSTechnetForum on Twitter

    Посетите Блог Инженеров
    Доклады на Techdays: http://www.techdays.ru/speaker/Vinokurov_YUrij.html

    31 июля 2012 г. 14:10
  • Можно использовать WMI-запрос в скрипте PowerShell - http://gallery.technet.microsoft.com/b21927a2-530a-4b8b-9bca-1c9561f99b1e

    1 августа 2012 г. 8:53
    Модератор
  • Здравствуйте. Я, после того, как оказался разочарован процессом установки софта через AD, решил придумать свой механизм (при этом бесплатный). Использовал PowerShell. Были планы запускать этот скрипт при старте компьютеров в AD, но в итоге уволился и не довел до конца затею. Также сразу отмечу минус решения: я не смог реализовать запуск инсталляторов от имени администратора. Кстати, если кто поможет, буду благодарен.

    # Актуальный версии софта. Их будем ставить.
    $newVerOpenOffice = "3.04.9590"
    $newVerJavaSE6 = "6.0.320.5"
    $newVerFirefox = "10.0.4"
    $newVer7Zip = "9.20"
    $newFlashVer = "11.2.202.235"
    # Текущая версия AdobeReader. Там, где она установлена, ее надо удалить.
    $oldVerAdobeReader = "10.1.2.45"
    
    $rnd = get-random -maximum 2 # Генерируем случайное число (или 0, или 1)
    if ($rnd -eq "0") {
        $netPath = "\\sw0270000850\SoftwareDistribution"
    }
    else {
        $netPath = "\\sw0270000890\SoftwareDistribution"
    }
    $net = New-Object -ComObject WScript.Network
    $net.MapNetworkDrive("U:", $netPath, $false) # Сделал DFS своими руками=)
    
    # Start OpenOffice3
    # Обновляем, если установлена версия меньше $newVerOpenOffice
    $pathToExe = "C:\Program Files\OpenOffice.org 3\program\soffice.exe" # Путь до установленной версии
    $existPath = Test-Path $pathToExe # Проверяем наличие установленной версии
    if ($existPath -eq $true) { # Если установлена какая-либо версия
        $ver = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($pathToExe).FileVersion.ToString() # Проверяем версию
        $ver
        if ($ver -lt $newVerOpenOffice) { # Если она меньше актуальной, обновляем
            $args = "/i U:\OpenOffice34\openofficeorg34.msi /passive /promptrestart"
            Start-Process "msiexec.exe" -ArgumentList $args -Wait
        }
    }
    # End OpenOffice3
    
    # Start JavaSE6
    # Обновляем, если установлена версия меньше $newVerJavaSE6
    $pathToExe = "C:\Program Files\Java\jre6\bin\java.exe"
    $existPath = Test-Path $pathToExe
    if ($existPath -eq $true) {
        $ver = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($pathToExe).FileVersion.ToString()
        $ver
        if ($ver -lt $newVerJavaSE6) {
            $args = "/i U:\OracleJavaSE6\jre1.6.0_32.msi /passive /promptrestart"
            Start-Process "msiexec.exe" -ArgumentList $args -Wait
        }
    }
    # End JavaSE6
    
    # Start AdobeReader
    # Обновляем, если установлена версия $oldVerAdobeReader
    $pathToExe = "C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe"
    $existPath = Test-Path $pathToExe
    if ($existPath -eq $true) {
        $ver = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($pathToExe).FileVersion.ToString()
        $ver
        if ($ver -eq $oldVerAdobeReader) {
            $args = "/uninstall U:\AdbeRdr1012_mui_Std\AcroRead.msi /passive /norestart"
            Start-Process "msiexec.exe" -ArgumentList $args -Wait # Удаляем текущую версию
            $args = "/i U:\AdbeRdr1013_mui_Std\AcroRead.msi /passive /promptrestart"
            Start-Process "msiexec.exe" -ArgumentList $args -Wait # Устанавливаем новую версию
        }
    }
    # End AdobeReader
    
    # Start Mozilla Firefox ESR
    # Обновляем, если установлена версия меньше $newVerFirefox
    $pathToExe = "C:\Program Files\Mozilla Firefox\firefox.exe"
    $existPath = Test-Path $pathToExe
    if ($existPath -eq $true) {
        $ver = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($pathToExe).FileVersion.ToString()
        $ver
        if ($ver -lt $newVerFirefox) {
            $args = "/INI='U:\FirefoxESR\firefox.ini'"
            $pathToInstaller = "U:\FirefoxESR\Firefox Setup " + $newVerFirefox + "esr.exe"
            Start-Process $pathToInstaller -ArgumentList $args -Wait # Устанавливаем новую версию
        }
    }
    # End Mozilla Firefox ESR
    
    # Start 7Zip
    # Обновляем, если установлена версия меньше $newVer7Zip
    $pathToExe = "C:\Program Files\7-Zip\7z.exe"
    $existPath = Test-Path $pathToExe
    if ($existPath -eq $true) {
        $ver = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($pathToExe).FileVersion.ToString()
        $ver
        if ($ver -lt $newVer7Zip) {
            $args = "/i U:\7Zip\7z920.msi /passive /promptrestart"
            Start-Process "msiexec.exe" -ArgumentList $args -Wait # Устанавливаем новую версию
        }
    }
    # End 7Zip
    
    # Start FlashPlayer
    # Обновляем, если установлена версия меньше $newFlashVer
    $pathToReg = "HKLM:\SOFTWARE\Macromedia"
    $existPath = Test-Path $pathToReg
    if ($existPath -eq $true) {
        $existPlugin = Test-Path "HKLM:\SOFTWARE\Macromedia\FlashPlayerPlugin"
        if ($existPlugin -eq $true) {
            $ver = Get-ItemProperty "HKLM:\SOFTWARE\Macromedia\FlashPlayerPlugin"
            if ($ver.Version -lt $newFlashVer) {
                $args = "/i U:\AdobeFlash11\install_flash_player_11_plugin_32bit.msi /passive /promptrestart"
                Start-Process "msiexec.exe" -ArgumentList $args -Wait # Устанавливаем новую версию
            }
        }
        $existActiveX = Test-Path "HKLM:\SOFTWARE\Macromedia\FlashPlayerActiveX"
        if ($existActiveX -eq $true) {
            $ver = Get-ItemProperty "HKLM:\SOFTWARE\Macromedia\FlashPlayerActiveX"
            if ($ver.Version -lt $newFlashVer) {
                $args = "/i U:\AdobeFlash11\install_flash_player_11_active_x_32bit.msi /passive /promptrestart"
                Start-Process "msiexec.exe" -ArgumentList $args -Wait # Устанавливаем новую версию
            }
        }
    }
    # End FlashPlayer
    
    $net.RemoveNetworkDrive("U:") # удалить сетевой диск

    Костыль для Adobe Reader - это потребности моей конкретной ситуации (мне именно указанную версию надо было удалить).

    2 августа 2012 г. 11:23
  • Тема переведена в разряд обсуждений по причине отсутствия активности


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий
    Follow us on TwitterFollow MSTechnetForum on Twitter

    Посетите Блог Инженеров
    Доклады на Techdays: http://www.techdays.ru/speaker/Vinokurov_YUrij.html

    8 августа 2012 г. 5:10