Loop através de vários servidores, encontrar dlls específicos, obter a versão dll, nome do arquivo interno e caminho?

1

Eu sou novo no Powershell e uso o PS v2. Eu posso ver o enorme potencial que tem, mas eu simplesmente não consigo que o código a seguir funcione totalmente. Eu estou tentando acabar com um arquivo csv que contém as dlls wild carded necessários no GAC_MSIL ou subdiretório, obter a versão dll, nome do arquivo interno e caminho e o endereço IP do servidor.

O código está abaixo e está no formato de linha única porque parece mais fácil ser remoto em um dos servidores no farm de servidores e executar a linha única desse console, até os logins de segurança etc. O código foi produziu um conjunto de resultados, mas apenas para o último servidor, provavelmente ele faz o primeiro servidor, então substitui-lo, mas não tenho certeza sobre isso.

Eu tenho lido muito sobre o uso de arrays e objetos personalizados, e tentei fazer isso, mas minhas habilidades de script no PS ainda não estão à altura.

$out = "Ouput_dll_ver_results.csv";
foreach ($server in '11.222.33.123', '11.222.33.124') 
{
    $VersionInfo = 
    (
       Get-ChildItem \$server\C$\windows\assembly\GAC_MSIL -recurse -Include abc*.dll,def*.dll,ghi*.dll,jkl*.dll 
           | Where-Object{$_.FullName -notmatch "\windows\assembly\temp\"}
    )
}; 
$VersionInfo | %{Get-Command $_.FullName} | select -expand File* |Export-Csv $out

Você pode, por favor, avisar se / como o código acima pode ser corrigido, e se não, que alternativas eu tenho para obter as informações que eu preciso?

    
por Graham 31.03.2012 / 19:05

1 resposta

1

Bem, cada vez que você estiver interagindo no loop, você está RECUPERANDO a variável $VersionInfo . Claro, tudo o que você recebe no final é a última entrada. Tente substituir o

$VersionInfo =

com

$VersionInfo +=

e veja se isso ajuda. Isso deve APPEND em vez de sobrescrever.

    
por 31.03.2012 / 21:24