Как установить wmi?

В этой инструкции мы покажем несколько способов получить список установленных программ в Windows 10, Windows 8 или Windows 7 с помощью командной строки. Эта методика построения списка программ в системе может пригодиться перед переустановкой системы, когда нужно найти нежелательное ПО или при выполнении инвентаризации установленного ПО на компьютерах организации.

Рассмотрим два способа: первый подразумевает использование командной строки и утилиты wmic, второй — PowerShell.

Вывод списка программ с помощью утилиты командной строки WMIC

Список установленных в системе программ может быть получен с помощью утилиты командной строки WMIC, через которую можно обратиться и опросить пространство имен WMI. Запустите командную строку с правами администратора и выполните команду:

wmic product get name,version

Как установить wmi?

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

Этот список можно экспортировать в текстовый файл с помощью команды:

wmic product get name,version /format:csv > c:\Temp\Programs_%Computername%.csv

Как установить wmi?

Как установить wmi?

Вывод списка программ через Windows PowerShell

Список установленных программ также может быть получен с помощью PowerShell. Идея метода в том, что список установленных программ, который мы видим в списке Programs and Features
Панели Управления, строится на основе данных, хранящихся в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Как установить wmi?

Наша задача – вывести содержимое данной ветки реестра. Итак, запустите консоль Powershell и выполните команду:

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

Совет
. Для 32-битных приложений на x64 версиях Windows, также нужно брать данные из ветки HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall

Экспортировать полученный список в csv файл можно так:

Рассмотренный выше способ позволяет вывести данные только о классический Windows приложениях. Чтобы вывести список установленных Metro приложений, воспользуйтесь командой:

Как установить wmi?

Чтобы получить список установленного ПО на удаленном компьютере (к примеру, с именем wks_name11), воспользуемся командлетом Invoke-command
:

Compare-Object –ReferenceObject (Get-Content C:\temp\installed-software.txt) –DifferenceObject (Get-Content C:\temp\installed-software2.txt)

Как установить wmi?

В нашем примере в двух сравниваемых списках имеются различия в двух программах.

Другой способ вывести список установленных программ – воспользоваться командлетом Get-WmiObject, также позволяющего обращаться с пространству WMI:

Как установить wmi?

Здравствуйте, уважаемые читатели! Некоторые из вас возможно задавались вопросом как удалить программу на удаленном компьютере
. Рядовому пользователю это скорей всего не нужно, а системному администратору какой-нибудь локальной сети это может понадобиться. 

Для удаления и установки ПО на удаленных компьютерах существует множество различных решений и программных средств. В этой статье мы рассмотрим решение данного вопроса на основе встроенных средств windows.

 Удалять программы на удаленных машинах нам поможет Windows Management Instrumentation
 или проще говоря WMI
. В переводе на русский это  инструментарий управления Windows
.

Как запустить wmi

Запуск wmi выполняется из командной строки. Открыть командную строку можно из "Пуск -> Все программы -> Стандартные -> Командная строка"
, либо просто нажимаете клавиши "WIN + R"
, откроется окно "Выполнить"
в котором в поле "открыть"
набираете "cmd"
и нажимаете "OK"

запуск командной строки

 В открывшемся окне командной строки набираем команду wmic
и нажимаем "Enter"
:

запуск wmi

Таким образом мы запустили консольную утилиту для взаимодействия со структурой WMI на локальном или удаленном компьютере. Теперь с помощью язык запросов WMI Query Language
(WQL) можно выполнять различные команды WMI.

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

wmic-get-po

Как удалить программу с помощью WMI?

 Удалить программу можно с помощью следующего запроса:

Например, нам необходимо удалить «Microsoft Office Professional Plus 2010». Тогда запрос будет выглядеть примерно так:

Нажимаем «Enter» и на запрос предложения удаления программы отвечаем Y
:

После попытки удаления будет выведено сообщение о результатах. В случае успешного удаления сообщение будет такого вида:

На этом все! До встречи в следующих выпусках!

Пуск -> Выполнить или win+R: 

Команды для запуска элементов управления

  • Сетевые подключения: ncpa.cpl
  • Свойства системы: sysdm.cpl
  • Установка и удаление программ: appwiz.cpl
  • Учетные записи пользователей: nusrmgr.cpl
  • Дата и время: timedate.cpl
  • Свойства экрана: desk.cpl
  • Брэндмауэр Windows: firewall.cpl
  • Мастер установки оборудования: hdwwiz.cpl
  • Свойства Интернет: inetcpl.cpl

Запускать из окружения пользователя, от другого имени, можно запускать большинство элементов управления, кроме тех, которые используют explorer. Например Панель «Сетевые подключения» использует explorer.

Команды windows для запуска оснасток

  • Управление компьютером (Computer Management): compmgmt.msc
  • Редактор объектов локальной политики (Group Policy Object Editor): gpedit.msc
  • Результирующая политика (результат применения политик): rsop.msc
  • Службы (Services): services.msc
  • Общие папки (Shared Folders): fsmgmt.msc
  • Диспетчер устройств (Device Manager): devmgmt.msc
  • Локальные пользователи и группы (Local users and Groups): lusrmgr.msc
  • Локальная политика безопасности (Local Security Settings): secpol.msc
  • Управление дисками (Disk Management): diskmgmt.msc
  • eventvwr.msc: Просмотр событий
  • certmgr.msc: Сертификаты — текущий пользователь
  • tpm.msc — управление доверенным платформенным модулем (TPM) на локальном компьютере.
  • Active Directory Пользователи и компьютеры (AD Users and Computers): dsa.msc
  • Диспетчер служб терминалов (Terminal Services Manager): tsadmin.msc
  • Консоль управления GPO (Group Policy Management Console): gpmc.msc
  • Настройка терминального сервера (TS Configuration): tscc.msc
  • Маршрутизация и удаленый доступ (Routing and Remote Access): rrasmgmt.msc
  • Active Directory Домены и Доверие (AD Domains and Trusts): domain.msc
  • Active Directory Сайты и Доверие (AD Sites and Trusts): dssite.msc
  • Политика безопасности домена (Domain Security Settings): dompol.msc
  • Политика безопасности контроллера домена (DC Security Settings): dcpol.msc
  • Распределенная файловая система DFS (Distributed File System): dfsgui.msc

