Aide sur une amélioration d'un script powershell - Divers - Programmation
Marsh Posté le 26-08-2020 à 22:21:54
L'idée est la suivante:
La commande (comme tu l'as décrite ci-dessus) te renvoie une liste d'applications, que tu vas stocker dans une variable (p.ex $applications). D'ailleurs, as-tu vraiment besoin du PackageFullName ? A mon avis, Name est suffissant
Ensuite:
foreach ($application in $applications) {
xxx
}
Dans xxx, tu vas devoir voir si $application se trouve dans la liste $Bloatware. Pour cela, je te recommande de voir -contains.
Voilà !
Marsh Posté le 27-08-2020 à 10:28:09
Merci.
Cependant j'ai un soucis pour stocker le résultat de la commande dans une variable.
Je pensais qu'écrire :
Code :
|
Suffirait pour avoir une variable de type tableau avec chaque nom représentant un nom de programme, et visiblement pas.
Par contre, le Contains est effectivement prometteur pour la suite.
Marsh Posté le 27-08-2020 à 12:32:47
Code :
|
$app contient un string.
xxx: Maintenant, tu regardes dans ta liste $Bloatware si elle contient $app.
Marsh Posté le 27-08-2020 à 14:04:33
Hé bien actuellement, cela ne fonctionne pas.
Code :
|
Renvoi du vide.
C'est bien là le soucis. Et je ne comprends pas pourquoi.
J'ai fait un petit test comme ceci :
Code :
|
Histoire de voir à tester...Sans succès
Marsh Posté le 27-08-2020 à 14:09:44
Bizarre.
Même avec Write-Output, cela fonctionne dans mon cas.
Marsh Posté le 27-08-2020 à 14:12:57
J'ai fait un petit test comme ceci :
Code :
|
Histoire de voir à tester...Sans succès
Alors par contre, j'ai une sortie si je modifie Write-output en Write-Host mais la condition ne match jamais :S
Marsh Posté le 29-08-2020 à 11:52:05
Salut,
D'après ce que j'ai compris de l'opérateur "-contains", il faut que les deux expressions comparées soient rigoureusement identiques pour qu'il renvoie "true".
Dans ton cas, il faudrait qu'un des éléments du tableau $Bloatware soit strictement égal à $app pour que la condition soit vérifiée.
Si j'ai bien compris, tu souhaites avoir un retour si l'un des éléments $apps contient en partie un des mots de $Bloatware. Donc, ce n'est pas "-contains" qu'il te faut utiliser mais a priori "-match".
Voir ici (en anglais) la documentation https://docs.microsoft.com/en-us/po [...] wershell-7
Il faut aussi écrire la commande dans "l'autre sens" $app -match <un élément de $Bloatware>
Marsh Posté le 30-08-2020 à 21:55:04
Salut,
Merci pour le lien, mais match ne semblait pas fonctionner.
Par contre, like, lui semble donner le bon résultat...
Voici un test :
Code :
|
Il semblerait que je tienne le bon bout.
Je vais faire plus de tests afin de voir si ça répond à mes besoins.
Je me suis monter une image virtualbox afin de faire des essais.
Marsh Posté le 26-08-2020 à 20:25:22
Bonjour,
J'ai compilé plusieurs éléments batch afin de créer un script permettant de nettoyer mes installations Windows 10 fraîches.
Mais j'ai un soucis d'optimisation.
Le script est visible ici : https://github.com/Bagu/W10CrapRemo [...] %20One.bat
En fait, la partie powershell me pose un problème d'optimisation.
Actuellement, j'ai une variable contenant les appels de programmes Windows 10 à virer.
Puis je boucle dessus afin d'exécuter la suppression :
Quelqu'un aurait-il les connaissances afin de modifier ce comportement.
L'idée serait de lister ce qui est installé effectivement sur le système par une commande de ce type :
puis de n'exécuter que s'il y a une correspondance (en prenant en compte le *) la suppression. (partie que je ne parviens pas à faire)
Merci de vos suggestions et/ou aide.