Назад | Перейти на главную страницу

Просмотреть установленные программы на удаленной машине?

Мне было интересно, есть ли простой и легкий способ просмотреть, какие программы установлены на удаленном компьютере? У меня возникает соблазн использовать Spiceworks, но я бы хотел что-то более легкое, например скрипт. Я немного поигрался с WMIC и могу получить список программ для своего компьютера, но не знаю, смогу ли я сделать то же самое с ним для удаленного компьютера. Любые идеи?

Изменить: извините, что я забыл ОС, мы используем в основном Windows XP и 7, я использую Windows 7. Я ищу что-то, что будет работать в фоновом режиме без ведома пользователя, который в настоящее время использует компьютер. Я хотел бы иметь возможность делать это в течение рабочего дня, пока люди работают, и делать это, не отвлекая их. Я ценю ответы Linux, так как я пытаюсь узнать больше о Linux и планирую когда-нибудь лично что-то изменить.

Вы можете использовать один из инструментов Sysinternals PSinfo:

http://technet.microsoft.com/en-us/sysinternals/bb897550

PsInfo v1.77 - Программа просмотра локальной и удаленной системной информации Copyright (C) 2001-2009 Mark Russinovich Sysinternals - www.sysinternals.com

PsInfo возвращает информацию о локальной или удаленной системе Windows NT / 2000 / XP.

Использование: psinfo [-h] [-s] [-d] [-c [-t delimiter]] [filter] [\ computer [, computer [, ..]] | @file [-u Имя пользователя [-p Пароль ]]]

 -u        Specifies optional user name for login to
           remote computer.
 -p        Specifies password for user name.
 -h        Show installed hotfixes.
 -s        Show installed software.
 -d        Show disk volume information.
 -c        Print in CSV format
 -t        The default delimiter for the -c option is a comma,
           but can be overriden with the specified character. Use
           "\t" to specify tab.
 filter    Psinfo will only show data for the field matching the

фильтр. например «psinfo service» перечисляет только поле пакета обновления. компьютер Направьте PsInfo для выполнения команды на указанном удаленном компьютере или компьютерах. Если вы опустите имя компьютера, PsInfo запустит команду в локальной системе, а если вы укажете подстановочный знак (\ *), PsInfo запустит команду на всех компьютерах в текущем домене. @file PsInfo будет работать с компьютерами, перечисленными в указанном файле.

Выдача

PSinfo -s \\ имя_компьютера

расскажет, что установлено на удаленном компьютере.

В дистрибутиве Linux на основе rpm вы можете запустить следующее:

ssh <user-who-can-run-rpm>@<remote.host> 'rpm -qa | sort'

Для дистрибутива на основе deb передайте это команде ssh:

'dpkg-query -l | sort'

Для Gentoo (согласно предоставленному комментарию от Монкси):

'qpkg -I | sort'

Для Solaris:

'pkginfo -i | sort'

И в AIX:

'lslpp -a all | sort'

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

Также можно использовать SNMP - вам просто нужно настроить сообщество только для чтения. Вам необходимо просмотреть установленную hrSW таблицу: snamwalk -c public -v2c server_IP hrSWInstalled

Смотрите также: http://technet.microsoft.com/en-us/library/bb742610.aspx

Вот сценарий PowerShell, который подключается к разделу реестра HKLM \ Software \ Microsoft \ Windows \ Uninstall, извлекает ключи, получает их отображаемые имена и отправляет их в текстовый файл.

$temparray=@()
$MachineName = 'somecomputername'
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::'LocalMachine', $MachineName)

#connect to the needed key :

$regKey= $reg.OpenSubKey("software\Microsoft\Windows\currentversion\uninstall\" )

#and list the properties :

$programs = $regkey.GetSubKeyNames()
foreach ($program in $programs)
{   
    $regKey2 = $regKey.OpenSubKey($program)

    $temparray +=  $regKey2.GetValue("DisplayName")
}
$temparray |Sort-Object |Out-File -FilePath "C:\testinstalledprograms.txt" -Force

Есть миллион программ, которые это сделают. Некоторые более легкие и легкие, чем другие.

Вот лишь одна из бесчисленных программ, которые это делают:

http://managepc.net/

Если это компьютер с Windows, вы можете запустить «WinAudit» (бесплатно, просто найдите его) в запланированном задании. Он генерирует отчеты в формате HTML или текстовые отчеты и тому подобное, которые можно сохранять на сетевой диск и просматривать с удаленного компьютера.

ИЛИ:

Удаленного рабочего стола. Вы подключаетесь и используете его, как если бы это был локальный компьютер. Работает и в * nix.

Вы можете использовать WMI из PowerShell:

gwmi win32_product -ComputerName Computer1