windows - 如何使用 Powershell 搜索 Windows 搜索索引文件

标签 windows file search powershell

时不时地,我必须在我的网络上找到一些文件,这些文件由 Windows 搜索服务索引。在 Explorer 搜索栏中输入模式大约 10 秒左右即可获得结果,但是当我使用以下命令时,搜索通常需要几分钟(2 到 3 分钟)

gci -Recurse -Filter "VaR*.xlsb"

有没有办法利用索引文件数据库来加快我的搜索速度?

最佳答案

我找到了改编 vbs script 的答案到 Powershell,有代码:

Function Search {
param (  
    [Parameter(ValueFromPipeline = $true)][string]$Path,
    [Parameter(Mandatory=$true)][string]$Pattern)  

    if($Path -eq ""){$Path = $PWD;} 

    $pattern = $pattern -replace "\*", "%"  
    $path = $path + "\%"

    $con = New-Object -ComObject ADODB.Connection
    $rs = New-Object -ComObject ADODB.Recordset

    $con.Open("Provider=Search.CollatorDSO;Extended Properties='Application=Windows';")
    $rs.Open("SELECT System.ItemPathDisplay FROM SYSTEMINDEX WHERE System.FileName LIKE '" + $pattern + "' AND System.ItemPathDisplay LIKE '" + $path + "'" , $con)

    While(-Not $rs.EOF){
        $rs.Fields.Item("System.ItemPathDisplay").Value
        $rs.MoveNext()
    }
}

这种方式非常快。我针对 David 指出的答案进行了测试,速度提高了 3 倍,但此答案仅适用于索引文件

关于windows - 如何使用 Powershell 搜索 Windows 搜索索引文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13918329/

相关文章:

python - 在不同的文件上使用子进程python

windows - 无法将消息从生产者发送到消费者

c# - Windows 路径中的多个反斜杠会产生什么后果(如果有的话)?

java - java mqtt 代理列表及其在 Windows 中的可扩展性

linux - 如何防止mmap()-使文件对我的程序可见后对基础文件的更改?

algorithm - 波束搜索算法中的波束大小代表什么?

c++ - 从 Windows 系统菜单中删除“移动”和“关闭”命令,而不会丢失功能

python - 如何使用python在文件的第一行之前插入一个新行?

algorithm - 未知大小数组的二进制搜索

javascript - 是否有一种搜索算法可以一直搜索有序列表,直到所有值都相等?