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

19

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

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

Mobojo
источник
7
Это помогло бы узнать ОС машины.
ℝaphink
Почему просто программы? В системе могут быть другие материалы, защищенные авторским правом (файлы шрифтов и mp3-файлы являются очевидными случаями)
symcbean
@symcbean Моя основная причина спрашивать о лицензировании. У нас есть пара программ, для которых у нас есть только несколько лицензий, и мне нужно выяснить, где установлены программы, чтобы я мог определить, могу ли я удалить его где-нибудь, чтобы другой пользователь мог использовать программу или мне нужно приобрести новая лицензия. Другие вещи, которые я рассмотрю позже.
Мободжо

Ответы:

19

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

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

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

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

Использование: psinfo [-h] [-s] [-d] [-c [-t разделитель]] [фильтр] [\ 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" перечисляет только поле пакета обновления. computer Направьте PsInfo для выполнения команды на удаленном компьютере или указанных компьютерах. Если вы опускаете имя компьютера, PsInfo запускает команду в локальной системе, и если вы указываете шаблон (\ *), PsInfo запускает команду на всех компьютерах в текущем домене. @file PsInfo будет работать на компьютерах, указанных в указанном файле.

Выдача

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

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

RobW
источник
11

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

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

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

'dpkg-query -l | sort'

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

'qpkg -I | sort'

Для Соляриса:

'pkginfo -i | sort'

И на AIX:

'lslpp -a all | sort'
кроличий садок
источник
1
Gentoo: Если у вас установлен gentoolkit на gentoo, вы можете найти все установленные пакеты с помощью: "qpkg -I"
monksy
Могу ли я использовать это на компьютере с Linux для просмотра информации на компьютере с Windows или это только для Linux на Linux?
Мободжо
@Mobojo - не уверен, что вы можете запустить аналогичную команду с компьютера * nix на компьютере с Windows; вы наверняка сможете использовать любой ssh-клиент для запуска этих команд с любого компьютера-источника на * nix
warren
6

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

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

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

Мирча Вуцовичи
источник
6

Вот сценарий 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
Кристофер
источник
2

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

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

http://managepc.net/

joeqwerty
источник
1

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

ИЛИ:

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

U4iK_HaZe
источник
1

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

gwmi win32_product -ComputerName Computer1

Амир Дин
источник