我正在尝试以编程方式向我的Windows 8搜索索引添加位置(范围)。经过一些谷歌搜索后,我发现了 [here]的代码:
Set objISAdm = CreateObject("Microsoft.ISAdm")
Set objCatalog = objISAdm. GetCatalogByName("MyCatatlog")
Set objScope= objCatalog.AddScope("C:\myfiles",False)
objScope.Alias = "MyCatalogScope"
不幸的是,800A01AD错误提示无法创建对象'Microsoft.ISAdm'。通过进一步挖掘,上述代码似乎无法在Windows 8上使用较新版本的Windows Search。
有没有人知道如何使用vb脚本或命令行?据推测,在Windows 7下工作的东西也适用于Windows 8。
答案 0 :(得分:5)
#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,并从提升的cmd控制台运行它:
PowerShell Set-ExecutionPolicy Unrestricted -force
PowerShell D:\Unattend\UserFiles\AddScope.ps1
就是这样!
答案 1 :(得分:2)
在您提供的代码中,您尝试使用Indexing service interface。 Windows 8中不再提供索引服务。来自文档:
从Windows XP开始,不再支持索引服务 从Windows 8开始无法使用。相反,请使用Windows Search 客户端搜索和Microsoft Search Server Express服务器端 搜索范围。
正如文档所述,您需要查看Windows Search。
更新:
我没有这样做,而是要完成你所寻求的documentation州
在使用任何Crawl Scope Manager(CSM)界面之前, 您必须执行以下先决条件步骤:
- 创建CrawlSearchManager对象并获取其ISearchManager接口。
- 为“SystemIndex”调用ISearchManager :: GetCatalog以获取ISearchCatalogManager接口的实例。
- 调用ISearchCatalogManager :: GetCrawlScopeManager以获取ISearchCrawlScopeManager接口的实例。
醇>对Crawl Scope Manager(CSM)进行任何更改后,您必须 调用ISearchCrawlScopeManager :: SaveAll。这种方法不需要 参数并在成功时返回S_OK。
不幸的是,我不认为这可以通过VBScript完成,因为Windows Search API提供的COM interfaces没有实现IDispatch接口,这允许像VBScript这样的脚本语言通过late binding调用COM对象。
它必须来自VBScript,还是可以在.NET中执行?如果它必须来自VBScript,那么一种方法是在.NET中编写包装器,并将expose编写为COM对象。