Je dois commencer par dire que j'aime résoudre les problèmes avec PowerShell, mais que mes compétences en PowerShell font cruellement défaut. Donc, si vous répondez, soyez aussi basique que possible :D
Microsoft Teams s'installe dans AppData
. Plusieurs utilisateurs se connectent à différents PC, laissant derrière eux d'anciennes versions de Teams que nous devons maintenant nettoyer sans affecter l'utilisateur actuellement connecté et les nouvelles versions de Teams.
A cause de cela, j'ai suivi la voie de VersionInfo.FileVerson
pour résoudre ce problème. Les différentes méthodes que j'ai essayées me permettent d'aller jusqu'à un certain point, puis de ne plus aller plus loin. Je peux énumérer les FullName
y FileVersion
mais je ne sais pas comment omettre les versions plus récentes que nous voulons laisser intactes.
J'ai trouvé cette méthode qui me semble vraiment propre par rapport à ce que j'avais écrit, et elle m'amène au même stade que mon script ;
cd G:\test\users\ Get-ChildItem -Filter wire*.exe -Recurse |
ForEach-Object {
try {
$_ | Add-Member NoteProperty FileVersion ($_.VersionInfo.FileVersion)
$_ | Add-Member NoteProperty AssemblyVersion (
[Reflection.AssemblyName]::GetAssemblyName($_.FullName).Version
)
} catch {}
$_
} | Select-Object FullName,FileVersion -outvariable info
D'après elle, mon idée est quelque chose du genre $info.where{$_.FileVersion -lt '3.4.4.0'}
.
En testant ce genre de choses avec, par exemple, des services en cours d'exécution, je peux voir à quel point c'est facile. Je ne suis donc pas sûr de savoir comment faire, si quelqu'un pouvait m'indiquer la bonne direction à suivre, je lui en serais très reconnaissant.