В этой инструкции мы покажем несколько способов получить список установленных программ в Windows 10, Windows 8 или Windows 7 с помощью командной строки. Эта методика построения списка программ в системе может пригодиться перед переустановкой системы, когда нужно найти нежелательное ПО или при выполнении инвентаризации установленного ПО на компьютерах организации.
Рассмотрим два способа: первый подразумевает использование командной строки и утилиты wmic, второй — PowerShell.
Вывод списка программ с помощью утилиты командной строки WMIC
Список установленных в системе программ может быть получен с помощью утилиты командной строки WMIC, через которую можно обратиться и опросить пространство имен WMI. Запустите командную строку с правами администратора и выполните команду:
wmic product get name,version
После небольшого ожидания, на экран консоли будет выведен список названий и версия установленных в системе программ.
Этот список можно экспортировать в текстовый файл с помощью команды:
wmic product get name,version /format:csv > c:\Temp\Programs_%Computername%.csv
Вывод списка программ через Windows PowerShell
Список установленных программ также может быть получен с помощью PowerShell. Идея метода в том, что список установленных программ, который мы видим в списке Programs and Features
Панели Управления, строится на основе данных, хранящихся в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Наша задача – вывести содержимое данной ветки реестра. Итак, запустите консоль Powershell и выполните команду:
Как вы видите, в результирующем списке содержится имя программы, версия, разработчик и дата установки.
Совет
. Для 32-битных приложений на x64 версиях Windows, также нужно брать данные из ветки HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
Экспортировать полученный список в csv файл можно так:
Рассмотренный выше способ позволяет вывести данные только о классический Windows приложениях. Чтобы вывести список установленных Metro приложений, воспользуйтесь командой:
Чтобы получить список установленного ПО на удаленном компьютере (к примеру, с именем wks_name11), воспользуемся командлетом Invoke-command
:
Compare-Object –ReferenceObject (Get-Content C:\temp\installed-software.txt) –DifferenceObject (Get-Content C:\temp\installed-software2.txt)
В нашем примере в двух сравниваемых списках имеются различия в двух программах.
Другой способ вывести список установленных программ – воспользоваться командлетом Get-WmiObject, также позволяющего обращаться с пространству WMI:
Здравствуйте, уважаемые читатели! Некоторые из вас возможно задавались вопросом как удалить программу на удаленном компьютере
. Рядовому пользователю это скорей всего не нужно, а системному администратору какой-нибудь локальной сети это может понадобиться.
Для удаления и установки ПО на удаленных компьютерах существует множество различных решений и программных средств. В этой статье мы рассмотрим решение данного вопроса на основе встроенных средств windows.
Удалять программы на удаленных машинах нам поможет Windows Management Instrumentation
или проще говоря WMI
. В переводе на русский это инструментарий управления Windows
.
Как запустить wmi
Запуск wmi выполняется из командной строки. Открыть командную строку можно из "Пуск -> Все программы -> Стандартные -> Командная строка"
, либо просто нажимаете клавиши "WIN + R"
, откроется окно "Выполнить"
в котором в поле "открыть"
набираете "cmd"
и нажимаете "OK"
.
В открывшемся окне командной строки набираем команду wmic
и нажимаем "Enter"
:
Таким образом мы запустили консольную утилиту для взаимодействия со структурой WMI на локальном или удаленном компьютере. Теперь с помощью язык запросов WMI Query Language
(WQL) можно выполнять различные команды WMI.
Для примера получим весь список установленного ПО на удаленном компьютере
. Для этого выполняем следующий запрос:
Как удалить программу с помощью 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
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами разобрали основные понятия Active Directory
и рассмотрели его структуру. Идем дальше и сегодня я хочу вас научить выводить список установленных программ в Windows 11
, но данные методы подойдут и для любой другой версии. Данная задача может перед вами появиться, когда нужно будет сделать некую инвентаризацию приложений на ваших серверах или рабочих станциях или убедиться есть ли у пользователя та или иная программа для работы.
Для чего это нужно?
- Инвентаризация программного обеспечения – очень часто в организациях любят давать пользователям права на рабочую станцию, что в последствии ведет к тому. что пользователь может наставить кучу разного ПО, и не всегда лицензионного.
- Перед переустановкой системы – Это то же может вас с подвигнуть к получению списку установленных программ в Windows 11 и предыдущих версий, чтобы пользователь получая свежую систему смог там обнаружить свое привычное окружение. Очень подойдет для формирования скрипта Winget.
- Создание списка стандартных приложений для компании – такое то же часто бывает, что компания хочет ввести стандарты, что можно использовать, а что нет. Для этого логично, что необходимо иметь список.
Как вывести список установленных программ через Winget
Winget
– это новая утилита командной строки, которая появилась в Windows 10
и позволяет производить установку программ через интернет из репозитория Microsoft. Но она так же умеет показывать список всех установленных пакетов и приложений. Для этого вызовите командную строку
или оболочку PowerShell
и введите команду:
На выходе вы получите общий список программ, которые есть в вашей Windows 11, обратите внимание, что тут будут и GUID
приложений, они идут в столбце “ИД”, а так же версия программы.
Если хотите сохранить весь список в текстовый файл, то воспользуйтесь такой конструкцией, не забываем только указать свой путь, где сохранять файл:
winget list > C:\temp\list-app.txt
Вывод списка программ с помощью утилиты WMIC
WMIC.exe
– это служебная программа командной строки и оболочки PowerShell, которая используется для доступа к инструментарию управления Windows. Через WMIC можно легко получить список установленных в системе программ, она сделает это через пространство имен WMI, так сказать опросит его. Запускать описанную ниже команду вы можете как через командную строку, так и через PowerShell, я воспользуюсь последним, он выглядит позитивнее:
wmic product get name,version
Вот так будет выглядеть полученный список в виде двух столбцов (Name и Version). Хочу отметить, что обращение к WMI может занимать секунд 30 и более, так что не пугайтесь, что информация не отобразилась сразу.
Для того, чтобы экспортировать полученный список программ, вам нужно использовать вот такую конструкцию:
wmic product get name,version > C:\Temp\install-app.txt
В результате у меня будет сформирован текстовый файл содержащий весь список программ из моей системы Windows 11.
Пре желании вы можете произвести выгрузку и в CSV
формате, для это введите:
wmic product get name,version /format:csv > C:\Temp\install-app.csv
Тут еще будет добавлено поле Node, содержащее имя компьютера откуда была произведена выгрузка списка.
Как получить список установленных программ Windows через PowerShell
Я вам не перестаю напоминать, что все, что вы видите в графическом виде операционной системы Windows 10 или Windows 11 имеет свой аналог в виде ключа реестра или ветки. Список установленных приложений в этом не исключение, все данные есть в реестре Windows. Приведу пример, когда вы открываете окно ” Программы и компоненты
” (Которое можно открыть через оснастку appwiz.cpl
)
Или параметрах Windows ” Приложения и возможности
” , то весь этот список есть в разделе реестра, к которому легко можно обратиться и получить его, в этом и заключается суть метода.
Сам раздел реестра содержащий список программ установленных в Windows 10 или Windows 11 располагается по пути:
Я вам для примера покажу данный раздел, но вы тут мало, что сможете понять, так как тут за место названия приложения идет его GUID, для Windows 11 так проще, машина так понимает лучше, но PowerShell легко это конвертирует в читаемый вид.
В оболочке PowrShell введите команду, которая вам сделает запрос к реестру и вытянет от туда список всех программ, что есть в системе. Нам поможет командлет Get-ItemProperty
.
Чтобы сохранить данный список в текстовый файл, то нужно добавить командлет Out-File.
Чтобы сохранить данный список в CSV файл, то нужно добавить командлет Export-Csv
.
У PowerShell есть небольшое ограничение по командам указанным выше, так как приложения установленные из магазина Windows не попадают в данную ветку реестра, и чтобы получить их список вам нужно уже запросить список установленных пакетов Windows 11, сказано, сделано:
Ну и напомню использование командлета 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
Получение списка установленных программ через стороннее ПО
Сейчас многие программы по оптимизации и удалению ПО способны формировать и показывать список установленных программ. Приведу несколько примеров, первым будет утилита CCleaner
которую мы использовали для удаления мусора с компьютера.
- Для получения списка программ Windows в CCleaner переходим в раздел ” Инструменты
“. - Теперь в правом нижнем углу нажмите кнопку ” Сохранить в текстовый файл
”
Что самое превосходное, так это то, что CCleaner сохраняет в списке программы установленные из магазина и программы для рабочего стола
Указываем место куда мы сохраним данный файл
Открываем файл и проверяем, что в нем присутствует весь список установленных программ.
Второй утилитой с помощью которой вы легко получите список установленного ПО будет бесплатная UninstallView
, которая входит в состав пакета утилит NirLauncher
.
Загрузить UninstallView – https://www.nirsoft.net/utils/uninstall_view.html
Когда вы запустите UninstallView вы сразу увидите все программы, что установлены в вашей операционной системе Windows.
Чтобы получить данный список в виде файла, нам необходимо его выгрузить. Для этого выберите в меню ” View – HTML Report – All items
”
В результате вы получите вот такой удобный список с большим количеством последних столбцов.
На этом у меня все, вы сами можете выбрать удобный для себя метод получения списка установленных программ в Windows 11. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

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:
- Press Windows Key + X
and select Command Prompt (Admin)
from the list to open an elevated command prompt. - 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
Using the Mofcomp Tool - Please make sure that you replace ‘ number
’ with your SQL Server version. - Once done, press Windows Key + R
to open Run
. - Type in ‘ services.msc
’ and press Enter
. - Search for the Windows Management Instrumentation
service. - Щелкните правой кнопкой мыши и выберите Перезагрузить
.Перезапуск службы WMI - Проверьте, решает ли это вашу проблему.
Решение 2. Изменение разрешений ключа реестра Windows
- Нажмите Клавиша Windows + R
чтобы открыть Бег
диалоговое окно. - Введите ‘ regedit
’, а затем нажмите Enter
. - Затем вставьте в адресную строку следующий путь: Computer\HKEY_CLASSES_ROOT\CLSID\{73E709EA-5D93-4B2E-BBB0-99B7938DA9E4}
- Щелкните правой кнопкой мыши {73E709EA-5D93-4B2E-BBB0-99B7938DA9E4}
и выберите Разрешения
.Изменение разрешений - Нажмите Добавить
а затем введите Сетевая служба
под ‘ Введите имена объектов для выбора
’. - Затем нажмите Проверить имена
а затем нажмите ОК
.Добавление учетной записи сетевой службы - Подсветка Сетевая служба
и убедитесь, что Полный доступ
флажок установлен.Разрешения учетной записи сетевой службы - Нажмите Применить
а затем нажмите ОК
. - Перезагрузите систему и посмотрите, решит ли это проблему.
Кевин Эрроуз
Кевин Эрроуз — опытный и знающий специалист по технологиям с более чем десятилетним опытом работы в отрасли. Он имеет сертификат 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. Этот метод работает намного быстрее, чем при использовании
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.
Если компьютер включен в сеть
и имеются права администратора
, то, как правило, возникают следующие типовые ошибки:
- Ошибка соединения
- Ошибка доступа
- WMI поврежден.
Причина возникновения ошибки чаще всего заключается в отсутствии настроек, разрешающих удаленное соединение. Службы, через которые работает WMI, не запущены либо попытки соединения по WMI блокируются межсетевым экраном (firewall). Для устранения ошибки необходимо провести предварительные проверки и настроить межсетевой экран (firewall).
Данная ошибка возникает при отсутствии прав на запуск DCOM – доступ непосредственно к WMI, а также при неправильно введенной учетной записи. Для устранения ошибки требуется провести настройки UAC и CIMOM для Windows Vista и более поздних версий
, а также настроить DCOM.
Иногда случается так, что после установки одного из обновлений Windows WMI перестает работать на сервере или рабочей станции. Если данные не собираются на каком-то компьютере даже локально (при наличии прав администратора), то скорее всего WMI поврежден. Необходимо восстановить WMI на компьютере, где он не работает. Инструкция по восстановлению WMI.
Несмотря на то, что компьютер включен и отвечает на ICMP запросы (Ping), для соединения по WMI этого может быть недостаточно и выдается сообщение. Для работы WMI необходим запуск служб DCOM и RPC, а также разрешение их удаленной работы.
Проверьте запущены ли службы DCOM (dcomlaunch) и RPC (RpcSs).
Если у Вас используется сторонний (не встроенный) межсетевой экран (firewall), то его настройка
производится в соответствии с его документацией. Правила указаны ниже. Настройки межсетевого экрана (firewall) производятся на удаленном компьютере и зависят
от версии ОС.
– Для Vista и более поздних версий
– Для Windows XP
Если используется не встроенный межсетевой экран (firewall)
, то его настройка производится в соответствии с документацией на него. Для работы DCOM на удаленном компьютере откройте порты 135 и 445, а также добавьте модули ПО в список исключений (основной модуль программы и collect.exe ) на локальном компьютере.
Правила для межсетевого экрана
Правила, необходимые для работы на удаленном компьютере:
- Для настройки 135-го порта DCOM: модуль – %systemroot%\system32\svchost.exe, сервис – rpcss, действие – разрешить, protocol – TCP, локальный порт 135 (то же самое для порта 445).
- Для сервиса WMI: направление – входящие, программа -%systemroot%\system32\svchost.exe, сервис – winmgmt, действие – разрешить, протокол – TCP, локальный порт – любой.
- Настройка входящих соединений для обратных вызовов с удаленного компьютера: направление – входящие, программа – %systemroot%\system32\wbem\unsecapp.exe, действие – разрешить.
- Настройка исходящих команд WMI (winmgmt): направление – исходящие, программа – %systemroot%\system32\svchost.exe, служба – winmgmt, действие – разрешить, протокол – TCP, локальный порт – любой.
Настройка встроенного межсетевого экрана (firewall) для Windows Vista и более поздних версий Windows
- На ” Панели управления
” перейдите на вкладку ” Система и безопасность
“, откройте ” Брандмауэр Windows
” . - Откройте диалог по ссылке ” Разрешить запуск программы или компонента через Брандмауэр Windows
“. - Установите галочку для ” Инструментарий управления WMI”
.
Аналогичные действия можно выполнить при помощи команды:
netsh advfirewall firewall set rule group=”windows management instrumentation (wmi)” new enable=yes
Чтобы провести детальную настройку правил, используйте следующие команды:
- Для открытия 135-го порта DCOM
- Настройка исключений для сервиса WMI (winmgmt)
- Настройка входящих соединений для обратных вызовов с удаленного компьютера
- Настройка исходящих команд WMI (winmgmt)
netsh advfirewall firewall add rule dir=in name=”DCOM” program=%systemroot%\system32\svchost.exe service=rpcss action=allow protocol=TCP localport=135
netsh advfirewall firewall add rule dir=in name =”WMI” program=%systemroot%\system32\svchost.exe service=winmgmt action = allow protocol=TCP localport=any
netsh advfirewall firewall add rule dir=in name =”UnsecApp” program=%systemroot%\system32\wbem\unsecapp.exe action=allow
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
Разрешение удаленного администрирования
- Выберите в меню ” Пуск
” пункт ” Выполнить
“, введите команду ” gpedit.msc
” и нажмите кнопку ” OК
“. - Последовательно разверните узлы ” Корень консоли
“, ” Конфигурация компьютера
“, ” Административные шаблоны”,
” Сеть
“, ” Сетевые подключения
“, ” Брандмауэр Windows
” и ” Профиль домена
“. - Правой кнопкой мыши щелкните элемент ” Брандмауэр Windows
: Разрешать исключения “Элемент управления WMI
” и выберите пункт ” Свойства
“. - Выберите вариант ” Включен
” и нажмите кнопку ” ОК
“.
Можно попробовать также ввести команду:
Открытие порта DCOM
Перед тем как открывать порты в брандмауэре Windows, убедитесь, что в групповой политике включен параметр ” Брандмауэр Windows
“: ” Разрешать локальные исключения для портов
“. Для этого выполните следующие действия:
- Выберите в меню ” Пуск
” пункт ” Выполнить
“, введите команду ” gpedit.msc
” и нажмите кнопку ” OК
“. - Последовательно разверните узлы ” Корень консоли
“, ” Конфигурация компьютера
“, ” Административные шаблоны
“, ” Сеть
“, ” Сетевые подключения
“, ” Брандмауэр Windows
” и ” Профиль домена
“. - Правой кнопкой мыши щелкните элемент ” Брандмауэр Windows: Разрешать локальные исключения для портов
” и выберите пункт ” Свойства
“. - Выберите вариант ” Включен
” и нажмите кнопку ” ОК
“.
Модели DCOM сопоставлен TCP-порт 135. Открыть порт можно, выполнив из командной строки следующую команду:
netsh firewall add portopening TCP 135 DCOM_TCP135