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

kb_*_*sou 5 windows powershell search file

我不得不在我的网络上找到一些文件,它们由Windows搜索服务编制索引.在资源管理器搜索栏上输入模式大约10秒左右,但是当我使用以下命令时,搜索通常需要几分钟(2到3分钟)

gci -Recurse -Filter "VaR*.xlsb"
Run Code Online (Sandbox Code Playgroud)

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

kb_*_*sou 11

我找到了我的答案,将一个vbs脚本改编 为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()
    }
}
Run Code Online (Sandbox Code Playgroud)

这种方式很快.我根据David指出的答案进行了测试,它的速度提高了3倍,但这个答案仅适用于索引文件

  • 建议修改以改善路径解析:[http://pastebin.com/raw.php?i=qLb8DYT9](http://pastebin.com/raw.php?i=qLb8DYT9) (2认同)