Question Server 2003 list Add/rem Program

  • Spama
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 13 ans 5 mois #13199 par Spama
Server 2003 list Add/rem Program a été créé par Spama
Bonjour tout le monde,

Le but de la manip est de récupérer la version d'un programme installé sur une machine distante.
Alors avec un serveur 2008 pas de soucis,
il suffit de faire appel à la class WIN32_Product du cmdlet Get-WMIObject.
Le soucis c'est que cette classe n'existe pas sur l'oS server 2003..

Je me résouds donc à attaque la base de registre à distance avec d'autres moyens. Je vais aller chercher les clés présentes dans \"HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" et trier l'affichage sur la valeur DisplayName.

Comme :

[code:1]foreach ($server in $servers){
$app= ( dir \"HKLM:«»SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" | % { get-itemproperty $_.pspath } | where {$_.DisplayName -eq \"Symantec Scan Engine\"})

Write-host $server \" Scan engine version :\" $app.DisplayVersion
} [/code:1]

Le problème c'est que faire un DIR à distance c'est pas facile. j'essaye donc le code suivant :

[code:1]foreach ($srv in Get-Content $ServerFile)
{
Write-Host \"********************************************\"
Write-Host \"Server Name:\" + $srv

$type = \"LocalMachine\"
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$srv)
$regkey=$reg.OpenSubKey(HKLM:«»SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall)
# $sav=$regkey.getvalue(\"Symantec Scan Engine\"«»)
$srv + \";\" + $sav |Out-File -append $OutputFile
Write-host $srv + \";\" + $sav

}[/code:1]

mais impossible de faire l'équivalent du 1er exemple, en fait il m'est même impossible de récupérer le contenu de la clé registre HKML:Software....\Uninstall

Bien sur j'ai essayé différentes commandes a la place de [code:1]$sav=$regkey.getvalue(\"Symantec Scan Engine\"«»)[/code:1] ainsi que pour la variable $regkey... (commandes trouvées avec un get-member )


Auriez vous une idée de comment procéder ?

merki !

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 5 mois #13201 par SiSMik
Réponse de SiSMik sur le sujet Re:Server 2003 list Add/rem Program
Salut,

Tu as quelle version de Powershell installé sur tes servers ?

Connexion ou Créer un compte pour participer à la conversation.

  • Spama
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 13 ans 5 mois #13202 par Spama
Réponse de Spama sur le sujet Re:Server 2003 list Add/rem Program
La version 2 , sur les 2K3 comme sur les 2K8

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 5 mois #13203 par SiSMik
Réponse de SiSMik sur le sujet Re:Server 2003 list Add/rem Program
Ok, c'est nickel, dans ce cas, tu peux utiliser les fonctionnalités de remoting.

Des explications ici

Connexion ou Créer un compte pour participer à la conversation.

  • Spama
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 13 ans 5 mois #13204 par Spama
Réponse de Spama sur le sujet Re:Server 2003 list Add/rem Program
Pour ceux que ca interesse, j'ai trouvé une solution, peut etre pas tres jolie mais ça marche.
Ca fait un petit moment que je suis dessus et le fait de l'avoir posté sur le forum, m'a ouvert un peu plus les yeux.

Pour lire la clé de registre a distance il faut d'abord la stocker dans une variable
[code:1]$reg_apps = get-childitem \"HKLM:«»SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"[/code:1]

Ensuite, pour aller lire les infos sur des serveurs distants, serveurs dont les noms sont stocvkés dans un fichier
[code:1]foreach ($srv in Get-Content $ServerFile)
{
Write-Host \"********************************************\"
Write-Host \"Server Name:\" + $srv


$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$srv)
#la ligne suivante va enregistrer dans la variable toutes les informations concernant l'application spécifiée
$regkey= ($reg_apps | % { get-itemproperty $_.pspath } | where {$_.DisplayName -eq \"Symantec Scan Engine\"})
#$sav=$regkey.getvalue(\"Symantec Scan Engine\"«»)
#$srv + \";\" + $sav |Out-File -append $OutputFile
Write-host $srv + \";\" + $regkey.DisplayVersion

}[/code:1]
Il faut travailler la sortie d'affichage, là c'est un peu brouillon. Faut que je m'y mette.


Pour cloturer ce topic, je poste lle script complet pour ceux que ca interesse.

Actions :
  • Il va aller chercher tous les objets COMPUTEr dans une OU précise
  • Il va stocker tous les noms de serveur dans un fichier au format CSV
  • Il va ensuite aller chercher l'information voulue dans la base de registre du serveur distant (ici la version du logiciel Scan engine de Symantec
  • le resultat sera le nom du serveur et la version du logiciel

  • [code:1]




    #Récupération des serveurs dans une OU spécifique et enregistrement dans un fichier CSV
    $strCategory = \"computer\"
    $objDomain = New-Object System.DirectoryServices.DirectoryEntry(\"LDAP://OU=etc...,OU=3memeNiveau,OU=2eme niveau,OU=1erniveau, DC=microsoft,DC=com\"«»)
    $objSearcher = New-Object System.DirectoryServices.DirectorySearcher
    $objSearcher.SearchRoot = $objDomain
    $objSearcher.Filter = (\"(objectCategory=$strCategory)\"«»)
    $colProplist = \"name\"
    foreach ($i in $colPropList){
    $objSearcher.PropertiesToLoad.Add($i)
    }
    $colResults = $objSearcher.FindAll()


    Write-Host \"Store all Servernames in a file...\"


    foreach ($objResult in $colResults){
    $objComputer = $objResult.Properties; $objComputer.name >> $ServerFile
    }
    Write-Host \"Retrieving Scan Engine Version : \"
    \"ServerName\" + \";\" + \"Version of Scan Engine \" >> $OutputFile

    foreach ($srv in Get-Content $ServerFile)
    {
    Write-Host \"********************************************\"
    Write-Host \"Server Name:\" + $srv

    $type = \"LocalMachine\"
    $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($type,$srv)
    $regkey= ($a | % { get-itemproperty $_.pspath } | where {$_.DisplayName -eq \"Symantec Scan Engine\"})
    #$sav=$regkey.getvalue(\"Symantec Scan Engine\"«»)
    #$srv + \";\" + $sav |Out-File -append $OutputFile
    Write-host \"Serveur name\" : $srv + \"Scan Engin Version : \" + $regkey.DisplayVersion

    }


    [/code:1]<br><br>Message édité par: Spama, à: 4/12/12 16:53

    Connexion ou Créer un compte pour participer à la conversation.

    • Spama
    • Auteur du sujet
    • Visiteur
    • Visiteur
    il y a 13 ans 5 mois #13205 par Spama
    Réponse de Spama sur le sujet Re:Server 2003 list Add/rem Program
    benduru écrit:

    Ok, c'est nickel, dans ce cas, tu peux utiliser les fonctionnalités de remoting.

    Des explications ici




    Merci je vais aller voir ça

    Connexion ou Créer un compte pour participer à la conversation.

    Temps de génération de la page : 0.044 secondes
    Propulsé par Kunena