Question [Resolu] Désinstaller une application a distance

Plus d'informations
il y a 16 ans 1 mois #6147 par rodriguez
Bonjour,

ma recherche aujourd'hui et de pouvoir désinstaller une application à distance.

je m'inspire du script donné sur le site:

[code:1]

Function Unistall-Software ([string] $name, [string] $computer = \".\"«») # désinstalle une application
{
if (! $path)
{
throw \"Vous devez spécifier le chemin d'acces de l''application à desinstaller.\"
}
else
{
(Get-WmiObject -Class Win32_Product -Filter \"Name=\"+$name -ComputerName . ).InvokeMethod(\"Uninstall\",$null)
}
}

[/code:1]

Ma question est apres throw: que dois-je informer concrètement. le chemin du fichier uninstall se trouvant dans le répertoire de l'application.
ou bien le nom se trouvant dans le module ajouter/supprimer programme?
ou autre ??

Merci.<br><br>Message édité par: Arnaud, à: 20/02/10 19:55

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

Plus d'informations
il y a 16 ans 1 mois #6148 par Laurent Dardenne
Avec le nom.
Par contre, ainsi l'unicité n'est en théorie pas garantie :
[code:1]
Get-WmiKey win32_product
#IdentifyingNumber
#Name
#Version
[/code:1]
Mais dans l'usage c'est souvent le cas.
Tu peux faire ceci pour éviter ce pb:
[code:1]$App=@(Get-WmiObject -Class Win32_Product -Filter \&quot;Name='$name'\&quot; -ComputerName . )
if ($App.Count -gt 1)
{Throw \&quot;Il existe plusieurs entrées pour $name\&quot;}
$App[0].InvokeMethod(\&quot;Uninstall\&quot;,$null)[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 11/02/10 13:53

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 1 mois #6149 par rodriguez
Réponse de rodriguez sur le sujet Re:Désinstaller une application.
Merci Laurent toujours là pour aider.


afin de déterminer quelles sont les applications installé sur un poste j'utilise ce petit script:.

[code:1]

$computer = \&quot;toto\&quot;

$list = (Get-WmiObject -Class Win32_Product -ComputerName $computer )
$list &gt;&gt; c:\list3.txt

[/code:1]

donnant ce style de résultat:
IdentifyingNumber : {15914C1F-5C8D-42A1-A22D-A529B831B37E}
Name : IBM Director Console
Vendor : IBM Corporation
Version : 5.20.3
Caption : IBM Director Console

Le Name me permet de renseigner la variable $name de ton script mais il ne trouve pas mon application.

j'ai cette erreur la:

Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
à :ligne:6 caractère:20
+ $App[0].InvokeMethod &lt;&lt;&lt;&lt; (\&quot;Uninstall\&quot;,$null)'''

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

Plus d'informations
il y a 16 ans 1 mois #6150 par Laurent Dardenne
noxydius écrit:

Le Name me permet de renseigner la variable $name de ton script mais il ne trouve pas mon application.

Il faut s'assurer que le nom existe bien.
Je t'ai proposé rapido une solution, sans la tester :
[code:1]
$App=@(Get-WmiObject -Class Win32_Product -Filter \&quot;Name='$name'\&quot; -ComputerName . )
if ($App.Count -eq 0)
{Throw \&quot;L'application suivante n'existe pas :`r`n$name\&quot;}
elseif ($App.Count -gt 1)
{Throw \&quot;Il existe plusieurs entrées pour l'application $name\&quot;}
[/code:1]
Sache qu'il reste d'autres cas d'erreur à valider...

Ensuite tu peux appeler directement la méthode, pas besoin de passer par Invoke :
[code:1]
$App[0].UnInstall()
[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 1 mois #6173 par rodriguez
Réponse de rodriguez sur le sujet Re:Désinstaller une application.
Voila apres un peu plus de recule voici mon script fonctionnel.

[code:1]
$Class = \&quot;win32_product\&quot;
$arrayComp =\&quot;DMARS-401273\&quot;

foreach ($machine in $arrayComp)
{
#listez les applications sur une machine distante.
get-WmiObject -class $Class -computername $machine |ft name, systemName, shareName -auto

# désinstallez une application rentrait dans une variable.
#(get-WmiObject -class $Class -computername $machine | where-object {$_.name -eq \&quot;BlackBerry Desktop Software 5.0\&quot;}).psbase.delete()

}
[/code:1]

ce script fonctionne aussi pour les imprimantes
en mettant win32_printer

Merci Laurent pour ton aide et surtout pour ton tuto sur les pipeline:

laurent-dardenne.ftp-developpez.com/arti...-sous-PowerShell.pdf


Message édité par: noxydius, à: 16/02/10 12:51<br><br>Message édité par: noxydius, à: 16/02/10 12:54

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

Plus d'informations
il y a 16 ans 1 mois #6183 par Arnaud Petitjean
Salut Noxydius,

Je ne vois pas d'appel à une méthode dans ton script.

Je ne comprends donc pas comment tu peux désinstaller une application avec ? :whistle:

Arnaud

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.102 secondes
Propulsé par Kunena