Список установленных программ (CMD)
Добавлено: 10 ноя 2011, 12:25
В командном файле тоже можно получить список установленных программ через просмотра реестра, как и в VBS (viewtopic.php?f=6&t=14).
Причём, используя доступ по сети (с соответствующими полномочиями, конечно), можно просматривать список установленных программ и на других компьютерах. Это даёт администратору большие возможности: например, легко проверить, на всех ли компьютерах установлено необходимое обновление Windows или, наоборот, везде ли удалена какая-то конфликтующая программа.
Получить список программ можно следующим командным файлом:
Для проверки того, установлена ли программа на каком-то одном компьютере, можно использовать следующий командный файл check-app-pc.cmd
Параметры запуска описаны в комментариях. Например, при таком запуске:будет выполнена проверка, установлено ли обновление KB2570791 (viewtopic.php?f=6&t=1957) на компьютере WS_ALEX. Вывод командного файла будет 'KB2570791' program installed или 'KB2570791' program not found, также код возврата будет 0 или другой.
Теперь можно автоматизировать работу этого командного файла, добавив проверку большего количества компьютеров по списку. Для этого создаём командный файл check-app-pclist.cmd с циклом, перебирающим строчки текстового файла с сетевыми именами компьютеров.Пример списка файлов pc.list
Теперь запускаем командный файл, передав ему этот список:Командный файл проверит, установлено ли обновление KB2570791 на каждом компьютере, перечисленном в файле pc.list.
Причём, используя доступ по сети (с соответствующими полномочиями, конечно), можно просматривать список установленных программ и на других компьютерах. Это даёт администратору большие возможности: например, легко проверить, на всех ли компьютерах установлено необходимое обновление Windows или, наоборот, везде ли удалена какая-то конфликтующая программа.
Получить список программ можно следующим командным файлом:
Код: Выделить всё
@echo off
rem Этот командный файл записывает список программ, установленных на
rem удалённом компьютере.
rem %1 Сетевое имя компьютера в формате PCNAME (пустое значение означает
rem локальный компьютер).
rem Определяем путь к папке реестра
set reg_key=hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
if not "%1" == "" set reg_key=\\%~1\%reg_key%
rem Перебираем установленные программы
for /F %%a in ('reg query "%reg_key%"') do ^
for /F "tokens=1,2*" %%b in ('reg query "%%a"') do ^
if "%%b"=="DisplayName" echo %%d
Код: Выделить всё
@echo off
rem Этот командный файл проверяет, установлена ли заданная программа на
rem удалённом компьютере.
rem %1 Полное название программы или часть названия, например, KB2570791.
rem %2 Сетевое имя компьютера в формате PCNAME (пустое значение означает
rem локальный компьютер).
rem Возвращаемые коды:
rem 0 Программа установлена.
rem 2 Программа не найдена.
rem 87 Ошибка в параметрах.
setlocal enabledelayedexpansion
rem Определяем путь к папке реестра
if "%~1" == "" exit /b 87
set reg_key=hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
if not "%2" == "" set reg_key=\\%~2\%reg_key%
rem Перебираем установленные программы
for /F %%i in ('reg query "%reg_key%"') do (
reg query "%%i" /v "DisplayName" 2>&1 | findstr /I "%~1" >nul
if "!errorlevel!" == "0" echo '%~1' program installed. && exit /b 0
)
echo '%~1' program not found && exit /b 2
Код: Выделить всё
check-app-pc.cmd KB2570791 ws_alex
Теперь можно автоматизировать работу этого командного файла, добавив проверку большего количества компьютеров по списку. Для этого создаём командный файл check-app-pclist.cmd с циклом, перебирающим строчки текстового файла с сетевыми именами компьютеров.
Код: Выделить всё
@echo off
rem %1 Полное название программы или часть названия программы.
rem %2 Имя файла со списком компьютеров.
rem Примечание: этот командный файл использует check-app-pclist.cmd
if "%~1" == "" exit /b 87
if not exist %2 exit /b 2
for /F %%a in (%2) do (
echo %%a...
call check-app-pc.cmd %1 %%a
)
Код: Выделить всё
SERVER_DB
SERVER_FILES
WS_ALEX
WS_RECEPTION
Код: Выделить всё
check-app-pclist.cmd KB2570791 pc.list