現在,我必須在我的網絡上找到一些文件,這些文件由Windows Search服務編制索引。資源管理器搜索欄上輸入花樣得到的結果在大約10秒左右,但是當我使用下面的命令,搜索通常需要一些分鐘(2〜3分鐘)如何使用Powershell搜索Windows搜索索引文件
gci -Recurse -Filter "VaR*.xlsb"
有沒有辦法拿索引文件數據庫的優勢加快我的搜索速度?
現在,我必須在我的網絡上找到一些文件,這些文件由Windows Search服務編制索引。資源管理器搜索欄上輸入花樣得到的結果在大約10秒左右,但是當我使用下面的命令,搜索通常需要一些分鐘(2〜3分鐘)如何使用Powershell搜索Windows搜索索引文件
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()
}
}
這種方式快速熾烈。我測試對抗大衛指出的答案,這是快三倍,但是這個答案只與索引的文件工作
建議的修訂更快,以改善路徑分辨率:[http://pastebin.com /raw.php?i=qLb8DYT9](http://pastebin.com/raw.php?i=qLb8DYT9) – mstrange
退房就如何加快GCI這裏這些詳細解答: http://stackoverflow.com/questions/ 7196937/how-to-speed-up-powershell-get-childitem-over-unc –
感謝@DavidRuhmann,答案中的代碼確實比gci –