Question
[resolu]Verifier si un logiciel est installé
- Burgun
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 40
- Remerciements reçus 0
il y a 16 ans 11 mois #4478
par Burgun
[resolu]Verifier si un logiciel est installé a été créé par Burgun
Bonjour,
je cherche à savoir si un logiciel précis est installé sur un parc de machine.
je procède de la façon suivante:
Lecture du nom de machine dans un fichier texte
Utilisation de la commande Get-WmiObject -Class Win32_Product pour lister les logiciels.
Pour le moment mon script se résume à ces quelques lignes:
[code:1]#Mise du compte utilisateur dans une variable
$user=Get-Credential
#Parcour le fichier txt pour récuperer le nom des serveur et lance la commande Get-Wmiobject
Get-Content -Path C:\Servers.txt | ForEach-Object { \"Querying $_\" ;Get-WmiObject -Class Win32_Product -ComputerName $_ -Credential $user }[/code:1]
Le soucis c'est que je récupère en sortie l'ensemble des logiciels. Mais je ne voudrais récupérer en sortie dans un fichier txt, uniquement le nom du serveur et savoir si un logiciel en question est installé ou non (avec sa version). Il faut donc que je filtre ma sortie mais je ne vois pas trop comment faire.
Quelqu'un pourrait m'aider
Merci<br><br>Message édité par: bvivi57, à: 26/03/09 18:09
je cherche à savoir si un logiciel précis est installé sur un parc de machine.
je procède de la façon suivante:
Lecture du nom de machine dans un fichier texte
Utilisation de la commande Get-WmiObject -Class Win32_Product pour lister les logiciels.
Pour le moment mon script se résume à ces quelques lignes:
[code:1]#Mise du compte utilisateur dans une variable
$user=Get-Credential
#Parcour le fichier txt pour récuperer le nom des serveur et lance la commande Get-Wmiobject
Get-Content -Path C:\Servers.txt | ForEach-Object { \"Querying $_\" ;Get-WmiObject -Class Win32_Product -ComputerName $_ -Credential $user }[/code:1]
Le soucis c'est que je récupère en sortie l'ensemble des logiciels. Mais je ne voudrais récupérer en sortie dans un fichier txt, uniquement le nom du serveur et savoir si un logiciel en question est installé ou non (avec sa version). Il faut donc que je filtre ma sortie mais je ne vois pas trop comment faire.
Quelqu'un pourrait m'aider
Merci<br><br>Message édité par: bvivi57, à: 26/03/09 18:09
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 11 mois #4480
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Verifier si un logiciel est installé
Salut,
tu peux filtrer directement la requête WMI :
[code:1]
Get-WmiObject -Class Win32_Product -filter \"name='Microsoft .NET Framework 1.1'\"
[/code:1]
Pour le résultat final en texte, je te propose ceci :
[code:1]
$user=Get-Credential
$Product='Microsoft .NET Framework 1.1'
#Parcourt le fichier txt pour récuperer le nom des serveur et lance la commande Get-Wmiobject
Get-Content -Path C:\Servers.txt |`
ForEach-Object {
Write-host \"Querying $_\"
$Result=Get-WmiObject -Class Win32_Product -filter \"name='$product'\" -ComputerName $_ -Credential $user
#Renvoi Vrai si $result est renseigné
\"$_ $($Result -ne $null) \"
}|`
Set-Content FileFullName.Txt
#ou Set-Content \"Path\$Product.Txt\"
[/code:1]
Faut faire attention avec l'affichage du type [code:1]\"Querying $_\", [/code:1]mieux vaut préciser ton intention avec Write-Host.
Je te laisse tester, mais le principe est là.
tu peux filtrer directement la requête WMI :
[code:1]
Get-WmiObject -Class Win32_Product -filter \"name='Microsoft .NET Framework 1.1'\"
[/code:1]
Pour le résultat final en texte, je te propose ceci :
[code:1]
$user=Get-Credential
$Product='Microsoft .NET Framework 1.1'
#Parcourt le fichier txt pour récuperer le nom des serveur et lance la commande Get-Wmiobject
Get-Content -Path C:\Servers.txt |`
ForEach-Object {
Write-host \"Querying $_\"
$Result=Get-WmiObject -Class Win32_Product -filter \"name='$product'\" -ComputerName $_ -Credential $user
#Renvoi Vrai si $result est renseigné
\"$_ $($Result -ne $null) \"
}|`
Set-Content FileFullName.Txt
#ou Set-Content \"Path\$Product.Txt\"
[/code:1]
Faut faire attention avec l'affichage du type [code:1]\"Querying $_\", [/code:1]mieux vaut préciser ton intention avec Write-Host.
Je te laisse tester, mais le principe est là.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Burgun
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 40
- Remerciements reçus 0
il y a 16 ans 11 mois #4484
par Burgun
Réponse de Burgun sur le sujet Re:Verifier si un logiciel est installé
Merci beaucoup pour ton aide
Comme je n'ai vraiment pas de compétences dans PowerShell. J'ai essayé d'adapter ton script à ma sauce
[code:1]
#Création du fichier bilan
echo \"Résultat du relevé\" > c:\bilan.txt
echo \" \" >> c:\bilan.txt
#Mise du compte utilisateur dans une variable
$user=Get-Credential
#Définition du programme à recherché
$Product='Symantec Endpoint Protection'
#Parcour le fichier txt pour récuperer le nom des serveur et lance la commande Get-Wmiobject
$Result=Get-Content -Path C:\Servers.txt | ForEach-Object { Write-host \"Interrogation de $_\" ;$Reponse=Get-WmiObject -Class Win32_Product -filter \"name='$product'\" -ComputerName $_ -Credential $user ;if($Reponse -eq $null){echo \"$_ Endpoint pas installé\" >> c:\bilan.txt }else {echo \"$_ OK $Reponse\" >> c:\bilan.txt} } [/code:1]
le parametre -filter m'a bien aidé!!
Tous semble fonctionner, je récupère bien ce que je veux
Merci à toi
Comme je n'ai vraiment pas de compétences dans PowerShell. J'ai essayé d'adapter ton script à ma sauce
[code:1]
#Création du fichier bilan
echo \"Résultat du relevé\" > c:\bilan.txt
echo \" \" >> c:\bilan.txt
#Mise du compte utilisateur dans une variable
$user=Get-Credential
#Définition du programme à recherché
$Product='Symantec Endpoint Protection'
#Parcour le fichier txt pour récuperer le nom des serveur et lance la commande Get-Wmiobject
$Result=Get-Content -Path C:\Servers.txt | ForEach-Object { Write-host \"Interrogation de $_\" ;$Reponse=Get-WmiObject -Class Win32_Product -filter \"name='$product'\" -ComputerName $_ -Credential $user ;if($Reponse -eq $null){echo \"$_ Endpoint pas installé\" >> c:\bilan.txt }else {echo \"$_ OK $Reponse\" >> c:\bilan.txt} } [/code:1]
le parametre -filter m'a bien aidé!!
Tous semble fonctionner, je récupère bien ce que je veux
Merci à toi
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.081 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [resolu]Verifier si un logiciel est installé