как узнать какие программы установлены на удаленном компьютере
Список установленных программ по сети
В работе администратора часто возникает необходимость проверить, установлена ли на некотором компьютере в сети определённая программа и какой версии. Например, можно проверить, установлено ли важное обновление Windows или все ли рабочие станции имеют правильную версию Office.
Как это сделать с помощью командных файлов CMD (BAT) или скриптов (на примере VBScript), рассказывается далее.
Идея основана на том факте, что информация об установленных программах находится в системном реестре по адресу:
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\
Указанная ветвь реестра перечисляет только программы, установленные «для всех пользователей», а программы «для этого пользователя» перечислены в ветви:
HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall
В Windows x64 список программ сохраняется также в папке реестра:
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
Соответственно, для получения полного списка потребуется просканировать информацию из всех трёх ветвей реестра.
Например, на VBScript:
Скрипт подключается к компьютеру с сетевым именем strComputer, просматривает раздел реестра SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ и выводит информацию о программах.
Аналогичные действия можно выполнить в командном файле CMD. Этот командный файл выдаёт список программ:
Просмотр установленных программ на удаленной машине?
Мне было интересно, есть ли простой и легкий способ просмотра, какие программы установлены на удаленной машине? Я испытываю желание использовать Spiceworks, но я хотел бы что-то более легкое, как сценарий. Я немного поигрался с WMIC и могу получить список программ для своего компьютера, но я не знаю, смогу ли я сделать то же самое с ним для удаленного компьютера. Есть идеи?
Изменить: Извините, что я забыл ОС, мы используем в основном Windows XP и 7, я использую Windows 7. Я ищу что-то для запуска в фоновом режиме без пользователя, который в настоящее время использует компьютер, зная. Я хотел бы иметь возможность делать это в течение рабочего дня, пока люди работают и делают это, не прерывая их. Я ценю ответы Linux, так как я пытаюсь узнать больше о Linux и планирую лично измениться через некоторое время.
Вы можете использовать один из инструментов Sysinternals PSinfo:
PsInfo возвращает информацию о локальной или удаленной системе Windows NT / 2000 / XP.
фильтр. например, «psinfo service» перечисляет только поле пакета обновления. computer Направьте PsInfo для выполнения команды на удаленном компьютере или указанных компьютерах. Если вы опускаете имя компьютера, PsInfo запускает команду в локальной системе, и если вы указываете шаблон (\ *), PsInfo запускает команду на всех компьютерах в текущем домене. @file PsInfo будет работать на компьютерах, указанных в указанном файле.
скажет вам, что установлено на удаленном компьютере.
Как посмотреть список процессов в Windows на удаленном компьютере
Бывает так, что нам нужно посмотреть, запущена та или иная программа на удаленном компьютере. Просто и быстро. Без стороннего софта. Ну или по каким-то другим причинам посмотреть запущенные процессы.
Если говорить о локальном компьютере, то абсолютное большинство использует для мониторинга процессов Windows Диспетчер задач. Но вот в случае с удаленным компьютером он нам не помощник. Рассмотрим очень простой способ.
tasklist [/S имя_удаленного_компьютера [/U имя_пользователя [/P пароль]]] [/M модуль | /SVC | /V] [/FI фильтр] [/FO формат] [/NH]
/S — необходимо указать имя удаленного компьютера, если подключаемся к такому. Для локального компьютера не указывается;
/U — имя пользователя, от которого будут просматриваться процессы. Пользователь должен быть администратором;
/P — пароль от указанной учетной записи пользователя, если пароль не указан, будет выполнен запрос на ввод пароля;
/M — отображение всех процессов, которые используют указанное имя. Если не задано, будут отображаться все процессы;
/SVC — отображение служб для каждого процесса;
/V — ведение подробного протоколирования;
/FI — отображение процессов, которые соответствуют указанному фильтру;
Таким образом, если нам просто нужно посмотреть список запущенных процессов на локальном компьютере, то достаточно просто набрать
Пример вывода команды tasklist.
Если же мы хотим посмотреть процессы на удаленном компьютере (например, с именем Test-PC), то команда должна выглядеть следующим образом:
Использование фильтров в команде tasklist.
Начнем с того, что фильтр заключается в кавычки. Далее идёт очень простая схема:
[имя_фильтра] [оператор] [значение]
Есть ограниченное число имён фильтров, операторов и значений. Они в таблице ниже.
Имя фильтра | Допустимые операторы | Допустимые значения | Описание |
STATUS | eq, ne | RUNNING, SUSPENDED, NOT RESPONDING, UNKNOWN | Статус процесса |
IMAGENAME | eq, ne | Имя (часть имени) процесса(-ов) | Подходящие по наименованию процессы |
PID | eq, ne, gt, lt, ge, le | Значение PID | Идентификатор процесса |
SESSION | eq, ne, gt, lt, ge, le | Номер сеанса | Номер сеанса в Windows |
SESSIONNAME | eq, ne | Имя сеанса | Имя сеанса в Windows |
CPUTIME | eq, ne, gt, lt, ge, le | Время ЦП в формате чч:мм:сс (часы:минуты:секунды) | Время обработки задачи |
MEMUSAGE | eq, ne, gt, lt, ge, le | Используемая ОЗУ (в КБ) | Размер используемой задачей оперативной памяти |
USERNAME | eq, ne | Имя пользователя | Пользователь, из-под которого запущен процесс |
SERVICES | eq, ne | Имя службы | Используемые службы |
WINDOWTITLE | eq, ne | Заголовок окна | Заголовок окна процесса |
MODULES | eq, ne | Имя dll (динамически подключаемой библиотеки) | Используемые библиотеки |
Отметим, что для удаленных компьютеров не действуют фильтры «WINDOWTITLE» и «STATUS».
Используемые операторы сравнения означают следующее:
eq — равно;
ne — не равно;
gt — больше;
lt — меньше;
ge — больше или равно;
le — меньше или равно.
Синтаксис фильтров является, пожалуй, самой сложной частью. Все следующие примеры проще. Тот же просмотр служб, относящихся к задачам, вызывается следующей командой:
Просмотр используемых служб в команде tasklist.
Если мы хотим вывести информацию в файл, то нужно использовать параметр /FO. Конечно же, у вас должны быть права на запись в каталог, куда вы хотите поместить файл с выводимой информацией. Команда
Что, если нам надо посмотреть какие процессы используют определенную dll-библиотеку? Например, библиотеку cfgmgr32.dll. Это можно сделать командой
Получить данные об установленных программах из удалённого реестра
Turbopascal7 нет в установленных программах
Установил Turbopascal7,но его нет в установленных программах.так и должно быть?Кстати не в тему,но.
Запись информации в файл о установленных программах на ПК
В ходе работе появилась надобность вывести информацию о установленных программах на ПК не в.
Информация о всех компонентах и установленных программах
Добрый день товарищи! Есть скрипт, он собирает информацию о всех установленных компонентах и.
Получить данные из mySLQ с удаленного сервера
У меня на сайте есть база данных, подскажите как с ней работать? Можно пример? Нигде не нашел
мне же что бы вывести displayname, нужно в каждую папку реестра зайти, то есть если я укажу полный путь до определенного установленного приложения, то он вернет мне displayName в текстовый файл на выходе.
помогите, как сделать поиск по всем веткам?
Добавлено через 16 минут
Попробовал сюда добавить *, для поиска во всех папках ветки, не получилось
SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninst all\*
Решение
greg zakharov, спасибо большое за помощь!! буду пробовать!
Добавлено через 3 часа 45 минут
greg zakharov, скажите пожалуйста, а можно брать имена компьютеров из текстового файла?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Получить данные из реестра
Имеются данные в реестре в разделе секции автозагрузки. Необходимо получить значение ключей и.
За что может отвечать файл с расширением *.chk в установленных программах
Вот например в кабе от томтома 7 для кпк имеется файл data.chk и после того как заинсталлить.
Получить Бинарные данные с реестра wmi
const long HKLM = 0x80000002;//HKEY_LOCAL_MACHINE String strKey =.
Сбор данных об установленных программах во всем AD с Powershell
Для сбора списка программ используя Powershell есть много методов. Это может быть win32_product, команда Get-AppxPackage и многие другие. У большинства методов есть два минуса:
Для обхода этих проблем, в примерах ниже, будет использоваться способ используя ключ реестра. Конечной целью будет получения списка всех программ со всего AD и последующий экспорт CSV (Excel). Так же будет показан способ исключения из списка тех программ, которые являются стандартными для компании.
Навигация по посту
Получение списка программ
Ключ реестра, который содержит все программы следующий:
Список программ можно получить так:
Если взглянуть на вывод, то можно подумать, что нам нужно свойство Name, так как оно лучше всего соответствует названию программы, но этот выбор будет некорректный. Вместо значений свойства Name можно увидеть идентификаторы приложения, а вот DisplayName выглядит корректно:
В примерах ниже я буду получать только значения из колонки Property DisplayName и DisplayVersion. Вы легко можете добавить другие значения, если вас заинтересуют, сами.
Команда, которая вернет только версию и отображаемое имя:
Примеры скриптов проверяются на Windows Server 2019 и Windows 10. На серверной версии появляются пустые строки связанные с нестандартными объектами:
Я решил их не включать в список программ, так как они относятся к системным программам установленными вместе с ОС. Скрипт, который исключит их, выглядит так:
Удаленное подключение к компьютерам
Так как скрипт должен подключаться к удаленным компьютерам я добавлю командлет PSRemoting (WinRM). Эта технология нуждается в предварительных настройках. В доменных сетях, при использовании DNS имен компьютеров, может все сработать и без этого. Проверить работу этой возможности с помощью следующего командлета:
Если у вас появляются ошибки, то советую проверить, что консоль Powershell запущена от имени администратора и служба включена:
Используя только описанные методы у нас получится достаточно сложный скрипт, который будет иметь следующую логику:
Что бы избежать такого сложно читаемого кода я объединю все это в одну функцию-командлет.
Создание командлета
Команда, которая вернет список программ с любого компьютера будет выглядеть так:
Если вы планировали добавить больше, а не только имя и версию, то его нужно добавить в месте на скриншоте:
После этого мы сможем получать наш список следующими способами:
Отмечу, что команда Get-Programs перестанет работать после завершения сессии пользователя и затем ее понадобится объявлять заново. Если вы хотите что бы они импортировались автоматически почитайте конец статьи «Как создавать команды и функции в Powershell вызывать их и передавать параметры».
Исключение программ
Исключить определенные программы мы можем по нескольким причинам. Это могут быть:
Я создал следующий список:
Использование знака * в названиях говорит, что в этой части строки может находится еще текст, но не обязательно.
Для исключения программ я сделал еще один командлет, который будет принимать 2 параметра:
Теперь мы можем исключать программы так:
Получение списка компьютеров
Следующая команда вернет список всех компьютеров которые есть в AD:
Она сработает в случаях если у вас установлен RSAT, импортирован модуль AD или вы на сервере с AD.
Следующим способом мы получим только имена компьютеров:
Мы можем использовать эту команду без дополнительных параметров, но могут быть ошибки:
Если не учитывать особенности вашей инфраструктуры, то причины в основном 3:
О третьей причине мы уже говорили. Что касается первых двух мы можем их решить.
В случае если отключены учетные записи компьютеров, то отфильтровать их можно так:
Выключенные компьютеры можно проверить через команду Test-NetConnection (аналог ping):
Плюсы метода выше в том, что вы получите список компьютеров, которые оффлайн. Минусы в том, что вы не можете изменить время возвращения ответа на ICMP пакет, а оно будет длиться 3-7 секунд.
Экспорт данных в CSV и открытие в Excel
Команда, которая эскортирует данные, называется Export-CSV. Если вы не исключаете программы, то можете выполнить ее так:
В нашем случае файл будет сохранен на диске C, под именем programs.csv. При появлении ошибок при экспорте с кодировками, делиметром (разделителем), до записью вы можете попробовать исправить прочитав эту статью «Powershell экспорт и запись в CSV файл».
Если вы исключаете программы, то можете выполнить ее так:
Открыв Excel и выбрав следующий пункт выберете файл в проводнике:
В новом окне посмотреть на разделитель, который используется, и нажать «Далее»:
Выбрать разделитель (будет либо запятая или точка-запятая):
Результат будет примерно следующим:
Если выделить шапку (как в примере выше) и нажать «Фильтр», то сможете более удобно фильтровать результат.