Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ЛР_БОС.doc
Скачиваний:
112
Добавлен:
08.05.2019
Размер:
1.15 Mб
Скачать

Получение данных об установленных приложениях и заплатках

Ни для кого не секрет что эпоха пиратских приложений, установленного левого PhotoShop-а, одновременно установленные пять версий автокада и CorelDraw-а, уже в прошлом и нужен контроль за тем что стоит на рабочих местах. Ну или хотя бы понимание того что установлено.

Для сбора информации об установленных приложениях средствами PowerShell используется класс WMI - Win32_Product.

Результатом работы кода:

Get-WmiObject -Class Win32_Product | Sort-Object Vendor, Name |

Format-Table Vendor, Name, Version

Будет таблица содержащая сведения об установленном программном обеспечении. В случае, если потребуется получить данные об определенном пакете то потребуется несколько видоизменить запрос:

Get-WmiObject -Class Win32_Product -ComputerName . -Filter "Name=’DeviceLock’" | Format-List -Property *

Вторая головная боль это заплатки. От их своевременной установки или НЕсвоевременной установки непротестированных патчем может зависить очень многое.

Для сбора информации об установленных обновлениях используется класс WMI - Win32_QuickFixEngineering. Обращение к нему для получения списка установленных заплаток выполняется следующим образом.

Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName "."

Сразу напрашивается вопрос о том, как можно найти определенную заплатку.

Ответ прост, вводим команду представленную ниже.

Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName "." | where-object {$_.hotfixid -eq "KB2570791"}

Того же эффекта можно достичь используя командлет Get-HotFix.

$a = get-content servers.txt

$a | foreach { if (!(get-hotfix -id KB2570791 -computername $_))

{ add-content $_ -path Missing-KB2570791.tx}}

Для поиска определенных патчей на множестве компьютеров справедливо можно использовать следующий скрипт.

$computers = Get-Content "hostlist.txt"

$kb = "KB2570791"

foreach ($computer in $computers) {

Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName

$computer | where {$_.hotfixid -like "*$kb*" -OR $_.description –

like "*$kb*" }

}

Установка по

WMI класс Win32_Product можно использовать для удаленной или локальной установки пакетов в формате MSI.

Примечание: В случае удаленной установки необходимо указать UNC-путь к устанавливаемому пакету.

Например, для установки пакета tools.msi, расположенного на общем сетевом ресурсе \\SERVER_NAME\Deploy\Package_01 на удаленном компьютере host-01, введите в командной строке Windows PowerShell следующую команду:

(Get-WMIObject -ComputerName "host-01" -List | Where-Object

-FilterScript {$_.Name -eq "Win32_Product"}).Install

(\\SERVER_NAME\Deploy\Package_01\tools.msi)

Или воспользоваться более производительным вариантом скрипта

([wmiclass]"\\HOST-01\root\cimv2:win32_product").Install

("\\SERVER_NAME\Deploy\Package_01\tools.msi")

Обновление по

Для обновления приложения необходимо знать имя обновляемого приложения и путь к пакету обновления приложения. При наличии этих сведений обновление приложения осуществляется в Windows PowerShell при помощи одной команды:

(Get-WmiObject -Class Win32_Product -ComputerName . -Filter

Name=‘OldTools’").Upgrade(\\SERVER_NAME\Deploy\Package_01\OldTools.msi)