Question
[Résolu} Contrôler présence d'un logiciel, si abs
- David
- Auteur du sujet
- Hors Ligne
- Membre junior
- Messages : 31
- Remerciements reçus 0
Alors le titre est tout à fait clair
J'essaie de contrôler la présence de WinSCP sur une machine mais j'ai quelques soucis que je n'arrive pas a corriger.
Je récupère bien la liste des applications, mais systématiquement le script me renvoie que winscp n'existe pas même quand il est bien installé
Quand Winscp n'est pas installé, l'installation se fait bien mais pas à chaque fois, je m'explique, si j'ai déja sur ma machine le dossier chocolatey avec les sources de winscp dedans il ne va pas l'installer, or quand je supprime les sources, il l'installe bien ...
[code:1]
$Recherche = \"WinSCP\"
$Application = \"Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {![string]::IsNullOrWhiteSpace($_.DisplayName) } | Select-Object -ExpandProperty DisplayName -Unique\"
If ($Application -match $Recherche){
Write-Host -ForegroundColor Green \"WinSCP est déjà installé ... Poursuite de la synchronisation ...\"
}
else{
Write-Host -ForegroundColor Red \"WinSCP n'existe pas, téléchargement et installation en cours ...\"
Install-Package -Name \"WinSCP\" -ProviderName chocolatey -Force
}
[/code:1]
Je suis preneur de toute idée
Merci d'avance
Goro<br><br>Message édité par: goro, à: 22/10/18 14:17
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
- Messages : 1778
- Remerciements reçus 21
si je me base sur le script que tu nous a donner, il fonctionne pasJe récupère bien la liste des applications, mais systématiquement le script me renvoie que winscp n'existe pas même quand il est bien installé
la deuxième ligne avec le Get-ItemProperty est entre guillemets, hors la commande ne s'exécute pas dans ce cas
il faut enlever les guillemets
une idée serai de tester directement le fichier exe dans le dossier d'installation comme si dessoussi j'ai déja sur ma machine le dossier chocolatey avec les sources de winscp dedans il ne va pas l'installer, or quand je supprime les sources, il l'installe bien …
Je suis preneur de toute idée
tu peut aussi tester la version (c'est possible avec ton script en le modifient un peu)
[code:1]if (Test-Path \"C:\Program Files (x86)\WinSCP\WinSCP.exe\"«») {
if ((Get-Item \"C:\Program Files (x86)\WinSCP\WinSCP.exe\"«»).VersionInfo.FileVersion -eq \"5.13.4.8731\"«») {
# tous est OK
}
else {
# traitement re-install nouvelle version
}
}
else {
# traitement install
}
[/code:1]
une autre \"peut être mauvaise\" idée serai de supprimer les sources avant l'install
Connexion ou Créer un compte pour participer à la conversation.
- David
- Auteur du sujet
- Hors Ligne
- Membre junior
- Messages : 31
- Remerciements reçus 0
Merci pour le temps que tu prends à me répondre !
il faut enlever les guillemets
Je l'ai fait et effectivement maintenant quand WinSCp est installé, le script se poursuit normalement !
Merci c'est parfait
une idée serai de tester directement le fichier exe dans le dossier d'installation comme si dessous
Alors je viens de tester l'installation de l’exécutable fourni par Chocolatey et l'installation se passe parfaitement.
Mais si je désinstalle WinSCP, sans supprimer les sources Chocolatey mon problème persiste : il ne l'installe pas et donc ça plante la suite du script.
Je te tiens informe si je trouve une façon différente de l'installer car j'imagine que récupérer la version ne m'aidera pas de ce cas de figure .... a moins que je n'ai pas compris ce que tu voulais dire
Merci encore
@ plus tard
Goro
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
- Messages : 1778
- Remerciements reçus 21
tu test si l'appli est installer
- si elle ne l'es pas, tu vérifie si il y a quelque chose dans le dossier, par exemple : [code:1]if (Test-Path \"C:\Program Files (x86)\WinSCP\WinSCP.exe\"«») {[/code:1] tu efface le dossier WinSCP et tu fais l'install
peut être que ton problème existe que sur une vielle version de winscpJe te tiens informe si je trouve une façon différente de l'installer car j'imagine que récupérer la version ne m'aidera pas de ce cas de figure ....
sinon non ça aide pas sauf si tu doit faire une mise à jour
Connexion ou Créer un compte pour participer à la conversation.
- David
- Auteur du sujet
- Hors Ligne
- Membre junior
- Messages : 31
- Remerciements reçus 0
J'ai utilisé ta solution de suppression du dossier Chocolatey
Et maintenant tout fonctionne visiblement
Voila le code, il ne doit pas être très joli mais ca fonctionne
Merci encore de ton aide
[code:1]$Recherche = \"SCP\"
$Application = Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {![string]::IsNullOrWhiteSpace($_.DisplayName) } | Select-Object -ExpandProperty DisplayName -Unique
If ($Application -match $Recherche){
Write-Host -ForegroundColor Green \"WinSCP est déjà installé ... Poursuite de la synchronisation ...\"
}
else{
Write-Host -ForegroundColor Red \"WinSCP n'existe pas, téléchargement et installation en cours ...\"
Remove-Item -Path C:\Chocolatey -Recurse
Install-Package -Name \"WinSCP\" -ProviderName chocolatey -Force
If ($Application -match $Recherche){
Write-Host -ForegroundColor Green \"WinSCP est maintenant installé ... Poursuite de la synchronisation ...\"
}
} [/code:1]
La seule chose est que après l'installation, le write host WinSCP est maintenant installé ne s'affiche pas<br><br>Message édité par: goro, à: 22/10/18 14:08
Connexion ou Créer un compte pour participer à la conversation.
- David
- Auteur du sujet
- Hors Ligne
- Membre junior
- Messages : 31
- Remerciements reçus 0
[code:1]$Recherche = \"SCP\"
$Application = Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {![string]::IsNullOrWhiteSpace($_.DisplayName) } | Select-Object -ExpandProperty DisplayName -Unique
If ($Application -match $Recherche){
Write-Host -ForegroundColor Green \"WinSCP est déjà installé ... Poursuite de la synchronisation ...\"
}
else{
Write-Host -ForegroundColor Red \"WinSCP n'existe pas, téléchargement et installation en cours ...\"
Remove-Item -Path C:\Chocolatey -Recurse
Install-Package -Name \"WinSCP\" -ProviderName chocolatey -Force
cls
If (Test-Path -Path \"C:\Program Files (x86)\WinSCP\"«»){
Write-Host -ForegroundColor Green \"WinSCP est maintenant installé ... Poursuite de la synchronisation ...\"
}
}[/code:1]
J'ai tout ce qu'il me faut
Merci de ton aide
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- [Résolu} Contrôler présence d'un logiciel, si abs