Installation logiciel .exe
Bonjour à tous,
Je dois me lancer et créer un script pour ma société qui permet d'installer des logiciels s'ils ne sont pas présents, via GPO.
J'ai donc bidouillé pour créer ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| $ListeProgrammes=Get-WmiObject -Class Win32_Product | Select-Object -Property Name
$ListeProgrammesD=gp HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |Select DisplayName, DisplayVersion, Publisher, InstallDate, HelpLink, UninstallString
if ($ListeProgrammes -match "CCleaner") {
"CCleaner est installé"
} elseif ($ListeProgrammesD -match "CCleaner") {
"CCleaner est installé"
} else {
"CCleaner n'est pas présent, installation en cours"
$Path="K:\Install\prog"
$Parametre ="/S EULA_ACCEPT=YES /L=1036"
$Executable="$Path\ccsetup406.exe"
start-process $Executable $Parametre
}
if ($ListeProgrammes -match "Adobe Reader") {
"Adobe Reader est installé"
} elseif ($ListeProgrammesD -match "Adobe Reader") {
"Adobe Reader est installé"
} else {
"Adobe Reader n'est pas présent, installation en cours"
$Path="K:\Install\prog"
$Parametre ="/msi EULA_ACCEPT=YES /qn"
$Executable="$Path\AdbeRdr11001_fr_FR.exe"
start-process $Executable $Parametre
} |
Pas de soucis pour le $Path, il est ok, le K est mappé sur tous les postes.
Le script fonctionne lorsque je l'exécute depuis powershell...
Plusieurs soucis se posent alors, sur lesquels je sèche pas mal...
- Quel moyen de vérifier la présence d'un soft plus rapide que ce que je fais?
- Comment procéder aux installations alors que les utilisateurs n'ont aucun droit administrateur sur leur poste?
- EULA_ACCEPT=YES ne devrait-il pas nous permettre d'esquiver la demande de l'UAC? Edit : Au temps pour moi, j'ai vu que c'était l'accord de licence.
Merci par avance pour l'aide que vous pourrez m'apporter ;)
xakan.
lister les logiciels installés
Je pense que tu peux le faire avec un que tu peux mettre dans une variable. Il faudra y renseigner l'ID (et mdp) autorisé à faire la manip.
Tu ajouteras ensuite
Code:
-Credential $NomDeTaVariable
à ton qui utilisera l'ID que tu as renseigné précédemment.
Sinon, tes 2 commandes suivantes prennent du temps à s’exécuter la première fois seulement car il doit charger les modules correspondant.
Code:
1 2
| Get-WmiObject -Class Win32_Product | Select-Object -Property Name
gp HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |Select DisplayName, DisplayVersion, Publisher, InstallDate, HelpLink, UninstallString |
D'après moi, la première commande suffit. Elle remonte plus de d'objets (dans mon cas 81, et la 2e 55). Vous pouvez ajouter un à la fin des commandes pour savoir combien de résultats les commandes vous remontent. Si quelqu'un affirme avoir eu des cas où le logiciel n'a été remonté que par la 2e commande, je veux bien le savoir :D
Je ne connais pas de commandes plus rapides qui font la même chose.