Utilisation de PowerShell pour désinstaller des applications

L'année dernière, je vous ai expliqué que j'avais besoin d'un script capable de détecter toutes les versions d'une application sur un ordinateur et de désinstaller chaque version une par une. Pour faire court, je n'en ai pas trouvé, alors j'ai fini par en créer un ! Depuis la publication du message d'origine, j'ai reçu un certain nombre de questions sur la façon de forcer un delta ou un inventaire matériel complet MECM / SCCM après la désinstallation des applications. Finalement, j'ai décidé de mettre à jour mon script d'origine et le message sur l'utilisation PowerShell pour désinstaller des applications.

Le nouveau script inclut un inventaire delta et il existe désormais une option pour forcer un inventaire matériel complet MECM / SCCM. Auparavant, si l'application désinstallée était un fichier EXE (et non un fichier MSI), le PowerShell le script échouerait car le code dur ne permettrait que la désinstallation des fichiers MSI. J'ai corrigé ce problème, donc maintenant les fichiers EXE et MSI sont désinstallés.

Désinstaller des applications - Célébrer

Avant d'en arriver là, cependant, je dois vous dire que mon ami Jason Sandys avait déjà un VBScript faire exactement ce que je cherchais l'année dernière. Il y a une longue blague entre nous à propos de VBScript vs PowerShell, mais je ne vais pas vous ennuyer avec ça ici. Quand je cherchais des scripts à l'origine, il fallait que ce soit PowerShell ou rien. A l'époque, la raison était simple. J'avais besoin d'en savoir plus sur PowerShell, donc je n'ai jamais cherché un VBScript et je n'ai jamais vu le message de Jason. La partie amusante est que Jason m'a finalement parlé de son scénario et m'a montré une fonctionnalité très intéressante. Vous pouvez forcer un cycle d'inventaire matériel à se produire par la suite ! Vous devez vérifier le script de Jason sur son site de blogs.

J'entends certains d'entre vous dire : « Quel script est le meilleur ? » La réponse dépend, à mon avis, de votre compréhension de VBScript et PowerShell. En dehors de cela, choisissez celui que vous préférez et utilisez-le !

Contexte

je testais le produit Surveiller les rapports d'informations (MIR) qui fait maintenant partie de Endpoint Insights rapports. Ce test impliquait le déploiement de plusieurs mises à jour pour les clients de mon laboratoire. Mon laboratoire est un mélange de systèmes d'exploitation (OS) x86 et x64. Après avoir déployé toutes ces versions de MIR, je suis resté à la recherche d'une solution qui me permettrait de nettoyer rapidement les installations client. En fin de compte, je ne voulais que la version finale de MIR installée sur chaque client.

Désinstaller des applications - Tester

Malheureusement, il n'y avait aucun moyen de savoir quelles versions de MIR étaient déployées sur quels ordinateurs de test. Il était également possible que plusieurs ordinateurs de test aient plusieurs versions de MIR installées. J'avais besoin d'un moyen simple de détecter automatiquement toutes les versions de MIR sur un ordinateur et de les désinstaller chacune, une à la fois, sans avoir à les désinstaller manuellement sur chaque ordinateur. Depuis ce temps, je suis heureux de dire que la configuration de MIR a été mise à jour, donc une seule version de celui-ci peut être installée sur un ordinateur à la fois.

Retour au problème de l'année dernière. On pourrait penser que je pourrais trouver un PowerShell Solution. Avez-vous déjà déployé Adobe Reader? Alors vous sauriez qu'il peut y avoir plusieurs versions différentes de Adobe Reader répertorié dans Ajouter/Supprimer un programme (ARP) sur un ordinateur. Pourquoi n'y aurait-il pas un moyen simple de supprimer les anciennes versions ?

j'ai trouvé beaucoup de PowerShell scripts qui m'aideraient à désinstaller une seule application à la fois. Il y avait même quelques PowerShell des scripts qui interrogeraient Win32_Product puis désinstallez deux ou plusieurs applications. Si toutefois vous lisez le billet de blog de Greg Ramsey Win32_Product est mauvais vous sauriez que c'est une mauvaise idée. Tu ne devrais jamais faire ça ! C'est pourquoi je n'ai jamais pu utiliser Win32_Product dans mon script en raison des problèmes qu'il crée.

Utilisation de PowerShell pour désinstaller des applications

