如何使用 VersionInfo 属性过滤 .exe 文件?

问题描述

我应该首先说,我喜欢用 PowerShell 解决问题,但我的 PowerShell 技能严重缺乏。因此,如果您确实回复了,请尽可能简单:D

Microsoft Teams 安装在 AppData。多个用户登录不同的 PC,留下旧版本的 Teams,我们现在需要清理这些旧版本,而不会影响当前登录用户和较新版本的 Teams。

因此,我一直沿着VersionInfo.FiLeverson的路线来解决这个问题。我尝试过的各种方法,我可以做到这么远,然后就再也没有了。我可以列出 FullNameFiLeversion,但我不知道如何省略我们想单独留下的较新版本。

我发现这个方法与我写的相比看起来非常干净,它让我进入了与我的脚本相同的阶段;

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

从她看来,我的想法与 $info.where{$_.FiLeversion -lt '3.4.4.0'} 类似。

在测试这类事情时,例如,运行服务,我可以看到它是多么容易。所以我不确定我是如何做到这一点的,如果有人能为我指出正确的方向,我将不胜感激。

解决方法

您可以为当前未登录的所有用户删除 C:\users\<USERNAME>\Microsoft\teams 文件夹。