Exibir programas instalados na máquina remota?

19

Eu queria saber se existe um método fácil e leve para visualizar quais programas estão instalados em uma máquina remota? Estou tentado a usar o Spiceworks, mas gostaria de algo mais leve como um script. Venho brincando um pouco com o WMIC e posso obter uma lista de programas para o meu computador, mas não sei se posso fazer o mesmo com ele em um computador remoto. Alguma ideia?

Edit: Desculpe por ter esquecido o sistema operacional, estamos usando principalmente o Windows XP e 7, uso o Windows 7. Estou procurando algo para ser executado em segundo plano sem um usuário que esteja usando o computador no momento. Eu gostaria de poder fazer isso durante o dia de trabalho enquanto as pessoas estão trabalhando e o fazem sem interrompê-las. Aprecio as respostas do Linux, pois estou tentando aprender mais sobre o Linux e planejo mudar pessoalmente ao longo do tempo.

Mobojo
fonte
7
Ajudaria a conhecer o sistema operacional da máquina.
precisa saber é o seguinte
Por que apenas programas? Pode haver outro material protegido por direitos autorais no sistema (arquivos de fonte e mp3s são casos óbvios)
symcbean
@symcbean Meu principal motivo para pedir é licenciar. Temos alguns programas para os quais temos apenas uma mão cheia de licenças e preciso descobrir onde os programas estão instalados para que eu possa determinar se posso desinstalá-lo em algum lugar para que outro usuário possa usar o programa ou se precisar comprar um nova licença. As outras coisas que examinarei mais adiante.
Mobojo 13/09/11

Respostas:

19

Você pode usar uma das ferramentas Sysinternals PSinfo:

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

PsInfo v1.77 - Visualizador de informações de sistema local e remoto Copyright (C) 2001-2009 Mark Russinovich Sysinternals - www.sysinternals.com

PsInfo retorna informações sobre um sistema Windows NT / 2000 / XP local ou remoto.

Uso: psinfo [-h] [-s] [-d] [-c [-t delimitador]] [filtro] [\ computador [, computador [, ..]] | @file [-u Nome de usuário [-p Senha ]]]

 -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

filtro. por exemplo, "serviço psinfo" lista apenas o campo do service pack. computador Direcione o PsInfo para executar o comando no computador remoto ou computadores especificados. Se você omitir o nome do computador, o PsInfo executará o comando no sistema local e se você especificar um curinga (\ *), o PsInfo executará o comando em todos os computadores no domínio atual. @file O PsInfo será executado nos computadores listados no arquivo especificado.

Emissão

PSinfo -s \\ nomedocomputador

dirá o que está instalado em um computador remoto.

RobW
fonte
11

Em uma distribuição Linux baseada em rpm, você pode executar o seguinte:

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

Para uma distribuição baseada em deb, passe isso para o comando ssh:

'dpkg-query -l | sort'

Para o Gentoo (por um comentário fornecido por Monksy ):

'qpkg -I | sort'

Para Solaris:

'pkginfo -i | sort'

E no AIX:

'lslpp -a all | sort'
Warren
fonte
1
Gentoo: Se você gentoolkit instalado no Gentoo você pode descobrir todos os pacotes instalados com: "qpkg -I"
monksy
Posso usar isso em uma máquina Linux para visualizar informações em uma máquina Windows ou é apenas para Linux para Linux?
Mobojo 14/09/11
@Mobojo - não tenho certeza se você pode executar um comando semelhante de uma máquina * nix a uma máquina com Windows; certamente você deve ser capaz de usar qualquer cliente ssh para executar estes comandos a partir de qualquer máquina de origem para * nix, embora
Warren
6

O WMIC pode ser usado remotamente, por padrão, com uma conta que faça parte do grupo Administradores. Você pode delegar acesso WMI somente leitura a um usuário normal.

O SNMP também pode ser usado - você só precisa configurar uma comunidade somente leitura. Você precisa procurar a tabela hrSWInstalled:snamwalk -c public -v2c server_IP hrSWInstalled

Consulte também: http://technet.microsoft.com/en-us/library/bb742610.aspx

Mircea Vutcovici
fonte
6

Aqui está um script do PowerShell que se conectará à chave de registro HKLM \ Software \ Microsoft \ Windows \ Uninstall, puxe as chaves, obtenha seus nomes de exibição e envie para um arquivo de texto.

$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
Christopher
fonte
2

Existem um milhão de programas que farão isso. Alguns são mais fáceis e leves que outros.

Aqui está apenas um dos inúmeros programas que fazem isso:

http://managepc.net/

joeqwerty
fonte
1

Se for uma máquina Windows, você pode executar o "WinAudit" (gratuito, basta pesquisar) em um trabalho agendado. Ele gera relatórios em HTML ou texto e outros, dos quais você pode salvar em uma unidade de rede e visualizar em um computador remoto.

OU:

Área de trabalho remota. Você se conecta e usa-o como se fosse uma máquina local. Funciona em * nix também.

U4iK_HaZe
fonte
1

Você pode usar o WMI no PowerShell:

gwmi win32_product -ComputerName Computer1

Ameer Deen
fonte