【问题标题】:How to search Windows Search Indexed files with Powershell如何使用 Powershell 搜索 Windows 搜索索引文件
【发布时间】:2012-12-04 19:04:46
【问题描述】:

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

gci -Recurse -Filter "VaR*.xlsb"

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

【问题讨论】:

标签: windows file search powershell


【解决方案1】:

我找到了将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()
    }
}

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

【讨论】:

猜你喜欢
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 2020-07-28
  • 2016-03-16
  • 2017-04-13
  • 2014-11-29
  • 2010-11-08
  • 2010-10-06
相关资源
最近更新 更多