À un niveau élevé, c'est ce que ma mise à jour PowerShell le script fait :
-Détecte si le script s'exécute en mode x84, x64 ou WoW32.
- Lit les clés de registre de désinstallation x86 et x64.
-Recherche toutes les versions d'une application.
-Parcourt la liste des entrées ARP et collecte :
-Nom MSI/GUID/chaîne de désinstallation.
-Détecte si l'application est un EXE ou MSI et désinstalle l'application en conséquence.
-Enregistre chaque étape dans un fichier journal.
-Exécute un inventaire matériel delta ou, si l'indicateur est défini, un inventaire matériel complet SCCM.

Vous trouverez ci-dessous à quoi ressemble le script final, mais vous pouvez également Télécharger ce.

Désinstaller des applications - Script

Forcer un inventaire complet du matériel SCCM

Par défaut, un cycle d'inventaire matériel delta commencera comme l'une des dernières étapes du script. Vous n'avez plus rien à faire. J'aime cependant forcer un inventaire complet lorsque je désinstalle des applications. Si vous êtes comme moi, tout ce que vous avez à faire est de changer la valeur $fullinventory = $false en $true. Cela forcera un inventaire matériel SCCM complet à se produire.

Comment déployer le script d'application de désinstallation avec SCCM

Commencez par éditer le script. Remplacez le nom de l'application par celui que vous souhaitez désinstaller. Dans la version téléchargeable, il est actuellement défini sur : Monitor*Information*Reporting* Gardez à l'esprit que le * est un caractère générique utilisé pour rechercher des entrées ARP.

Deuxièmement, décidez si vous souhaitez forcer un inventaire matériel SCCM complet, donc définissez l'indicateur en conséquence.

Troisièmement, créez un package et un programme pour votre ligne de commande. Il devrait ressembler à ce qui suit :
powershell.exe -ExecutionPolicy contournement -fichier Uninstallv10.ps1

Quatrièmement, et enfin, déployez le package et le programme comme vous le feriez pour tout autre programme.

Utilisation du script de désinstallation de l'application

Vous pouvez voir dans la capture d'écran ci-dessous que plusieurs copies de MIR ont été installées sur cet ordinateur de test l'année dernière.

Désinstaller des applications - Applications MIR

J'ai configuré mon programme pour un déploiement silencieux en arrière-plan. Rien à voir du point de vue de l'utilisateur final !

Si vous souhaitez vérifier que le PowerShell le script est en cours d'exécution, regardez le Gestionnaire des tâches. Il va falloir faire vite ! Le script ne prend que quelques secondes à quelques minutes pour s'exécuter en fonction du nombre d'ARP qu'il doit supprimer. En passant, vous pouvez également voir que le script s'est exécuté dans le Execmgr.log sur votre ordinateur de test.

Désinstaller les applications - Applications MIR supprimées

Vous pouvez voir sur la capture d'écran ci-dessus qu'après quelques minutes tous les Surveiller les rapports d'informations Les entrées ARP ont été supprimées.

Gardez à l'esprit que le cycle d'inventaire matériel (delta ou complet) commencera peu de temps après la désinstallation de toutes les applications. L'exécution ne prend que quelques secondes (environ 60 secondes).

Redémarrer les ordinateurs

Dans certains cas, vous souhaiterez peut-être redémarrer les ordinateurs une fois l'inventaire matériel soumis à SCCM. Dans mon cas, j'ai ajouté un Dormir commande au PowerShell script pendant 75 secondes avant de redémarrer. Si votre inventaire matériel prend plus de temps, ajustez simplement le temps en conséquence.

Voici les commandes que j'ai utilisées :
Démarrage-sommeil – secondes 75
redémarrage-ordinateur -force

Si vous avez des questions sur l'utilisation PowerShell pour désinstaller des applications, merci de me contacter @GarthMJ.

Découvrez comment Right Click Tools change la façon dont les systèmes sont gérés.

Augmentez immédiatement votre productivité grâce à notre version Community Edition limitée et gratuite.

Commencez dès aujourd'hui avec Right Click Tools :

Assistance

  • Ce champ n’est utilisé qu’à des fins de validation et devrait rester inchangé.

Contact

  • Ce champ n’est utilisé qu’à des fins de validation et devrait rester inchangé.

En soumettant ce formulaire, vous comprenez que Recast Software peut traiter vos données comme décrit dans le Recast Software Politique de confidentialité.

fr_FRFrench