Как добавить местоположение в поисковый индекс Windows 7/8, используя пакет или vbscript?

Я пытаюсь добавить местоположение (область) в мой индекс поиска Windows 8 программным путем. После некоторого поиска в Google я нашел этот код из [здесь]:

Set objISAdm = CreateObject("Microsoft.ISAdm")
Set objCatalog = objISAdm. GetCatalogByName("MyCatatlog")
Set objScope= objCatalog.AddScope("C:\myfiles",False)
objScope.Alias = "MyCatalogScope"

К сожалению, ошибка 800A01AD подсказывает, что объект "Microsoft.ISAdm" не может быть создан. При дальнейшем копании кажется, что приведенный выше код не работает с более новой версией Windows Search в Windows 8.

Кто-нибудь знает, как это сделать с помощью скриптов VB или из командной строки? Предположительно что-то работает под Windows 7 будет работать на Windows 8, а также.

2 ответа

Гаретт, ты гений! Вот код, который я узнал по предоставленным вами ссылкам:

#Code copied from "Powershell Tackles Windows Desktop Search" http://powertoe.wordpress.com/2010/05/17/powershell-tackles-windows-desktop-search/
#Microsoft.Search.Interop.dll is needed, download from http://www.microsoft.com/en-us/download/details.aspx?id=7388
#Load the dll
Add-Type -path "D:\Unattend\UserFiles\Tools\Microsoft.Search.Interop.dll"
#Create an instance of CSearchManagerClass
$sm = New-Object Microsoft.Search.Interop.CSearchManagerClass 
#Next we connect to the SystemIndex catalog
$catalog = $sm.GetCatalog("SystemIndex")
#Get the interface to the scope rule manager
$crawlman = $catalog.GetCrawlScopeManager()
#add scope
$crawlman.AddUserScopeRule("file:///D:\*",$true,$false,$null)
$crawlman.SaveAll()

Сохраните код как AddScope.ps1 и запустите его из консоли с повышенными правами:

PowerShell Set-ExecutionPolicy Unrestricted -force
PowerShell D:\Unattend\UserFiles\AddScope.ps1

Это оно!

В предоставленном вами коде вы пытаетесь использовать интерфейс службы индексирования. Служба индексирования больше не доступна в Windows 8. Из документации:

Служба индексирования больше не поддерживается в Windows XP и недоступна для использования в Windows 8. Вместо этого используйте поиск Windows для поиска на стороне клиента и Microsoft Search Server Express для поиска на стороне сервера.

Как указано в документации, вы захотите заглянуть в Windows Search.

ОБНОВИТЬ:

Я не сделал этого, но для достижения того, что вы ищете, говорится в документации

Прежде чем вы сможете использовать любой из интерфейсов Crawl Scope Manager (CSM), вы должны выполнить следующие обязательные шаги:

  1. Создайте объект CrawlSearchManager и получите его интерфейс ISearchManager.
  2. Вызовите ISearchManager::GetCatalog для "SystemIndex", чтобы получить экземпляр интерфейса ISearchCatalogManager.
  3. Вызовите ISearchCatalogManager::GetCrawlScopeManager, чтобы получить экземпляр интерфейса ISearchCrawlScopeManager.

После внесения любых изменений в Crawl Scope Manager (CSM) вы должны вызвать ISearchCrawlScopeManager::SaveAll. Этот метод не принимает параметров и возвращает S_OK в случае успеха.

Вот один пример и другой для этого.

К сожалению, я не думаю, что это можно сделать из VBScript, потому что интерфейсы COM, предоставляемые API поиска Windows, не реализуют интерфейс IDispatch, который позволяет языкам сценариев, таким как VBScript, вызывать объекты COM с помощью позднего связывания.

Это должно быть из VBScript, или вы можете сделать это в.NET? Если это должно быть из VBScript, то одним из подходов было бы написать обертку в.NET и представить ее как объект COM.

Другие вопросы по тегам