Comment puis-je désinstaller une application à l'aide de PowerShell?
Est-il un moyen simple pour accrocher dans la norme " Ajouter ou Supprimer des Programmes' fonctionnalité à l'aide de PowerShell pour la désinstallation d'une application existante? Ou pour vérifier si l'application est installée?
Vous devez vous connecter pour publier un commentaire.
Edit: Rob trouvé un autre moyen de le faire avec le paramètre de Filtre:
(gwmi Win32_Product | ? Name -eq "Software").uninstall()
Un peu de code de golf.EDIT: au Fil des ans cette réponse a obtenu tout à fait un peu de upvotes. Je voudrais ajouter quelques commentaires. Je n'ai pas utilisé PowerShell depuis, mais je me souviens de l'observation de certaines questions:
-First 1
mais je ne suis pas sûr. N'hésitez pas à modifier.À l'aide de l'objet WMI prend une éternité. C'est très rapide si vous savez le nom du programme que vous souhaitez désinstaller.
-like "appNam*"
depuis la version est dans le nom et les changements, mais il ne semble pas trouver le programme. Des idées?foreach { gp $_.PSPath }
pour?Get-ItemProperty
et puis le PSPath pour chaque boucle ($_) variable en vertu de la \Uninstall dossier d'inscription des clés.Get-WmiObject -Class Win32_Product -Filter "Name LIKE '%python%'"
Pour fixer la deuxième méthode de Jeff Hillman post, vous pouvez soit en faire un:
Ou
Pour ajouter un peu à ce post, j'avais besoin d'être en mesure pour supprimer les logiciels à partir de plusieurs Serveurs. J'ai utilisé de Jeff réponse à me conduire à ceci:
D'abord j'ai une liste de serveurs, j'ai utilisé un AD requête, mais vous pouvez fournir le tableau de noms d'ordinateur mais vous voulez:
Puis je boucle à travers eux, en ajoutant le paramètre informatique à la gwmi requête:
J'ai utilisé le IdentifyingNumber propriété match contre le lieu de nom, juste pour être sûr, j'ai été la désinstallation de l'application correcte.
J'ai trouvé que Win32_Product classe n'est pas recommandée, car elle déclenche des réparations et n'est pas requête optimisée. Source
J'ai trouvé ce post de Sitaram Pamarthi avec un script de désinstallation si vous connaissez l'application guid. Il fournit également un autre script pour rechercher des applications très vite ici.
L'appeler de cette façon:
Je vais apporter ma petite contribution. J'avais besoin de supprimer une liste de paquets à partir de l'ordinateur. C'est le script que j'ai trouvé.
J'espère que cela s'avère utile.
Note que je dois David Stetler le crédit pour ce script car il est basé sur son.
Voici le script PowerShell à l'aide de msiexec:
Une ligne de code:
Basé sur Jeff Hillman réponse:
Voici une fonction que vous pouvez simplement ajouter à votre
profile.ps1
ou de définir à l'actuelle session PowerShell:Disons que vous avez voulu désinstaller Notepad++. Il suffit de taper cette en PowerShell:
> uninstall("notepad++")
Juste être conscient que
Get-WmiObject
peut prendre un certain temps, donc soyez patient!Utilisation:
Il n'est pas entièrement testé, mais il a couru sous PowerShell 4.
J'ai couru à la PS1 fichier tel qu'il est vu ici. Laisser récupérer tous les Systèmes de la AD et essayer de désinstaller plusieurs applications sur tous les systèmes.
J'ai utilisé le IdentifyingNumber à la recherche pour le Logiciel cause de David Stetlers d'entrée.
Pas testé:
Ce qu'il n'a pas:
Je n'ai pas pu utiliser de désinstallation(). En essayant que j'ai une erreur me disant que l'appel d'une méthode pour une expression qui a une valeur NULL n'est pas possible. Au lieu de cela j'ai utilisé Retirez-WmiObject, qui semble accomplir la même.
ATTENTION: Sans un nom d'ordinateur donné, il supprime les logiciels de TOUS systèmes dans l'Active Directory.
Pour la Plupart de mes programmes, les scripts dans ce Post fait le travail.
Mais j'ai dû faire face à un programme de legs, que je ne pouvais pas supprimer à l'aide de msiexec.exe ou Win32_Product classe. (d'une certaine raison, je suis sortie de 0, mais le programme n'était pas encore là)
Ma solution a été d'utiliser la classe Win32_Process:
avec l'aide de nickdnk cette commande est d'obtenir le désinstaller exe fichier chemin d'accès:
64bit:
32 bits:
vous devrez nettoyer la chaîne de résultat:
maintenant, quand vous avez pertinentes programme de désinstallation fichier exe chemin vous pouvez utiliser cette commande:
les commandes ci-dessus peuvent également exécuter à distance - je l'ai fait à l'aide d'invoquer la commande mais je crois que l'ajout de l'argument -computername peut travailler