私たちはこれまでに増え続けるWindows Search DB(マイクロソフトのヘルプでさえも)に何の解決策も見出さなかったので、特定の限界に達するとSCOMによってDBを定期的に再構築することに決めました。これは、Windows Server 2012 R2に関連しています。PowerShellを使用してWindows検索インデックスを再構築する方法?
このため、ISearchCatalogManagerインターフェイスに属するResetまたはReindexメソッドを呼び出すPowerShellスクリプトが必要です。
は、これまでのところ私は、次のを思い付いた:
# Load DLL containing classes & interfaces
Add-Type -path "C:\Temp\SearchIndex\Microsoft.Search.Interop.dll"
# Create new ISearchManager object
$sm = New-Object Microsoft.Search.Interop.ISearchManager
# should return ISearchCatalogManager object
$catalog = $sm.GetCatalog("SystemIndex")
# Call the method
$catalog.Reindex()
これは、しかし、次の例外がスローされます:私はここで間違って
New-Object : A constructor was not found. Cannot find an appropriate constructor for type Microsoft.Search.Interop.ISearchManager.
At C:\Users\myuser\Desktop\test.ps1:8 char:6
+ $sm = New-Object Microsoft.Search.Interop.ISearchManager
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (:) [New-Object], PSArgumentException
+ FullyQualifiedErrorId : CannotFindAppropriateCtor,Microsoft.PowerShell.Commands.NewObjectCommand
何をしているのですか?
インターフェイスをインスタンス化しようとしています。これは、正しいCoClassを透過的にマジックアップするので、C#では "機能"しますが、あなたが求めるものを得るPowerShellではそうではありません。アセンブリに 'SearchManagerClass'が含まれていますか? –
ご清聴ありがとうございます。アセンブリに 'CSearchManagerClass'が含まれていますが、' GetCatalog() 'を呼び出すと' Reindex() 'や' Rebuild() 'メソッドが含まれていません。 – Matze