В этой заметке разберем команды для удаленной установки и удаления программ, используя средства wmi и psexec
Предисловие
Иногда удаленному выполнению команд может препятствовать антивирус или встроенный брандмауэр, в зависимости от настроек безопасности вашей сети. При необходимости отключаем их.
Отключить антивирус удаленно на примере KAV
psexec \\ComputerName "C:\Program Files (x86)\Kaspersky Lab\Kaspersky Endpoint Security 10 for Windows SP2\avp.com" exit /login=KLAdmin /password=<Pass>
Отключение встроенного брандмауэра для всех профилей (только локально)
powershell -command "Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False"
Для удаленного отключения брандмауэра должен быть доступен Сервер RPC. Доступ к которому блокирует включенный брандмауэр 😂🤣 Такая рекурсия.
Поэтому, как всегда, пойдем обходным путем:
psexec \\CompName netsh -c advfirewall set allprofiles state off
Команда на включение брандмауэра, соответственно, будет state on
Удаление программы
# Находим процесс по имени программы в имени пути к ней wmic /node:CompName process where "ExecutablePath like '%7-zip%'" get Description /format:list # Завершаем нужный процесс wmic /node:CompName process where "ExecutablePath like '%7-zip%'" delete # Ищем имя нужной программы в полном списке wmic /node:CompName product get name # Просмотр сведений по конкретной установке программы wmic /node:CompName product where "name like '%7-zip%'" list brief # Выполняем удаленную деинсталляцию пакета wmic /node:CompName product where "name like '%7-zip%'" call uninstall /nointeractive
Установка программы
Тихая установка с предварительным копированием программы на удаленный хост
copy "C:\Distr\7z1900-x64.msi" "\\CompName\C$\Share\7z1900-x64.msi" psexec \\CompName cmd /c "msiexec.exe /i C:\7z1900-x64.msi /quiet /norestart"
Установка с сетевого ресурса
psexec \\CompName -s cmd /c "msiexec /i \\CompName\Share\7z1900-x64.msi /quiet /norestart"
Так же возможна установка по списку компьютеров используя «@», как показано в основной заметке по Psexec.
Получить список программ
Получать список установленных в системе программ лучше из реестра, нежели средствами WMI. Этот метод работает намного быстрее, чем при использовании
Get-WmiObject -Class Win32_Product
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select DisplayName | Sort DisplayName Get-ItemProperty HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select DisplayName | Sort DisplayName
Из-за того что в системе могут быть установлены как 64, так и 32 битные приложения, необходимо получать значения обеих веток. Можно поместить весь список в одну переменную.
Так же читайте как в тихом режиме деинсталлировать любую программу по ее GUID
Management Remote PC, и установка и удаление программ без написания скриптов. использует WMI, для пользователя все просто, выводит список программ, хочешь удаляй, хочешь устанавливай… и не только.