6

プログラムで Windows 8 検索インデックスに場所 (スコープ) を追加しようとしていますが、グーグルで調べたところ、次のコードが見つかりました。

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でも動作しますか?

4

2 に答える 2

7

ガレット、あなたは天才です!これは、提供されたリンクから学んだコードです。

#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

それでおしまい!

于 2012-11-19T13:14:59.670 に答える
2

提供したコードで、インデックスサービスインターフェイスを使用しようとしています。インデックスサービスは、Windows 8では使用できなくなりました。ドキュメントから:

インデックスサービスは、Windows XPでサポートされなくなり、Windows 8で使用できなくなります。代わりに、クライアント側の検索にはWindows Searchを使用し、サーバー側の検索にはMicrosoft SearchServerExpressを使用してください。

ドキュメントに記載されているように、WindowsSearchを調べる必要があります

アップデート:

私はこれをしていませんが、あなたが求めていることを達成するために、ドキュメントの状態を示しています

Crawl Scope Manager(CSM)インターフェイスを使用する前に、次の前提条件の手順を実行する必要があります。

  1. CrawlSearchManagerオブジェクトを作成し、そのISearchManagerインターフェイスを取得します。
  2. 「SystemIndex」に対してISearchManager::GetCatalogを呼び出して、ISearchCatalogManagerインターフェイスのインスタンスを取得します。
  3. ISearchCatalogManager :: GetCrawlScopeManagerを呼び出して、ISearchCrawlScopeManagerインターフェイスのインスタンスを取得します。

Crawl Scope Manager(CSM)に変更を加えた後、ISearchCrawlScopeManager::SaveAllを呼び出す必要があります。このメソッドはパラメーターを受け取らず、成功するとS_OKを返します。

これを行うための1つのの例を次に示します。

残念ながら、これをVBScriptから実行できるとは思いません。これは、Windows Search APIによって提供されるCOMインターフェイスがIDispatchインターフェイスを実装していないため、VBScriptなどのスクリプト言語が遅延バインディングを介してCOMオブジェクトを呼び出すことができるためです。

VBScriptからのものである必要がありますか、それとも.NETで実行できますか?VBScriptからのものである必要がある場合、1つのアプローチは、.NETでラッパーを記述し、それをCOMオブジェクトとして公開することです。

于 2012-11-15T03:05:07.923 に答える