时不时地,我必须在我的网络上找到一些文件,这些文件由 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/