Question Problème sélection variable

Plus d'informations
il y a 2 ans 10 mois - il y a 2 ans 10 mois #30892 par Glaedr29
Bonjour,

Je suis en train de créer un script pour désinstaller une série d'applications ayant la même racine dans le nom.
Disons que les application sont :
-Martine à la plage
-Martine à la montagne 
....
J'ai créé le code script suivant :
$AppMartine = Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -like "Martine*"}
$AppMartineName = $AppMartine.name 
$AppMartinePlage = "Martine à la plage"
$AppMartineMontagne = "Martine à la montagne"

if ($AppMartineName -contains $AppMartinePlage)
{
$AppUninstall= $AppMartine | Where {$AppMartineName -eq $AppMartinePlage}
$AppUninstall.Uninstall()
}
Mais la variable $AppUninstall sort la totalité des applications "Martine".

Auriez-vous une idée pour trouver plus facilement l'application en évitant de Get-WmiObject -Class Win32_Product, qui fait perdre énormément de temps d'execution

Merci par avance pour vos lumieres.

Bonne fin de journée.
Dernière édition: il y a 2 ans 10 mois par Arnaud Petitjean. Raison: Mise en forme du code

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

Plus d'informations
il y a 2 ans 10 mois #30893 par Arnaud Petitjean
Bonsoir Meric,

Content de te revoir. Ca faisait un moment que tu n'étais pas revenu nous rendre visite ! ;-)

Il y a une petite coquille dans ton script. En effet, dans ton bloc Where tu n'as pas utilisé la variable $_.
Ton souci doit forcément venir de là.
$AppUninstall= $AppMartine | Where {$AppMartineName -eq $AppMartinePlage}


Concernant ta seconde question sur comment accélerer ton script. Je n'en suis pas certain (mais presque), les reférences aux applications installées doivent se trouver dans la registry. Encore faut-il savoir à quel endroit... ! L'accès à la base de registres sera plus rapide que WMI c'est sûr.

Enfin, une dernière chose. La commande Get-WmiObject est dépréciée. Il vaut mieux à présent utiliser Get-CimInstance. D'ailleurs peut-être que ce sera plus rapide avec cette dernière commande ? Mais j'en doute...

A très bientôt ;-)
 

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

Plus d'informations
il y a 2 ans 10 mois #30894 par Arnaud Petitjean
Voilà, je pense que ceci devrait t'aider :
# Récupère les logiciels 64 bits installés
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize

# Récupère les logiciels 32 bits installés
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize

Attention de penser à enlever les commandes de formatage pour l'utilisation dans un script.

Un lien qui te sera utile : Use PowerShell to Find Installed Software

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

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