Остальные команды windows

  auditpol /set /subcategory:""{0CCE9226-69AE-11D9-BED3-505054503030}"" /success:disable /failure:enable  
  • Просмотр текущей политики аудита системы:
  auditpol /get /subcategory:{0CCE9226-69AE-11D9-BED3-505054503030}  

Команды windows для настройки сети

  • proxycfg -?
    — инструмент настройки прокси по умолчанию в Windows XP/2003, WinHTTP.
  • netsh winhttp
    — инструмент настройки прокси по умолчанию в Windows Vista/7/2008
  • netsh interface ip show config
    — посмотреть конфигурацию интерфейсов
  • Настраиваем интерфейс
     «Local Area Connection» — IP, маска сети, шлюз:

netsh interface ip set address name=»Local Area Connection» static 192.168.1.100 255.255.255.0 192.168.1.1 1

  • netsh -c interface dump > c:\conf.txt
     — экспорт настроек интерфейсов
  • netsh -f c:\conf.txt
    — импорт настроек интерфейсов
  • netsh exec c:\conf.txt
    — импорт настроек интерфейсов
  • netsh interface ip set address «Ethernet» dhcp
    — включить dhcp
  • netsh interface ip set dns «Ethernet» static 8.8.8.8
    — переключаем DNS на статику и указываем основной DNS-сервер
  • netsh interface ip set wins «Ethernet» static 8.8.8.8
    — указываем Wins сервер
  • netsh interface ip add dns «Ethernet» 8.8.8.8 index=1
     — задаем первичный dns
  • netsh interface ip add dns «Ethernet» 8.8.4.4 index=2
    — задаем вторичный dns
  • netsh interface ip set dns «Ethernet» dhcp
    — получаем DNS по DHCP

Команды для установки, просмотра, удаления программ и обновлений

  • Запуск msi пакетов из командной строки под правами администратора:
      runas /user:administrator "msiexec /i адрес_к_msi_файлу"
    runas /user:administrator "msiexec /i \"экранированный слешами и скобками адрес с пробелами к msi файлу\""  
  • wmic product get name,version,vendor — просмотр установленных программ  (только установленные из msi-пакетов)
  • wmic product where name=»Имя программы» call uninstall /nointeractive — удаление установленной программы
  • Get-WmiObject Win32_Product | ft name,version,vendor,packagename — просмотр установленных программ через Powershell (только установленные из msi-пакетов)
  • (Get-WmiObject Win32_Product -Filter «Name = ‘Имя программы’»). Uninstall() — удаление установленной программы через Powershell
  • DISM /Image:D:\ /Get-Packages — просмотр установленных обновлений из загрузочного диска
  • DISM /Online /Get-Packages — просмотру установленных обновлений на текущей ОС
  • DISM /Image:D:\ /Remove-Package /PackageName:Package_for_KB3045999~31bf3856ad364e35~amd64~~6.1.1.1 — удаление  обновления из загрузочного диска
  • DISM /Online /Remove-Package /PackageName:Package_for_KB3045999~31bf3856ad364e35~amd64~~6.1.1.1 — удаление  обновления в текущей ОС

Команды в Powershell

  • Запуск процесса дедупликации
    — -DedupJob -Volume : — Optimization
  • Контроль процесса дедупликации
    — -DedupStatus

список установленных программ windows

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами разобрали основные понятия Active Directory
и рассмотрели его структуру. Идем дальше и сегодня я хочу вас научить выводить список установленных программ в Windows 11
, но данные методы подойдут и для любой другой версии. Данная задача может перед вами появиться, когда нужно будет сделать некую инвентаризацию приложений на ваших серверах или рабочих станциях или убедиться есть ли у пользователя та или иная программа для работы.

Для чего это нужно?

  • Инвентаризация программного обеспечения – очень часто в организациях любят давать пользователям права на рабочую станцию, что в последствии ведет к тому. что пользователь может наставить кучу разного ПО, и не всегда лицензионного.
  • Перед переустановкой системы – Это то же может вас с подвигнуть к получению списку установленных программ в Windows 11 и предыдущих версий, чтобы пользователь получая свежую систему смог там обнаружить свое привычное окружение. Очень подойдет для формирования скрипта Winget.
  • Создание списка стандартных приложений для компании – такое то же часто бывает, что компания хочет ввести стандарты, что можно использовать, а что нет. Для этого логично, что необходимо иметь список.

Как вывести список установленных программ через Winget

Winget
– это новая утилита командной строки, которая появилась в Windows 10
и позволяет производить установку программ через интернет из репозитория Microsoft. Но она так же умеет показывать список всех установленных пакетов и приложений. Для этого вызовите командную строку
или оболочку PowerShell
и введите команду:

На выходе вы получите общий список программ, которые есть в вашей Windows 11, обратите внимание, что тут будут и GUID
приложений, они идут в столбце “ИД”, а так же версия программы.

Как вывести список установленных программ через Winget

Если хотите сохранить весь список в текстовый файл, то воспользуйтесь такой конструкцией, не забываем только указать свой путь, где сохранять файл:

winget list > C:\temp\list-app.txt

Сохранение файла со списком установленных приложений

Вывод списка программ с помощью утилиты WMIC

