Question
[Resolu] Désinstaller une application a distance
- rodriguez
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 61
- Remerciements reçus 0
il y a 16 ans 1 mois #6147
par rodriguez
[Resolu] Désinstaller une application a distance a été créé 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
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 1 mois #6148
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Désinstaller une application.
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 \"Name='$name'\" -ComputerName . )
if ($App.Count -gt 1)
{Throw \"Il existe plusieurs entrées pour $name\"}
$App[0].InvokeMethod(\"Uninstall\",$null)[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 11/02/10 13:53
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 \"Name='$name'\" -ComputerName . )
if ($App.Count -gt 1)
{Throw \"Il existe plusieurs entrées pour $name\"}
$App[0].InvokeMethod(\"Uninstall\",$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.
- rodriguez
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 61
- Remerciements reçus 0
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 = \"toto\"
$list = (Get-WmiObject -Class Win32_Product -ComputerName $computer )
$list >> 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 <<<< (\"Uninstall\",$null)'''
afin de déterminer quelles sont les applications installé sur un poste j'utilise ce petit script:.
[code:1]
$computer = \"toto\"
$list = (Get-WmiObject -Class Win32_Product -ComputerName $computer )
$list >> 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 <<<< (\"Uninstall\",$null)'''
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 1 mois #6150
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Désinstaller une application.
noxydius écrit:
Je t'ai proposé rapido une solution, sans la tester :
[code:1]
$App=@(Get-WmiObject -Class Win32_Product -Filter \"Name='$name'\" -ComputerName . )
if ($App.Count -eq 0)
{Throw \"L'application suivante n'existe pas :`r`n$name\"}
elseif ($App.Count -gt 1)
{Throw \"Il existe plusieurs entrées pour l'application $name\"}
[/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]
Il faut s'assurer que le nom existe bien.Le Name me permet de renseigner la variable $name de ton script mais il ne trouve pas mon application.
Je t'ai proposé rapido une solution, sans la tester :
[code:1]
$App=@(Get-WmiObject -Class Win32_Product -Filter \"Name='$name'\" -ComputerName . )
if ($App.Count -eq 0)
{Throw \"L'application suivante n'existe pas :`r`n$name\"}
elseif ($App.Count -gt 1)
{Throw \"Il existe plusieurs entrées pour l'application $name\"}
[/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.
- rodriguez
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 61
- Remerciements reçus 0
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 = \"win32_product\"
$arrayComp =\"DMARS-401273\"
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 \"BlackBerry Desktop Software 5.0\"}).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
[code:1]
$Class = \"win32_product\"
$arrayComp =\"DMARS-401273\"
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 \"BlackBerry Desktop Software 5.0\"}).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.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 16 ans 1 mois #6183
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:Désinstaller une application.
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 ?
Arnaud
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 ?
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.113 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Resolu] Désinstaller une application a distance