PowerShell 找不到以 .EXE 结尾的文件

PowerShell cannot find files ending in .EXE

我有一个 PowerShell 脚本程序,它可以在我的计算机上找到一个文件,一旦找到就会显示结果。相关文件可以是全名或部分文件。如果文件不存在,则输出一条消息。

问题:似乎可以找到以.msi 结尾的files/application,但如果以.exe 结尾的files/application 将找不到。我该如何解决这个问题?

$ADObjects = Get-ADComputer -filter {(name -like "Your PC Name goes here")};

$ADObjects | ForEach {
    $computerName = $_.name;
    Write-Output $computerName;
    $Versions = (Get-WmiObject -Class Win32_Product -ComputerName $computerName| Where-Object {$_.name -like "FireFox"});   # Finds all versions of the program

    $Count = ($Versions | Measure-object).count;
    if ($Count -eq 0) {
        Write-Output "$computerName does not have this application.";
    }
    else {
    
        Write-Output $Versions;

        #$Versions.unistall();    # Uncommenting this line will uninstall the versions listed by the line above
    }
}

这是一种快速查找计算机 Program Files 文件夹中所有 .exe 文件的方法:

$gci *.exe -path 'C:\Program Files\' -recurse

您可以优化它以仅搜索包含单词“Firefox”的文件。

但是,看来您并不是真的要查找文件,而是要查找 WIN32 产品。它们不是同一件事。如果您不知道自己在寻找什么,将很难告诉您如何寻找。

这是找到以exe结尾的文件添加到你的代码行

Where-Object { $_.Name -Match '.*\.exe$' }

Get-package 更快并且会列出 msi 和程序安装。 Msi 安装可以通过管道传输到 uninstall-package。您必须使用 invoke-command 到 运行 远程并行。

invoke-command comp1,comp1,comp3 { get-package *firefox* }