WMIC.exe
– это служебная программа командной строки и оболочки PowerShell, которая используется для доступа к инструментарию управления Windows. Через WMIC можно легко получить список установленных в системе программ, она сделает это через пространство имен WMI, так сказать опросит его. Запускать описанную ниже команду вы можете как через командную строку, так и через PowerShell, я воспользуюсь последним, он выглядит позитивнее:

:/>  iPadian 2 официальный сайт, бесплатно скачать русскую версию эмулятора iOS

wmic product get name,version

Вот так будет выглядеть полученный список в виде двух столбцов (Name и Version). Хочу отметить, что обращение к WMI может занимать секунд 30 и более, так что не пугайтесь, что информация не отобразилась сразу.

Вывод списка программ с помощью утилиты командной строки WMIC

Для того, чтобы экспортировать полученный список программ, вам нужно использовать вот такую конструкцию:

wmic product get name,version > C:\Temp\install-app.txt

В результате у меня будет сформирован текстовый файл содержащий весь список программ из моей системы Windows 11.

Как получить текстовый файл со списком установленных приложений в Windows 10

Пре желании вы можете произвести выгрузку и в CSV
формате, для это введите:

wmic product get name,version /format:csv > C:\Temp\install-app.csv

Тут еще будет добавлено поле Node, содержащее имя компьютера откуда была произведена выгрузка списка.

Как получить csv файл со списком установленных приложений в Windows 10

Как получить список установленных программ Windows через PowerShell

Я вам не перестаю напоминать, что все, что вы видите в графическом виде операционной системы Windows 10 или Windows 11 имеет свой аналог в виде ключа реестра или ветки. Список установленных приложений в этом не исключение, все данные есть в реестре Windows. Приведу пример, когда вы открываете окно ” Программы и компоненты
” (Которое можно открыть через оснастку appwiz.cpl
)

Список установленных приложений в оснастке "Программы и компоненты"

Или параметрах Windows ” Приложения и возможности
” , то весь этот список есть в разделе реестра, к которому легко можно обратиться и получить его, в этом и заключается суть метода.

Список установленных приложений в оснастке "Приложения и возможности"

Сам раздел реестра содержащий список программ установленных в Windows 10 или Windows 11 располагается по пути:

Я вам для примера покажу данный раздел, но вы тут мало, что сможете понять, так как тут за место названия приложения идет его GUID, для Windows 11 так проще, машина так понимает лучше, но PowerShell легко это конвертирует в читаемый вид.

Список установленных приложений в реестрt Windows

В оболочке PowrShell введите команду, которая вам сделает запрос к реестру и вытянет от туда список всех программ, что есть в системе. Нам поможет командлет Get-ItemProperty
.

Как получить список установленных программ Windows через PowerShell

Чтобы сохранить данный список в текстовый файл, то нужно добавить командлет Out-File.

Как получить текстовый файл со списком установленных приложений в Windows 10 через PowerShell

Чтобы сохранить данный список в CSV файл, то нужно добавить командлет Export-Csv
.

Экспорт файла csv со списком установленных программ

У PowerShell есть небольшое ограничение по командам указанным выше, так как приложения установленные из магазина Windows не попадают в данную ветку реестра, и чтобы получить их список вам нужно уже запросить список установленных пакетов Windows 11, сказано, сделано:

Вывод списка установленных пакетов в Windows 10 через PowerShell

Ну и напомню использование командлета Get-WmiObject
.

Get-WmiObject -Class Win32_Product | Select-Object -Property Name Get-WmiObject

Как получить список установленного ПО на удаленном компьютере

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

Как получить список установленного ПО на удаленном компьютере

PowerShell легко может сравнить два списка и показать вам, где есть различия. Я сравню список установленного ПО с компьютера dc01 и svt2019s01. Выполните команду:

Compare-Object –ReferenceObject (Get-Content C:\temp\installed_Applications_dc01.txt) –DifferenceObject (Get-Content C:\temp\installed_Applications_svt2019s01.txt)

как сравнить списки установленного ПО

Как получить список установленного ПО через функцию PowerShell

Ранее я вам рассказывал, как создать и сохранить функцию PowerShell
, вот пример функции для локального и удаленного получения списка установленного ПО в Windows 11.

