2012-12-17 147 views
3

現在,我必須在我的網絡上找到一些文件,這些文件由Windows Search服務編制索引。資源管理器搜索欄上輸入花樣得到的結果在大約10秒左右,但是當我使用下面的命令,搜索通常需要一些分鐘(2〜3分鐘)如何使用Powershell搜索Windows搜索索引文件

gci -Recurse -Filter "VaR*.xlsb" 

有沒有辦法拿索引文件數據庫的優勢加快我的搜索速度?

+0

退房就如何加快GCI這裏這些詳細解答: http://stackoverflow.com/questions/ 7196937/how-to-speed-up-powershell-get-childitem-over-unc –

+0

感謝@DavidRuhmann,答案中的代碼確實比gci –

回答

9

我發現我的回答適應一個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() 
    } 
} 

這種方式快速熾烈。我測試對抗大衛指出的答案,這是快三倍,但是這個答案只與索引的文件工作

+2

建議的修訂更快,以改善路徑分辨率:[http://pastebin.com /raw.php?i=qLb8DYT9](http://pastebin.com/raw.php?i=qLb8DYT9) – mstrange