write-verbose -verbose -message “`nStarting scan on $computer”

Write-Warning “Could not communicate with $computer”

} # if ($invokeerror)

} # foreach($computer in $computers)

} # process

} # function Get-InstalledApps

Получить список ПО через функцию PowerSHell

Получение списка установленных программ через стороннее ПО

Сейчас многие программы по оптимизации и удалению ПО способны формировать и показывать список установленных программ. Приведу несколько примеров, первым будет утилита  CCleaner
которую мы использовали для удаления мусора с компьютера.

  1. Для получения списка программ Windows в CCleaner переходим в раздел ” Инструменты
    “.
  2. Теперь в правом нижнем углу нажмите кнопку ” Сохранить в текстовый файл

Что самое превосходное, так это то, что CCleaner сохраняет в списке программы установленные из магазина и программы для рабочего стола

Получение списка установленных программ через стороннее ПО

Указываем место куда мы сохраним данный файл

Сохранение файла со списком программ

Открываем файл и проверяем, что в нем присутствует весь список установленных программ.

Текстовый файл со списком программ

Второй утилитой с помощью которой вы легко получите список установленного ПО будет бесплатная UninstallView
, которая входит в состав пакета утилит NirLauncher
.

Загрузить UninstallView – https://www.nirsoft.net/utils/uninstall_view.html

Когда вы запустите UninstallView вы сразу увидите все программы, что установлены в вашей операционной системе Windows.

Запуск UninstallView

Чтобы получить данный список в виде файла, нам необходимо его выгрузить. Для этого выберите в меню ” View – HTML Report – All items

Экспорт списка установленных программ в UninstallView

В результате вы получите вот такой удобный список с большим количеством последних столбцов.

HTML отчет в UninstallView

На этом у меня все, вы сами можете выбрать удобный для себя метод получения списка установленных программ в Windows 11. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

Как установить wmi?
Cannot Connect to WMI Provider

What causes the ‘Cannot Connect to WMI Provider’ Error on Windows 10?

  • Windows Registry permissions:
    In some scenarios, the issue occurs if only the administrator account has full permissions over a Windows Registry key and the Network Service account is restricted.
  • Removal of WMI Provider:
    There are also certain cases where the WMI provider is removed due to the installation of an SQL server instance. Such cases can cause the error to occur as well.

Solution 1: Using Mofcomp Tool

As we have mentioned above, sometimes the WMI or Windows Management Instrumentation provider is removed by the installation of an SQL Server instance. W MI provider is a system process that allows the applications on your system to request and fetch information from other applications on the system. You can fix your issue by running the Mofcomp tool. Here’s how to do it:

  1. Press Windows Key + X
    and select Command Prompt (Admin)
    from the list to open an elevated command prompt.
  2. Once the administrator command prompt opens up, copy and paste the following command and then hit Enter:
      mofcomp "%programfiles(x86)%\Microsoft SQL Server\    number    
    \Shared\sqlmgmproviderxpsp2up.mof  
    Как установить wmi?
    Using the Mofcomp Tool
  3. Please make sure that you replace ‘ number
    ’ with your SQL Server version.
  4. Once done, press Windows Key + R
    to open Run
    .
  5. Type in ‘ services.msc
    ’ and press Enter
    .
  6. Search for the Windows Management Instrumentation
    service.
  7. Щелкните правой кнопкой мыши и выберите Перезагрузить
    .

    Как установить wmi?
    Перезапуск службы WMI
  8. Проверьте, решает ли это вашу проблему.

Решение 2. Изменение разрешений ключа реестра Windows

  1. Нажмите Клавиша Windows + R
    чтобы открыть Бег
    диалоговое окно.
  2. Введите ‘ regedit
    ’, а затем нажмите Enter
    .
  3. Затем вставьте в адресную строку следующий путь:  Computer\HKEY_CLASSES_ROOT\CLSID\{73E709EA-5D93-4B2E-BBB0-99B7938DA9E4}
  4. Щелкните правой кнопкой мыши {73E709EA-5D93-4B2E-BBB0-99B7938DA9E4}
    и выберите Разрешения
    .

    Как установить wmi?
    Изменение разрешений
  5. Нажмите Добавить
    а затем введите Сетевая служба
    под ‘ Введите имена объектов для выбора
    ’.
  6. Затем нажмите Проверить имена
    а затем нажмите ОК
    .

    Как установить wmi?
    Добавление учетной записи сетевой службы
  7. Подсветка Сетевая служба
    и убедитесь, что Полный доступ
    флажок установлен.

    Как установить wmi?
    Разрешения учетной записи сетевой службы
  8. Нажмите Применить
    а затем нажмите ОК
    .
  9. Перезагрузите систему и посмотрите, решит ли это проблему.

Photo of Kevin Arrows

Кевин Эрроуз

Кевин Эрроуз — опытный и знающий специалист по технологиям с более чем десятилетним опытом работы в отрасли. Он имеет сертификат Microsoft Certified Technology Specialist (MCTS) и очень хочет быть в курсе последних технических разработок. Кевин много писал по широкому кругу технических тем, демонстрируя свой опыт и знания в таких областях, как разработка программного обеспечения, кибербезопасность и облачные вычисления. Его вклад в область технологий получил широкое признание и уважение коллег, и его высоко ценят за способность ясно и лаконично объяснять сложные технические концепции.


Кнопка «Наверх»

В этой заметке разберем команду для удаленной установки и удаления программ, используя средства wmi
и psexec

Предисловие

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

Отключить антивирус удаленно на территории KAV

 psexec \\ИмяКомпьютера "C:\Program Files (x86)\Kaspersky Lab\Kaspersky Endpoint Security 10 для Windows SP2\avp.com" exit /login=KLAdmin /password= 

Отключение встроенного брандмауэра для всех профилей (только контекст)

 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  

Данный способ работает только с MSI пакетами

Установка программы

Тихая установка с предварительным копированием программы на удаленный хост

  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"  

Административные шары, такие как «C$»,

для подобной команды не функционируют.

Необходимо создать сетевую папку вручную

Получить список программ

Получать список  установленных в системе программ лучше из реестра, нежели средствами WMI. Этот метод работает намного быстрее, чем при использовании

:/>  Как удалить linux и оставить windows

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 битные приложения, необходимо получать значения обеих веток. Можно поместить весь список в одну переменную.

Записки администратора

Доступ к приложениям, спроектированным для использования установщика Windows, может быть получен через класс WMI Win32_Product
, но в настоящее время не все приложения используют установщик Windows. Установщик Windows предоставляет широчайший спектр стандартных методов работы с устанавливаемыми приложениями, поэтому главное внимание будет уделяться именно этим приложениям. Приложения, для которых предусмотрены другие процедуры установки, обычно не управляются установщиком Windows. Особенные способы работы с такими приложениями зависят от программного обеспечения установщика и решений, принятых разработчиками приложений.

Получение списка приложений, установленных при помощи установщика Windows

Чтобы построить список приложений, установленных на локальной или удаленной системе при помощи установщика Windows, можно использовать несложный запрос WMI:

  PS> Get-WmiObject -Class Win32_Product -ComputerName .
IdentifyingNumber : {7131646D-CD3C-40F4-97B9-CD9E4E6262EF}
Name : Microsoft . NET Framework 2.0
Vendor : Microsoft Corporation
Version : 2.0.50727
Caption : Microsoft . NET Framework 2.0  

Чтобы вывести на экран все свойства объекта Win32_Product, используйте параметр Properties командлетов форматирования, например командлета Format-List, со значением * (все).

  PS> Get-WmiObject -Class Win32_Product -ComputerName .  | Where-Object -FilterScript {$_. Name -eq "Microsoft . NET Framework 2.0"} | Format-List -Property *
Name : Microsoft . NET Framework 2.0
Version : 2.0.50727
InstallState : 5
Caption : Microsoft . NET Framework 2.0
Description : Microsoft . NET Framework 2.0
IdentifyingNumber : {7131646D-CD3C-40F4-97B9-CD9E4E6262EF}
InstallDate : 20060506
InstallDate2 : 20060506000000.000000-000
InstallLocation :
PackageCache : C:\WINDOWS\Installer\619ab2.msi
SKUNumber :
Vendor : Microsoft Corporation  

Чтобы выбрать только Microsoft . NET Framework 2.0, можно также воспользоваться параметром Get-WmiObject Filter
. В этой команде использован фильтр WMI, который следует не синтаксису фильтров Windows PowerShell, а синтаксису языка WQL. Вместо этого введите:

  Get-WmiObject -Class Win32_Product -ComputerName .  - Filter "Name='Microsoft . NET Framework 2.0'"| Format-List -Property *  

Запросы WQL часто содержат знаки (например, пробелы и знаки равенства), которые имеют в Windows PowerShell специальное значение. Поэтому рекомендуется всегда заключать значение параметра Filter в кавычки. Может быть использован и управляющий знак Windows PowerShell гравис (`), однако при этом чтение команды становится менее удобным. Следующая команда эквивалентна предыдущей, она возвращает тот же результат, однако вместо заключения всей строки фильтра в кавычки в ней применен специальный управляющий символ гравис.

  Get-WmiObject -Class Win32_Product -ComputerName .  - Filter Name`=`'Microsoft` . NET` Framework` 2.0`' | Format-List -Property *  

Чтобы вывести только желаемые свойства, используйте параметр Property командлетов форматирования для перечисления этих свойств.

  Get-WmiObject -Class Win32_Product -ComputerName .  | Format-List -Property Name,InstallDate,InstallLocation,PackageCache,Vendor,Version,IdentifyingNumber
.
Name : HighMAT Extension to Microsoft Windows XP CD Writing Wizard
InstallDate : 20051022
InstallLocation : C:\Program Files\HighMAT CD Writing Wizard\
PackageCache : C:\WINDOWS\Installer\113b54.msi
Vendor : Microsoft Corporation
Version : 1.1.1905.1
IdentifyingNumber : {FCE65C4E-B0E8-4FBD-AD16-EDCBE6CD591F}
.    

Наконец, если необходимо определить только имена установленных приложений, сократить вывод позволит следующая простая инструкция Format-Wide
:

  Get-WmiObject -Class Win32_Product -ComputerName .   | Format-Wide -Column 1  

Итак, существует несколько способов получения сведений о приложениях, установленных при помощи установщика Windows, однако остальные приложения пока не рассмотрены. Поскольку большинство стандартных приложений регистрирует программу удаления в Windows, их можно найти локально путем поиска программ удаления в реестре Windows.

Получение списка приложений, поддерживающих удаление

Не существует гарантированного способа нахождения всех приложений, установленных в системе, однако можно найти все программы, отображаемые в диалоговом окне “Установка и удаление программ”. Диалоговое окно “Установка и удаление программ” находит эти приложения в следующем разделе реестра:

Этот раздел также можно проверить, чтобы найти приложения. Просмотр раздела Uninstall можно упростить, отобразив соответствующее положение в реестре на диск Windows PowerShell:

  PS> 

Name Provider Root CurrentLocation
---- -------- ---- ---------------
Uninstall Registry HKEY_LOCAL_MACHINE\SOFTWARE\Micr.    

Созданный диск с именем “Uninstall” делает поиск установленных приложений быстрым и удобным. Число установленных приложений можно определить, подсчитав количество разделов реестра на диске Uninstall: в Windows PowerShell:

  PS> (Get-ChildItem -Path Uninstall:). Count
459  

Дальнейший поиск в полученном списке приложений осуществляется разнообразными методами, начиная с использования командлета Get-ChildItem
. Для получения списка приложений и их сохранения в переменной $UninstallableApplications
используйте следующую команду:

  $UninstallableApplications = Get-ChildItem -Path Uninstall:  

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

Например, чтобы определить отображаемые имена приложений из раздела Uninstall, используйте следующую команду:

  PS> Get-ChildItem -Path Uninstall: | ForEach-Object -Process { $_. GetValue("DisplayName") }  

Уникальность этих значений не гарантирована. В следующем примере два установленных элемента отображаются как “Windows Media Encoder 9 Series”:

  PS> Get-ChildItem -Path Uninstall: | Where-Object -FilterScript { $_. GetValue("DisplayName") -eq "Windows Media Encoder 9 Series"}


 Hive: Microsoft. PowerShell. Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Micros
oft\Windows\CurrentVersion\Uninstall

SKC VC Name Property
--- -- ---- --------
 0 3 Windows Media Encoder 9 {DisplayName, DisplayIcon, UninstallS.
 0 24 {E38C00D0-A68B-4318-A8A6-F7.  { AuthorizedCDFPrefix, Comments, Conta.    

Установка приложений

Класс Win32_Product
можно использовать для удаленной или локальной установки пакетов установщика Windows. При удаленной установке необходимо указать путь к устанавливаемому пакету MSI в виде сетевого UNC-пути, так как подсистема WMI не распознает пути Windows PowerShell. Например, для установки пакета NewPackage.msi, расположенного на общем сетевом ресурсе \\AppServ\dsp на удаленном компьютере PC01, введите в командной строке Windows PowerShell следующую команду:

  (Get-WMIObject -ComputerName PC01 -List | Where-Object -FilterScript {$_. Name -eq "Win32_Product"}). Install(\\AppSrv\dsp\NewPackage.msi)  

Приложения, не использующие технологию установщика Windows, могут поддерживать собственные методы автоматизированного развертывания. Сведения о наличии метода автоматизации развертывания обычно можно найти в документации к приложению или получить в системе технической поддержки его производителя. В отдельных случаях, даже если автоматизация установки не была явно предусмотрена производителем приложения, некоторые методы автоматизации могут поддерживаться производителем ПО установщика.

Удаление приложений

Удаление пакета, установленного при помощи установщика Windows, осуществляется в оболочке Windows PowerShell приблизительно так же, как и установка пакета. В следующем примере выбор пакета для удаления производится на основе его имени, но в отдельных случаях удобнее использовать фильтр IdentifyingNumber
:

  (Get-WmiObject -Class Win32_Product -Filter "Name='ILMerge'" -ComputerName .  ).Uninstall()  

Удаление других приложений несколько сложнее, даже если производится локально. Команды удаления таких приложений из командной строки содержатся в свойстве UninstallString
. Следующий метод пригоден как для приложений, установленных при помощи установщика Windows, так и для старых программ, перечисленных в разделе Uninstall:

  Get-ChildItem -Path Uninstall: | ForEach-Object -Process { $_. GetValue("UninstallString") }  

При необходимости можно отфильтровать вывод по отображаемому имени:

  Get-ChildItem -Path Uninstall: | Where-Object -FilterScript { $_. GetValue("DisplayName") -like "Win*"} | ForEach-Object -Process { $_. GetValue("UninstallString") }  

Однако полученные команды не всегда можно использовать в командной строке Windows PowerShell без изменений.

Обновление приложений, установленных при помощи установщика Windows

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

  (Get-WmiObject -Class Win32_Product -ComputerName .  - Filter "Name='OldAppName'"). Upgrade(\\AppSrv\dsp\OldAppUpgrade.msi)  

Правила для межсетевого экрана

Настройка встроенного межсетевого экрана для Windows Vista

Настройка встроенного межсетевого экрана для Windows XP

Устранение ошибки “Нет доступа”

Диагностика соединения для WMI

Перед чтением основной статьи попробуйте устранить основные типичные проблемы с доступом.

  • Если у Вас есть домен, проведите настройку групповых политик по пунктам 1-3 инструкции
    .
  • Если домена нет, то:

– Для Vista и старше: Отключите Remote UAC
, настройте файервол
.

– Для XP: Настройте файервол
.

Если эти рекомендации не помогли, прочитайте статью или обратитесь в нашу тех. поддержку за бесплатной консультацией.

Устранение типовых проблем с доступом

Для сбора информации на удалённых компьютерах программа использует технологию WMI
(Windows Management Instrumentation) – универсальное средство управления компьютерной системой. В большинстве случаев дополнительной настройки удаленных компьютеров в корпоративных сетях не требуется (при наличии домена и прав администратора). Однако, в целях безопасности доступ к WMI может быть по умолчанию ограничен на части компьютеров. Если не получается считать информацию с компьютеров по WMI, то требуется провести настройки прав доступа и политики безопасности.

ВНИМАНИЕ! Домашние версии ОС Windows не предназначены для работы в корпоративной сети и не поддерживают удалённое выполнение запросов WMI.

Если компьютер включен в сеть
и имеются права администратора
, то, как правило, возникают следующие типовые ошибки:

  1. Ошибка соединения
  2. Причина возникновения ошибки чаще всего заключается в отсутствии настроек, разрешающих удаленное соединение. Службы, через которые работает WMI, не запущены либо попытки соединения по WMI блокируются межсетевым экраном (firewall). Для устранения ошибки необходимо провести предварительные проверки и настроить межсетевой экран (firewall).

  3. Ошибка доступа
  4. Данная ошибка возникает при отсутствии прав на запуск DCOM – доступ непосредственно к WMI, а также при неправильно введенной учетной записи. Для устранения ошибки требуется провести настройки UAC и CIMOM для Windows Vista и более поздних версий
    , а также настроить DCOM.

  5. WMI поврежден.
  6. Иногда случается так, что после установки одного из обновлений Windows WMI перестает работать на сервере или рабочей станции. Если данные не собираются на каком-то компьютере даже локально (при наличии прав администратора), то скорее всего WMI поврежден. Необходимо восстановить WMI на компьютере, где он не работает. Инструкция по восстановлению WMI.

Несмотря на то, что компьютер включен и отвечает на ICMP запросы (Ping), для соединения по WMI этого может быть недостаточно и выдается сообщение. Для работы WMI необходим запуск служб DCOM и RPC, а также разрешение их удаленной работы.

Проверьте запущены ли службы DCOM (dcomlaunch) и RPC (RpcSs).

Если у Вас используется сторонний (не встроенный) межсетевой экран (firewall), то его настройка
производится в соответствии с его документацией. Правила указаны ниже. Настройки межсетевого экрана (firewall) производятся на удаленном компьютере и зависят
от версии ОС.

:/>  Передать параметры cmd

Для Vista и более поздних версий

Для Windows XP

Если используется не встроенный межсетевой экран (firewall)
, то его настройка производится в соответствии с документацией на него. Для работы DCOM на удаленном компьютере откройте порты 135 и 445, а также добавьте модули ПО в список исключений (основной модуль программы и collect.exe ) на локальном компьютере.


Правила для межсетевого экрана

Правила, необходимые для работы на удаленном компьютере:

  1. Для настройки 135-го порта DCOM: модуль – %systemroot%\system32\svchost.exe, сервис – rpcss, действие – разрешить, protocol – TCP, локальный порт 135 (то же самое для порта 445).
  2. Для сервиса WMI: направление – входящие, программа -%systemroot%\system32\svchost.exe, сервис – winmgmt, действие – разрешить, протокол – TCP, локальный порт – любой.
  3. Настройка входящих соединений для обратных вызовов с удаленного компьютера: направление – входящие, программа – %systemroot%\system32\wbem\unsecapp.exe, действие – разрешить.
  4. Настройка исходящих команд WMI (winmgmt): направление – исходящие, программа – %systemroot%\system32\svchost.exe, служба – winmgmt, действие – разрешить, протокол – TCP, локальный порт – любой.


Настройка встроенного межсетевого экрана (firewall) для Windows Vista и более поздних версий Windows

  1. На ” Панели управления
    ” перейдите на вкладку ” Система и безопасность
    “, откройте ” Брандмауэр Windows
    .
  2. Откройте диалог по ссылке ” Разрешить запуск программы или компонента через Брандмауэр Windows
    “.
  3. Установите галочку для ” Инструментарий управления WMI”
    .

Аналогичные действия можно выполнить при помощи команды:

netsh advfirewall firewall set rule group=”windows management instrumentation (wmi)” new enable=yes

Чтобы провести детальную настройку правил, используйте следующие команды:

  1. Для открытия 135-го порта DCOM
  2. netsh advfirewall firewall add rule dir=in name=”DCOM” program=%systemroot%\system32\svchost.exe service=rpcss action=allow protocol=TCP localport=135

  3. Настройка исключений для сервиса WMI (winmgmt)
  4. netsh advfirewall firewall add rule dir=in name =”WMI” program=%systemroot%\system32\svchost.exe service=winmgmt action = allow protocol=TCP localport=any

  5. Настройка входящих соединений для обратных вызовов с удаленного компьютера
  6. netsh advfirewall firewall add rule dir=in name =”UnsecApp” program=%systemroot%\system32\wbem\unsecapp.exe action=allow

  7. Настройка исходящих команд WMI (winmgmt)
  8. netsh advfirewall firewall add rule dir=out name =”WMI_OUT” program=%systemroot%\system32\svchost.exe service=winmgmt action=allow protocol=TCP localport=any


Настройка встроенного межсетевого экрана (firewall) для Windows XP

Разрешение удаленного администрирования

  1. Выберите в меню ” Пуск
    ” пункт ” Выполнить
    “, введите команду ” gpedit.msc
    ” и нажмите кнопку ”
    “.
  2. Последовательно разверните узлы ” Корень консоли
    “, ” Конфигурация компьютера
    “, ” Административные шаблоны”,
    Сеть
    “, ” Сетевые подключения
    “, ” Брандмауэр Windows
    ” и ” Профиль домена
    “.
  3. Правой кнопкой мыши щелкните элемент ” Брандмауэр Windows
    : Разрешать исключения “Элемент управления WMI
    ” и выберите пункт ” Свойства
    “.
  4. Выберите вариант ” Включен
    ” и нажмите кнопку ” ОК
    “.

Можно попробовать также ввести команду:

Открытие порта DCOM

Перед тем как открывать порты в брандмауэре Windows, убедитесь, что в групповой политике включен параметр ” Брандмауэр Windows
“: ” Разрешать локальные исключения для портов
“. Для этого выполните следующие действия:

  1. Выберите в меню ” Пуск
    ” пункт ” Выполнить
    “, введите команду ” gpedit.msc
    ” и нажмите кнопку ”
    “.
  2. Последовательно разверните узлы ” Корень консоли
    “, ” Конфигурация компьютера
    “, ” Административные шаблоны
    “, ” Сеть
    “, ” Сетевые подключения
    “, ” Брандмауэр Windows
    ” и ” Профиль домена
    “.
  3. Правой кнопкой мыши щелкните элемент ” Брандмауэр Windows: Разрешать локальные исключения для портов
    ” и выберите пункт ” Свойства
    “.
  4. Выберите вариант ” Включен
    ” и нажмите кнопку ” ОК
    “.

Модели DCOM сопоставлен TCP-порт 135. Открыть порт можно, выполнив из командной строки следующую команду:

netsh firewall add portopening TCP 135 DCOM_TCP135

                     
  

Настроить исключения для портов можно с помощью параметра "
Брандмауэр Windows: Задать исключения портов ".

Нажмите кнопку "

Пуск
" и выберите пункт "
                    Панель управления                    

".

Дважды щелкните значок "

Брандмауэр Windows

                    
" и откройте вкладку "                    

Исключения

".

Нажмите кнопку " Добавить порт

".

В поле " Имя

” введите ”

DCOM_TCP135

“, а в поле ” Номер порта
” введите ”

135

“.

                    

                    

Выберите вариант порт "

ТСР
                    
" и нажмите кнопку "                    

ОК

".

Нажмите кнопку "

ОК

                    
".                      

Попробуйте также открыть порт 445.

Добавление приложения в список исключений брандмауэра Windows.

Перед добавлением программ в список исключений брандмауэра Windows убедитесь, что в групповой политике включен параметр ” Брандмауэр Windows: Разрешать локальные исключения для программ
“.

  1. Выберите в меню ” Пуск
    ” пункт ” Выполнить
    “. Введите команду ” gpedit.msc
    ” и нажмите кнопку
    .
  2. Последовательно разверните узлы ” Корень консоли
    “, ” Конфигурация компьютера
    “, ” Административные шаблоны
    “, ” Сеть
    “, “Сетевые подключения”, “Брандмауэр Windows” и “Профиль домена”.
  3. Правой кнопкой мыши щелкните элемент ” Брандмауэр Windows: Разрешать локальные исключения для программ
    ” и выберите пункт ” Свойства
    “.
  4. Выберите вариант ” Включен
    ” и нажмите кнопку ОК
    .

Чтобы добавить клиентское приложение в список исключений брандмауэра Windows, выполните из командной строки следующую команду:

netsh firewall add allowedprogram путь_к_программе\NetworkInventoryExplorer.exe NetworkInventoryExplorer ENABLE

Настроить исключения для портов можно с помощью параметра ” Брандмауэр Windows: Задать исключения для программ
“:

  1. Нажмите кнопку ” Пуск
    ” и выберите пункт ” Панель управления
    “.
  2. Дважды щелкните значок ” Брандмауэр Windows
    ” и откройте вкладку ” Исключения
    “.
  3. Нажмите кнопку ” Добавить программу
    “.
  4. Найдите NetworkInventoryExplorer.exe в папке программы (в “Program Files”) и нажмите кнопку ОК
    .
  5. Нажмите кнопку ОК
    .


Устранение ошибки <Нет доступа>

Настройки для
Vista

и более поздних версий
Windows

Начиная с Windows Vista появился контроль учетных записей пользователя (UAC). Для доступа по WMI необходимо отключить удаленный контроль учетный записей.

  1. Откройте редактор реестра.
  2. Нажмите ” Пуск
    ” – ” Выполнить
    “, введите Regedit.exe.
  3. Перейдите на ветку
  4. <HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system\>

  5. Создайте параметр LocalAccountTokenFilterPolicy типа DWORD и пропишите значение равным “1”. Иногда требуется перезагрузка.

Для компьютеров в одном домене или с доверительными отношениями между доменами это значение менять не следует!

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

0 – запрет обратных вызовов

1 – разрешает обратные вызовы. Нужно установить значение равное “1”

Настройки для Windows XP

  1. Для Windows XP не включена классическая модель доступа к ресурсам.
  2. Если на удалённом компьютере в локальных политиках безопасности стоит модель ” Сетевой доступ – модель совместного доступа и безопасности – гостевая
    “, измените модель на “Классическую (обычную)”.

    Настроить данный параметр безопасности можно, открыв соответствующую политику и развернув дерево консоли следующим образом:

    Панель управления\Администрирование\Локальная политика безопасности\Параметры безопасности\Локальные политики\Параметры безопасности\Сетевой доступ – модель совместного доступа и безопасности -> Классическая.

    По умолчанию “Гостевая” модель включена в Windows XP Professional, <Классическая> – в семействе Windows Server 2003 и на компьютерах Windows XP Professional, присоединенных к домену.

  3. Для Windows XP при использовании пустых паролей могут возникнуть проблемы с подключением, если на удалённом компьютере в локальных политиках безопасности включен параметр ” Учётные записи: ограничить использование пустых паролей для консольного ввода
    ” (включено по умолчанию в Windows XP SP2).
  4. Откажитесь от пустых паролей, либо отключите это ограничение. Настроить данный параметр безопасности можно, открыв соответствующую политику и развернув дерево консоли следующим образом:

    Панель управления\Администрирование\Локальная политика безопасности\Параметры безопасности\Локальные политики\Параметры безопасности\Учётные записи: ограничить использование пустых паролей для консольного ввода -> Отключить.

Настройки DCOM в Windows Vista не изменились и настраиваются также как и для Windows XP.


Диагностика соединения по WMI

Вы можете протестировать службу WMI на наличие ошибок. Сделать это можно двумя способами.

  1. В папке “System32\wbem\” есть программа wbemtest.exe. Запустите её.
  2. В окне ” Пространство имен
    ”  нужно ввести: \\<имя компьютера>\root\cimv2 (например, \\SKLAD-13\root\cimv2).
  3. В поля ” Пользователь
    ”  и ” Пароль
    ” введите данные своей учётной записи с правами администратора на удаленном ПК. Желательно попробовать ввести оба варианта Domain name \ username и просто username в качестве логина. Тестовая программа попытается соединиться и выдаст код ошибки. Пришлите
    его нам по email, мы его проанализируем и попытаемся диагностировать проблему.
  1. Скачайте с нашего официального сайта утилиту для диагностики WMI ( https://www.10-strike.com/tools/wmidiag.zip
    ).
  2. Запустите файл WMDiag.vbs.
  3. На экране откроется окно с предупреждением о том, что программа не будет выдавать никаких окон в течение нескольких минут. Нажмите ” ОК
    “.
  4. Подождите 3-4 минуты. После окончания тестирования откроется файл с отчетом. Пожалуйста, сохраните следующие файлы:

    c:\Documents and Settings\<user>\local settings\Temp\wmdiag_*.log

    c:\Documents and Settings\<user>\local settings\Temp\wmdiag_*.txt

    c:\Documents and Settings\<user>\local settings\Temp\wmdiag_*.csv

    Запакуйте их в один архив и отправьте нам
    для диагностики.

  5. Что еще можно посмотреть:

    Настройка WMI на удаленных ПК через групповые политики

    Расшифровка ошибок при опросе WMI

    Посмотреть часто-задаваемые вопросы (FAQ)

Как установить wmi?
Программа “10-Страйк: Инвентаризация Компьютеров” – удаленный опрос и инвентаризация ПК предприятия по сети. Создание отчетов по “железу” и ПО, мониторинг изменений, обнаружение проблем, оповещение администратора. Легко установить и настроить. Возьмите свой парк компьютеров под контроль!

Оставьте комментарий